From 8634ea3dc1827b35dfe424a86ee3cacdaed24f4e Mon Sep 17 00:00:00 2001 From: Chris Date: Thu, 1 Aug 2024 00:09:22 +0800 Subject: [PATCH 01/18] refactor: use tsup --- .gitignore | 6 +- dist/chroma-light.cjs | 1073 ------------ dist/chroma-light.min.cjs | 58 - dist/chroma.cjs | 3387 ------------------------------------- dist/chroma.min.cjs | 58 - index-light.js | 8 +- package.json | 23 +- pnpm-lock.yaml | 933 +++++++++- tsup.config.mjs | 11 + 9 files changed, 901 insertions(+), 4656 deletions(-) delete mode 100644 dist/chroma-light.cjs delete mode 100644 dist/chroma-light.min.cjs delete mode 100644 dist/chroma.cjs delete mode 100644 dist/chroma.min.cjs create mode 100644 tsup.config.mjs diff --git a/.gitignore b/.gitignore index e48be50c..4feafa7b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,6 @@ - readme (Autosaved).md - m.txt - .DS_Store license.coffee node_modules - -yarn.lock +dist diff --git a/dist/chroma-light.cjs b/dist/chroma-light.cjs deleted file mode 100644 index e5bd4678..00000000 --- a/dist/chroma-light.cjs +++ /dev/null @@ -1,1073 +0,0 @@ -/** - * chroma.js - JavaScript library for color conversions - * - * Copyright (c) 2011-2024, Gregor Aisch - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name Gregor Aisch may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ------------------------------------------------------- - * - * chroma.js includes colors from colorbrewer2.org, which are released under - * the following license: - * - * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, - * and The Pennsylvania State University. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific - * language governing permissions and limitations under the License. - * - * ------------------------------------------------------ - * - * Named colors are taken from X11 Color Names. - * http://www.w3.org/TR/css3-color/#svg-color - * - * @preserve - */ - -(function (factory) { - typeof define === 'function' && define.amd ? define(factory) : - factory(); -})((function () { 'use strict'; - - function limit (x, low, high) { - if ( high === void 0 ) high = 1; - - return min(max(low, x), high); - } - - function clip_rgb (rgb) { - rgb._clipped = false; - rgb._unclipped = rgb.slice(0); - for (var i = 0; i <= 3; i++) { - if (i < 3) { - if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; } - rgb[i] = limit(rgb[i], 0, 255); - } else if (i === 3) { - rgb[i] = limit(rgb[i], 0, 1); - } - } - return rgb; - } - - // ported from jQuery's $.type - var classToType = {}; - for (var i = 0, list = [ - 'Boolean', - 'Number', - 'String', - 'Function', - 'Array', - 'Date', - 'RegExp', - 'Undefined', - 'Null' - ]; i < list.length; i += 1) { - var name = list[i]; - - classToType[("[object " + name + "]")] = name.toLowerCase(); - } - function type (obj) { - return classToType[Object.prototype.toString.call(obj)] || 'object'; - } - - function unpack (args, keyOrder) { - if ( keyOrder === void 0 ) keyOrder = null; - - // if called with more than 3 arguments, we return the arguments - if (args.length >= 3) { return Array.prototype.slice.call(args); } - // with less than 3 args we check if first arg is object - // and use the keyOrder string to extract and sort properties - if (type(args[0]) == 'object' && keyOrder) { - return keyOrder - .split('') - .filter(function (k) { return args[0][k] !== undefined; }) - .map(function (k) { return args[0][k]; }); - } - // otherwise we just return the first argument - // (which we suppose is an array of args) - return args[0]; - } - - function last (args) { - if (args.length < 2) { return null; } - var l = args.length - 1; - if (type(args[l]) == 'string') { return args[l].toLowerCase(); } - return null; - } - - var min = Math.min; - var max = Math.max; - - var input = { - format: {}, - autodetect: [] - }; - - var Color = function Color() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var me = this; - if ( - type(args[0]) === 'object' && - args[0].constructor && - args[0].constructor === this.constructor - ) { - // the argument is already a Color instance - return args[0]; - } - // last argument could be the mode - var mode = last(args); - var autodetect = false; - if (!mode) { - autodetect = true; - if (!input.sorted) { - input.autodetect = input.autodetect.sort(function (a, b) { return b.p - a.p; }); - input.sorted = true; - } - // auto-detect format - for (var i = 0, list = input.autodetect; i < list.length; i += 1) { - var chk = list[i]; - - mode = chk.test.apply(chk, args); - if (mode) { break; } - } - } - if (input.format[mode]) { - var rgb = input.format[mode].apply( - null, - autodetect ? args : args.slice(0, -1) - ); - me._rgb = clip_rgb(rgb); - } else { - throw new Error('unknown format: ' + args); - } - // add alpha channel - if (me._rgb.length === 3) { me._rgb.push(1); } - }; - Color.prototype.toString = function toString () { - if (type(this.hex) == 'function') { return this.hex(); } - return ("[" + (this._rgb.join(',')) + "]"); - }; - - // this gets updated automatically - var version = '2.6.0'; - - var chroma = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) )); - }; - - chroma.Color = Color; - chroma.version = version; - - var rnd = function (a) { return Math.round(a * 100) / 100; }; - - /* - * supported arguments: - * - hsl2css(h,s,l) - * - hsl2css(h,s,l,a) - * - hsl2css([h,s,l], mode) - * - hsl2css([h,s,l,a], mode) - * - hsl2css({h,s,l,a}, mode) - */ - var hsl2css = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var hsla = unpack(args, 'hsla'); - var mode = last(args) || 'lsa'; - hsla[0] = rnd(hsla[0] || 0); - hsla[1] = rnd(hsla[1] * 100) + '%'; - hsla[2] = rnd(hsla[2] * 100) + '%'; - if (mode === 'hsla' || (hsla.length > 3 && hsla[3] < 1)) { - hsla[3] = hsla.length > 3 ? hsla[3] : 1; - mode = 'hsla'; - } else { - hsla.length = 3; - } - return (mode + "(" + (hsla.join(',')) + ")"); - }; - - /* - * supported arguments: - * - rgb2hsl(r,g,b) - * - rgb2hsl(r,g,b,a) - * - rgb2hsl([r,g,b]) - * - rgb2hsl([r,g,b,a]) - * - rgb2hsl({r,g,b,a}) - */ - var rgb2hsl = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'rgba'); - var r = args[0]; - var g = args[1]; - var b = args[2]; - - r /= 255; - g /= 255; - b /= 255; - - var minRgb = min(r, g, b); - var maxRgb = max(r, g, b); - - var l = (maxRgb + minRgb) / 2; - var s, h; - - if (maxRgb === minRgb) { - s = 0; - h = Number.NaN; - } else { - s = - l < 0.5 - ? (maxRgb - minRgb) / (maxRgb + minRgb) - : (maxRgb - minRgb) / (2 - maxRgb - minRgb); - } - - if (r == maxRgb) { h = (g - b) / (maxRgb - minRgb); } - else if (g == maxRgb) { h = 2 + (b - r) / (maxRgb - minRgb); } - else if (b == maxRgb) { h = 4 + (r - g) / (maxRgb - minRgb); } - - h *= 60; - if (h < 0) { h += 360; } - if (args.length > 3 && args[3] !== undefined) { return [h, s, l, args[3]]; } - return [h, s, l]; - }; - - var round$4 = Math.round; - - /* - * supported arguments: - * - rgb2css(r,g,b) - * - rgb2css(r,g,b,a) - * - rgb2css([r,g,b], mode) - * - rgb2css([r,g,b,a], mode) - * - rgb2css({r,g,b,a}, mode) - */ - var rgb2css = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var rgba = unpack(args, 'rgba'); - var mode = last(args) || 'rgb'; - if (mode.substr(0, 3) == 'hsl') { - return hsl2css(rgb2hsl(rgba), mode); - } - rgba[0] = round$4(rgba[0]); - rgba[1] = round$4(rgba[1]); - rgba[2] = round$4(rgba[2]); - if (mode === 'rgba' || (rgba.length > 3 && rgba[3] < 1)) { - rgba[3] = rgba.length > 3 ? rgba[3] : 1; - mode = 'rgba'; - } - return (mode + "(" + (rgba.slice(0, mode === 'rgb' ? 3 : 4).join(',')) + ")"); - }; - - var round$3 = Math.round; - - var hsl2rgb = function () { - var assign; - - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - args = unpack(args, 'hsl'); - var h = args[0]; - var s = args[1]; - var l = args[2]; - var r, g, b; - if (s === 0) { - r = g = b = l * 255; - } else { - var t3 = [0, 0, 0]; - var c = [0, 0, 0]; - var t2 = l < 0.5 ? l * (1 + s) : l + s - l * s; - var t1 = 2 * l - t2; - var h_ = h / 360; - t3[0] = h_ + 1 / 3; - t3[1] = h_; - t3[2] = h_ - 1 / 3; - for (var i = 0; i < 3; i++) { - if (t3[i] < 0) { t3[i] += 1; } - if (t3[i] > 1) { t3[i] -= 1; } - if (6 * t3[i] < 1) { c[i] = t1 + (t2 - t1) * 6 * t3[i]; } - else if (2 * t3[i] < 1) { c[i] = t2; } - else if (3 * t3[i] < 2) { c[i] = t1 + (t2 - t1) * (2 / 3 - t3[i]) * 6; } - else { c[i] = t1; } - } - (assign = [round$3(c[0] * 255), round$3(c[1] * 255), round$3(c[2] * 255)], r = assign[0], g = assign[1], b = assign[2]); - } - if (args.length > 3) { - // keep alpha channel - return [r, g, b, args[3]]; - } - return [r, g, b, 1]; - }; - - var RE_RGB = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/; - var RE_RGBA = - /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/; - var RE_RGB_PCT = - /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; - var RE_RGBA_PCT = - /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; - var RE_HSL = - /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; - var RE_HSLA = - /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; - - var round$2 = Math.round; - - var css2rgb = function (css) { - css = css.toLowerCase().trim(); - var m; - - if (input.format.named) { - try { - return input.format.named(css); - // eslint-disable-next-line - } catch (e) {} - } - - // rgb(250,20,0) - if ((m = css.match(RE_RGB))) { - var rgb = m.slice(1, 4); - for (var i = 0; i < 3; i++) { - rgb[i] = +rgb[i]; - } - rgb[3] = 1; // default alpha - return rgb; - } - - // rgba(250,20,0,0.4) - if ((m = css.match(RE_RGBA))) { - var rgb$1 = m.slice(1, 5); - for (var i$1 = 0; i$1 < 4; i$1++) { - rgb$1[i$1] = +rgb$1[i$1]; - } - return rgb$1; - } - - // rgb(100%,0%,0%) - if ((m = css.match(RE_RGB_PCT))) { - var rgb$2 = m.slice(1, 4); - for (var i$2 = 0; i$2 < 3; i$2++) { - rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55); - } - rgb$2[3] = 1; // default alpha - return rgb$2; - } - - // rgba(100%,0%,0%,0.4) - if ((m = css.match(RE_RGBA_PCT))) { - var rgb$3 = m.slice(1, 5); - for (var i$3 = 0; i$3 < 3; i$3++) { - rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55); - } - rgb$3[3] = +rgb$3[3]; - return rgb$3; - } - - // hsl(0,100%,50%) - if ((m = css.match(RE_HSL))) { - var hsl = m.slice(1, 4); - hsl[1] *= 0.01; - hsl[2] *= 0.01; - var rgb$4 = hsl2rgb(hsl); - rgb$4[3] = 1; - return rgb$4; - } - - // hsla(0,100%,50%,0.5) - if ((m = css.match(RE_HSLA))) { - var hsl$1 = m.slice(1, 4); - hsl$1[1] *= 0.01; - hsl$1[2] *= 0.01; - var rgb$5 = hsl2rgb(hsl$1); - rgb$5[3] = +m[4]; // default alpha = 1 - return rgb$5; - } - }; - - css2rgb.test = function (s) { - return ( - RE_RGB.test(s) || - RE_RGBA.test(s) || - RE_RGB_PCT.test(s) || - RE_RGBA_PCT.test(s) || - RE_HSL.test(s) || - RE_HSLA.test(s) - ); - }; - - Color.prototype.css = function (mode) { - return rgb2css(this._rgb, mode); - }; - - chroma.css = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['css']) )); - }; - - input.format.css = css2rgb; - - input.autodetect.push({ - p: 5, - test: function (h) { - var rest = [], len = arguments.length - 1; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; - - if (!rest.length && type(h) === 'string' && css2rgb.test(h)) { - return 'css'; - } - } - }); - - var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; - var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/; - - var hex2rgb = function (hex) { - if (hex.match(RE_HEX)) { - // remove optional leading # - if (hex.length === 4 || hex.length === 7) { - hex = hex.substr(1); - } - // expand short-notation to full six-digit - if (hex.length === 3) { - hex = hex.split(''); - hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; - } - var u = parseInt(hex, 16); - var r = u >> 16; - var g = (u >> 8) & 0xff; - var b = u & 0xff; - return [r, g, b, 1]; - } - - // match rgba hex format, eg #FF000077 - if (hex.match(RE_HEXA)) { - if (hex.length === 5 || hex.length === 9) { - // remove optional leading # - hex = hex.substr(1); - } - // expand short-notation to full eight-digit - if (hex.length === 4) { - hex = hex.split(''); - hex = - hex[0] + - hex[0] + - hex[1] + - hex[1] + - hex[2] + - hex[2] + - hex[3] + - hex[3]; - } - var u$1 = parseInt(hex, 16); - var r$1 = (u$1 >> 24) & 0xff; - var g$1 = (u$1 >> 16) & 0xff; - var b$1 = (u$1 >> 8) & 0xff; - var a = Math.round(((u$1 & 0xff) / 0xff) * 100) / 100; - return [r$1, g$1, b$1, a]; - } - - // we used to check for css colors here - // if _input.css? and rgb = _input.css hex - // return rgb - - throw new Error(("unknown hex color: " + hex)); - }; - - var round$1 = Math.round; - - var rgb2hex = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack(args, 'rgba'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - var a = ref[3]; - var mode = last(args) || 'auto'; - if (a === undefined) { a = 1; } - if (mode === 'auto') { - mode = a < 1 ? 'rgba' : 'rgb'; - } - r = round$1(r); - g = round$1(g); - b = round$1(b); - var u = (r << 16) | (g << 8) | b; - var str = '000000' + u.toString(16); //#.toUpperCase(); - str = str.substr(str.length - 6); - var hxa = '0' + round$1(a * 255).toString(16); - hxa = hxa.substr(hxa.length - 2); - switch (mode.toLowerCase()) { - case 'rgba': - return ("#" + str + hxa); - case 'argb': - return ("#" + hxa + str); - default: - return ("#" + str); - } - }; - - Color.prototype.hex = function (mode) { - return rgb2hex(this._rgb, mode); - }; - - chroma.hex = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hex']) )); - }; - - input.format.hex = hex2rgb; - input.autodetect.push({ - p: 4, - test: function (h) { - var rest = [], len = arguments.length - 1; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; - - if ( - !rest.length && - type(h) === 'string' && - [3, 4, 5, 6, 7, 8, 9].indexOf(h.length) >= 0 - ) { - return 'hex'; - } - } - }); - - Color.prototype.hsl = function () { - return rgb2hsl(this._rgb); - }; - - chroma.hsl = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hsl']) )); - }; - - input.format.hsl = hsl2rgb; - - input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'hsl'); - if (type(args) === 'array' && args.length === 3) { - return 'hsl'; - } - } - }); - - var LAB_CONSTANTS = { - // Corresponds roughly to RGB brighter/darker - Kn: 18, - - // D65 standard referent - Xn: 0.95047, - Yn: 1, - Zn: 1.08883, - - t0: 0.137931034, // 4 / 29 - t1: 0.206896552, // 6 / 29 - t2: 0.12841855, // 3 * t1 * t1 - t3: 0.008856452 // t1 * t1 * t1 - }; - - var pow$4 = Math.pow; - - /* - * L* [0..100] - * a [-100..100] - * b [-100..100] - */ - var lab2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'lab'); - var l = args[0]; - var a = args[1]; - var b = args[2]; - var x, y, z, r, g, b_; - - y = (l + 16) / 116; - x = isNaN(a) ? y : y + a / 500; - z = isNaN(b) ? y : y - b / 200; - - y = LAB_CONSTANTS.Yn * lab_xyz(y); - x = LAB_CONSTANTS.Xn * lab_xyz(x); - z = LAB_CONSTANTS.Zn * lab_xyz(z); - - r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB - g = xyz_rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z); - b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z); - - return [r, g, b_, args.length > 3 ? args[3] : 1]; - }; - - var xyz_rgb = function (r) { - return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$4(r, 1 / 2.4) - 0.055); - }; - - var lab_xyz = function (t) { - return t > LAB_CONSTANTS.t1 - ? t * t * t - : LAB_CONSTANTS.t2 * (t - LAB_CONSTANTS.t0); - }; - - var pow$3 = Math.pow; - - var rgb2lab = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - var ref$1 = rgb2xyz(r, g, b); - var x = ref$1[0]; - var y = ref$1[1]; - var z = ref$1[2]; - var l = 116 * y - 16; - return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)]; - }; - - var rgb_xyz = function (r) { - if ((r /= 255) <= 0.04045) { return r / 12.92; } - return pow$3((r + 0.055) / 1.055, 2.4); - }; - - var xyz_lab = function (t) { - if (t > LAB_CONSTANTS.t3) { return pow$3(t, 1 / 3); } - return t / LAB_CONSTANTS.t2 + LAB_CONSTANTS.t0; - }; - - var rgb2xyz = function (r, g, b) { - r = rgb_xyz(r); - g = rgb_xyz(g); - b = rgb_xyz(b); - var x = xyz_lab( - (0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS.Xn - ); - var y = xyz_lab( - (0.2126729 * r + 0.7151522 * g + 0.072175 * b) / LAB_CONSTANTS.Yn - ); - var z = xyz_lab( - (0.0193339 * r + 0.119192 * g + 0.9503041 * b) / LAB_CONSTANTS.Zn - ); - return [x, y, z]; - }; - - Color.prototype.lab = function () { - return rgb2lab(this._rgb); - }; - - chroma.lab = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['lab']) )); - }; - - input.format.lab = lab2rgb; - - input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'lab'); - if (type(args) === 'array' && args.length === 3) { - return 'lab'; - } - } - }); - - var pow$2 = Math.pow; - var sign$1 = Math.sign; - - /* - * L* [0..100] - * a [-100..100] - * b [-100..100] - */ - var oklab2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'lab'); - var L = args[0]; - var a = args[1]; - var b = args[2]; - - var l = pow$2(L + 0.3963377774 * a + 0.2158037573 * b, 3); - var m = pow$2(L - 0.1055613458 * a - 0.0638541728 * b, 3); - var s = pow$2(L - 0.0894841775 * a - 1.291485548 * b, 3); - - return [ - 255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s), - 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s), - 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s), - args.length > 3 ? args[3] : 1 - ]; - }; - - function lrgb2rgb(c) { - var abs = Math.abs(c); - if (abs > 0.0031308) { - return (sign$1(c) || 1) * (1.055 * pow$2(abs, 1 / 2.4) - 0.055); - } - return c * 12.92; - } - - var cbrt = Math.cbrt; - var pow$1 = Math.pow; - var sign = Math.sign; - - var rgb2oklab = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - // OKLab color space implementation taken from - // https://bottosson.github.io/posts/oklab/ - var ref = unpack(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - var ref$1 = [ - rgb2lrgb(r / 255), - rgb2lrgb(g / 255), - rgb2lrgb(b / 255) - ]; - var lr = ref$1[0]; - var lg = ref$1[1]; - var lb = ref$1[2]; - var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb); - var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb); - var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb); - - return [ - 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s, - 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s, - 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s - ]; - }; - - function rgb2lrgb(c) { - var abs = Math.abs(c); - if (abs < 0.04045) { - return c / 12.92; - } - return (sign(c) || 1) * pow$1((abs + 0.055) / 1.055, 2.4); - } - - Color.prototype.oklab = function () { - return rgb2oklab(this._rgb); - }; - - chroma.oklab = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['oklab']) )); - }; - - input.format.oklab = oklab2rgb; - - input.autodetect.push({ - p: 3, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'oklab'); - if (type(args) === 'array' && args.length === 3) { - return 'oklab'; - } - } - }); - - var round = Math.round; - - Color.prototype.rgb = function (rnd) { - if ( rnd === void 0 ) rnd = true; - - if (rnd === false) { return this._rgb.slice(0, 3); } - return this._rgb.slice(0, 3).map(round); - }; - - Color.prototype.rgba = function (rnd) { - if ( rnd === void 0 ) rnd = true; - - return this._rgb.slice(0, 4).map(function (v, i) { - return i < 3 ? (rnd === false ? v : round(v)) : v; - }); - }; - - chroma.rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['rgb']) )); - }; - - input.format.rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var rgba = unpack(args, 'rgba'); - if (rgba[3] === undefined) { rgba[3] = 1; } - return rgba; - }; - - input.autodetect.push({ - p: 3, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'rgba'); - if ( - type(args) === 'array' && - (args.length === 3 || - (args.length === 4 && - type(args[3]) == 'number' && - args[3] >= 0 && - args[3] <= 1)) - ) { - return 'rgb'; - } - } - }); - - Color.prototype.alpha = function (a, mutate) { - if ( mutate === void 0 ) mutate = false; - - if (a !== undefined && type(a) === 'number') { - if (mutate) { - this._rgb[3] = a; - return this; - } - return new Color([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb'); - } - return this._rgb[3]; - }; - - Color.prototype.darken = function (amount) { - if ( amount === void 0 ) amount = 1; - - var me = this; - var lab = me.lab(); - lab[0] -= LAB_CONSTANTS.Kn * amount; - return new Color(lab, 'lab').alpha(me.alpha(), true); - }; - - Color.prototype.brighten = function (amount) { - if ( amount === void 0 ) amount = 1; - - return this.darken(-amount); - }; - - Color.prototype.darker = Color.prototype.darken; - Color.prototype.brighter = Color.prototype.brighten; - - Color.prototype.get = function (mc) { - var ref = mc.split('.'); - var mode = ref[0]; - var channel = ref[1]; - var src = this[mode](); - if (channel) { - var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); - if (i > -1) { return src[i]; } - throw new Error(("unknown channel " + channel + " in mode " + mode)); - } else { - return src; - } - }; - - var index = {}; - - function mix (col1, col2, f) { - if ( f === void 0 ) f = 0.5; - var rest = [], len = arguments.length - 3; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ]; - - var mode = rest[0] || 'lrgb'; - if (!index[mode] && !rest.length) { - // fall back to the first supported mode - mode = Object.keys(index)[0]; - } - if (!index[mode]) { - throw new Error(("interpolation mode " + mode + " is not defined")); - } - if (type(col1) !== 'object') { col1 = new Color(col1); } - if (type(col2) !== 'object') { col2 = new Color(col2); } - return index[mode](col1, col2, f).alpha( - col1.alpha() + f * (col2.alpha() - col1.alpha()) - ); - } - - Color.prototype.mix = Color.prototype.interpolate = function ( - col2, - f - ) { - if ( f === void 0 ) f = 0.5; - var rest = [], len = arguments.length - 2; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ]; - - return mix.apply(void 0, [ this, col2, f ].concat( rest )); - }; - - Color.prototype.set = function (mc, value, mutate) { - if ( mutate === void 0 ) mutate = false; - - var ref = mc.split('.'); - var mode = ref[0]; - var channel = ref[1]; - var src = this[mode](); - if (channel) { - var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); - if (i > -1) { - if (type(value) == 'string') { - switch (value.charAt(0)) { - case '+': - src[i] += +value; - break; - case '-': - src[i] += +value; - break; - case '*': - src[i] *= +value.substr(1); - break; - case '/': - src[i] /= +value.substr(1); - break; - default: - src[i] = +value; - } - } else if (type(value) === 'number') { - src[i] = value; - } else { - throw new Error("unsupported value for Color.set"); - } - var out = new Color(src, mode); - if (mutate) { - this._rgb = out._rgb; - return this; - } - return out; - } - throw new Error(("unknown channel " + channel + " in mode " + mode)); - } else { - return src; - } - }; - - Color.prototype.tint = function (f) { - if ( f === void 0 ) f = 0.5; - var rest = [], len = arguments.length - 1; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; - - return mix.apply(void 0, [ this, 'white', f ].concat( rest )); - }; - - Color.prototype.shade = function (f) { - if ( f === void 0 ) f = 0.5; - var rest = [], len = arguments.length - 1; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; - - return mix.apply(void 0, [ this, 'black', f ].concat( rest )); - }; - - var sqrt = Math.sqrt; - var pow = Math.pow; - - var lrgb = function (col1, col2, f) { - var ref = col1._rgb; - var x1 = ref[0]; - var y1 = ref[1]; - var z1 = ref[2]; - var ref$1 = col2._rgb; - var x2 = ref$1[0]; - var y2 = ref$1[1]; - var z2 = ref$1[2]; - return new Color( - sqrt(pow(x1, 2) * (1 - f) + pow(x2, 2) * f), - sqrt(pow(y1, 2) * (1 - f) + pow(y2, 2) * f), - sqrt(pow(z1, 2) * (1 - f) + pow(z2, 2) * f), - 'rgb' - ); - }; - - // register interpolator - index.lrgb = lrgb; - - var oklab = function (col1, col2, f) { - var xyz0 = col1.oklab(); - var xyz1 = col2.oklab(); - return new Color( - xyz0[0] + f * (xyz1[0] - xyz0[0]), - xyz0[1] + f * (xyz1[1] - xyz0[1]), - xyz0[2] + f * (xyz1[2] - xyz0[2]), - 'oklab' - ); - }; - - // register interpolator - index.oklab = oklab; - - // generators -- > create new colors - chroma.mix = chroma.interpolate = require('./src/generator/mix'); - - // other utility methods - chroma.valid = require('./src/utils/valid'); - - module.exports = chroma; - -})); diff --git a/dist/chroma-light.min.cjs b/dist/chroma-light.min.cjs deleted file mode 100644 index 99a4fda5..00000000 --- a/dist/chroma-light.min.cjs +++ /dev/null @@ -1,58 +0,0 @@ -/** - * chroma.js - JavaScript library for color conversions - * - * Copyright (c) 2011-2024, Gregor Aisch - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name Gregor Aisch may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ------------------------------------------------------- - * - * chroma.js includes colors from colorbrewer2.org, which are released under - * the following license: - * - * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, - * and The Pennsylvania State University. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific - * language governing permissions and limitations under the License. - * - * ------------------------------------------------------ - * - * Named colors are taken from X11 Color Names. - * http://www.w3.org/TR/css3-color/#svg-color - * - * @preserve - */ - -!function(t){"function"==typeof define&&define.amd?define(t):t()}((function(){"use strict";function t(t,r,n){return void 0===n&&(n=1),s(l(r,t),n)}for(var r={},n=0,e=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n=3?Array.prototype.slice.call(t):"object"==a(t[0])&&r?r.split("").filter((function(r){return void 0!==t[0][r]})).map((function(r){return t[0][r]})):t[0]}function u(t){if(t.length<2)return null;var r=t.length-1;return"string"==a(t[r])?t[r].toLowerCase():null}var s=Math.min,l=Math.max,c={format:{},autodetect:[]},h=function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var e=this;if("object"===a(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var o=u(r),i=!1;if(!o){i=!0,c.sorted||(c.autodetect=c.autodetect.sort((function(t,r){return r.p-t.p})),c.sorted=!0);for(var s=0,l=c.autodetect;s255)&&(r._clipped=!0),r[n]=t(r[n],0,255)):3===n&&(r[n]=t(r[n],0,1));return r}(f),3===e._rgb.length&&e._rgb.push(1)};h.prototype.toString=function(){return"function"==a(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var f=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(f.Color,[null].concat(t)))};f.Color=h,f.version="2.6.0";var p=function(t){return Math.round(100*t)/100},g=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n,e,o=(t=i(t,"rgba"))[0],a=t[1],u=t[2],c=s(o/=255,a/=255,u/=255),h=l(o,a,u),f=(h+c)/2;return h===c?(n=0,e=Number.NaN):n=f<.5?(h-c)/(h+c):(h-c)/(2-h-c),o==h?e=(a-u)/(h-c):a==h?e=2+(u-o)/(h-c):u==h&&(e=4+(o-a)/(h-c)),(e*=60)<0&&(e+=360),t.length>3&&void 0!==t[3]?[e,n,f,t[3]]:[e,n,f]},b=Math.round,d=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=i(t,"rgba"),e=u(t)||"rgb";return"hsl"==e.substr(0,3)?function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=i(t,"hsla"),e=u(t)||"lsa";return n[0]=p(n[0]||0),n[1]=p(100*n[1])+"%",n[2]=p(100*n[2])+"%","hsla"===e||n.length>3&&n[3]<1?(n[3]=n.length>3?n[3]:1,e="hsla"):n.length=3,e+"("+n.join(",")+")"}(g(n),e):(n[0]=b(n[0]),n[1]=b(n[1]),n[2]=b(n[2]),("rgba"===e||n.length>3&&n[3]<1)&&(n[3]=n.length>3?n[3]:1,e="rgba"),e+"("+n.slice(0,"rgb"===e?3:4).join(",")+")")},v=Math.round,y=function(){for(var t,r=[],n=arguments.length;n--;)r[n]=arguments[n];var e,o,a,u=(r=i(r,"hsl"))[0],s=r[1],l=r[2];if(0===s)e=o=a=255*l;else{var c=[0,0,0],h=[0,0,0],f=l<.5?l*(1+s):l+s-l*s,p=2*l-f,g=u/360;c[0]=g+1/3,c[1]=g,c[2]=g-1/3;for(var b=0;b<3;b++)c[b]<0&&(c[b]+=1),c[b]>1&&(c[b]-=1),6*c[b]<1?h[b]=p+6*(f-p)*c[b]:2*c[b]<1?h[b]=f:3*c[b]<2?h[b]=p+(f-p)*(2/3-c[b])*6:h[b]=p;e=(t=[v(255*h[0]),v(255*h[1]),v(255*h[2])])[0],o=t[1],a=t[2]}return r.length>3?[e,o,a,r[3]]:[e,o,a,1]},w=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,m=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,k=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,_=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,M=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,x=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,F=Math.round,j=function(t){var r;if(t=t.toLowerCase().trim(),c.format.named)try{return c.format.named(t)}catch(t){}if(r=t.match(w)){for(var n=r.slice(1,4),e=0;e<3;e++)n[e]=+n[e];return n[3]=1,n}if(r=t.match(m)){for(var o=r.slice(1,5),a=0;a<4;a++)o[a]=+o[a];return o}if(r=t.match(k)){for(var i=r.slice(1,4),u=0;u<3;u++)i[u]=F(2.55*i[u]);return i[3]=1,i}if(r=t.match(_)){for(var s=r.slice(1,5),l=0;l<3;l++)s[l]=F(2.55*s[l]);return s[3]=+s[3],s}if(r=t.match(M)){var h=r.slice(1,4);h[1]*=.01,h[2]*=.01;var f=y(h);return f[3]=1,f}if(r=t.match(x)){var p=r.slice(1,4);p[1]*=.01,p[2]*=.01;var g=y(p);return g[3]=+r[4],g}};j.test=function(t){return w.test(t)||m.test(t)||k.test(t)||_.test(t)||M.test(t)||x.test(t)},h.prototype.css=function(t){return d(this._rgb,t)},f.css=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(h,[null].concat(t,["css"])))},c.format.css=j,c.autodetect.push({p:5,test:function(t){for(var r=[],n=arguments.length-1;n-- >0;)r[n]=arguments[n+1];if(!r.length&&"string"===a(t)&&j.test(t))return"css"}});var N=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,$=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,A=Math.round;h.prototype.hex=function(t){return function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=i(t,"rgba"),e=n[0],o=n[1],a=n[2],s=n[3],l=u(t)||"auto";void 0===s&&(s=1),"auto"===l&&(l=s<1?"rgba":"rgb");var c="000000"+((e=A(e))<<16|(o=A(o))<<8|(a=A(a))).toString(16);c=c.substr(c.length-6);var h="0"+A(255*s).toString(16);switch(h=h.substr(h.length-2),l.toLowerCase()){case"rgba":return"#"+c+h;case"argb":return"#"+h+c;default:return"#"+c}}(this._rgb,t)},f.hex=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(h,[null].concat(t,["hex"])))},c.format.hex=function(t){if(t.match(N)){4!==t.length&&7!==t.length||(t=t.substr(1)),3===t.length&&(t=(t=t.split(""))[0]+t[0]+t[1]+t[1]+t[2]+t[2]);var r=parseInt(t,16);return[r>>16,r>>8&255,255&r,1]}if(t.match($)){5!==t.length&&9!==t.length||(t=t.substr(1)),4===t.length&&(t=(t=t.split(""))[0]+t[0]+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]);var n=parseInt(t,16);return[n>>24&255,n>>16&255,n>>8&255,Math.round((255&n)/255*100)/100]}throw new Error("unknown hex color: "+t)},c.autodetect.push({p:4,test:function(t){for(var r=[],n=arguments.length-1;n-- >0;)r[n]=arguments[n+1];if(!r.length&&"string"===a(t)&&[3,4,5,6,7,8,9].indexOf(t.length)>=0)return"hex"}}),h.prototype.hsl=function(){return g(this._rgb)},f.hsl=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(h,[null].concat(t,["hsl"])))},c.format.hsl=y,c.autodetect.push({p:2,test:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];if("array"===a(t=i(t,"hsl"))&&3===t.length)return"hsl"}});var C=18,E=.95047,O=1,S=1.08883,L=.137931034,q=.206896552,I=.12841855,B=.008856452,D=Math.pow,R=function(t){return 255*(t<=.00304?12.92*t:1.055*D(t,1/2.4)-.055)},U=function(t){return t>q?t*t*t:I*(t-L)},z=Math.pow,G=function(t){return(t/=255)<=.04045?t/12.92:z((t+.055)/1.055,2.4)},H=function(t){return t>B?z(t,1/3):t/I+L},J=function(t,r,n){return t=G(t),r=G(r),n=G(n),[H((.4124564*t+.3575761*r+.1804375*n)/E),H((.2126729*t+.7151522*r+.072175*n)/O),H((.0193339*t+.119192*r+.9503041*n)/S)]};h.prototype.lab=function(){return function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=i(t,"rgb"),e=n[0],o=n[1],a=n[2],u=J(e,o,a),s=u[0],l=u[1],c=116*l-16;return[c<0?0:c,500*(s-l),200*(l-u[2])]}(this._rgb)},f.lab=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(h,[null].concat(t,["lab"])))},c.format.lab=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n,e,o,a=(t=i(t,"lab"))[0],u=t[1],s=t[2];return e=(a+16)/116,n=isNaN(u)?e:e+u/500,o=isNaN(s)?e:e-s/200,e=O*U(e),n=E*U(n),o=S*U(o),[R(3.2404542*n-1.5371385*e-.4985314*o),R(-.969266*n+1.8760108*e+.041556*o),R(.0556434*n-.2040259*e+1.0572252*o),t.length>3?t[3]:1]},c.autodetect.push({p:2,test:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];if("array"===a(t=i(t,"lab"))&&3===t.length)return"lab"}});var K=Math.pow,P=Math.sign;function Q(t){var r=Math.abs(t);return r>.0031308?(P(t)||1)*(1.055*K(r,1/2.4)-.055):12.92*t}var T=Math.cbrt,V=Math.pow,W=Math.sign;function X(t){var r=Math.abs(t);return r<.04045?t/12.92:(W(t)||1)*V((r+.055)/1.055,2.4)}h.prototype.oklab=function(){return function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=i(t,"rgb"),e=n[0],o=n[1],a=n[2],u=[X(e/255),X(o/255),X(a/255)],s=u[0],l=u[1],c=u[2],h=T(.4122214708*s+.5363325363*l+.0514459929*c),f=T(.2119034982*s+.6806995451*l+.1073969566*c),p=T(.0883024619*s+.2817188376*l+.6299787005*c);return[.2104542553*h+.793617785*f-.0040720468*p,1.9779984951*h-2.428592205*f+.4505937099*p,.0259040371*h+.7827717662*f-.808675766*p]}(this._rgb)},f.oklab=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(h,[null].concat(t,["oklab"])))},c.format.oklab=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=(t=i(t,"lab"))[0],e=t[1],o=t[2],a=K(n+.3963377774*e+.2158037573*o,3),u=K(n-.1055613458*e-.0638541728*o,3),s=K(n-.0894841775*e-1.291485548*o,3);return[255*Q(4.0767416621*a-3.3077115913*u+.2309699292*s),255*Q(-1.2684380046*a+2.6097574011*u-.3413193965*s),255*Q(-.0041960863*a-.7034186147*u+1.707614701*s),t.length>3?t[3]:1]},c.autodetect.push({p:3,test:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];if("array"===a(t=i(t,"oklab"))&&3===t.length)return"oklab"}});var Y=Math.round;h.prototype.rgb=function(t){return void 0===t&&(t=!0),!1===t?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Y)},h.prototype.rgba=function(t){return void 0===t&&(t=!0),this._rgb.slice(0,4).map((function(r,n){return n<3?!1===t?r:Y(r):r}))},f.rgb=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(h,[null].concat(t,["rgb"])))},c.format.rgb=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=i(t,"rgba");return void 0===n[3]&&(n[3]=1),n},c.autodetect.push({p:3,test:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];if("array"===a(t=i(t,"rgba"))&&(3===t.length||4===t.length&&"number"==a(t[3])&&t[3]>=0&&t[3]<=1))return"rgb"}}),h.prototype.alpha=function(t,r){return void 0===r&&(r=!1),void 0!==t&&"number"===a(t)?r?(this._rgb[3]=t,this):new h([this._rgb[0],this._rgb[1],this._rgb[2],t],"rgb"):this._rgb[3]},h.prototype.darken=function(t){void 0===t&&(t=1);var r=this.lab();return r[0]-=C*t,new h(r,"lab").alpha(this.alpha(),!0)},h.prototype.brighten=function(t){return void 0===t&&(t=1),this.darken(-t)},h.prototype.darker=h.prototype.darken,h.prototype.brighter=h.prototype.brighten,h.prototype.get=function(t){var r=t.split("."),n=r[0],e=r[1],o=this[n]();if(e){var a=n.indexOf(e)-("ok"===n.substr(0,2)?2:0);if(a>-1)return o[a];throw new Error("unknown channel "+e+" in mode "+n)}return o};var Z={};function tt(t,r,n){void 0===n&&(n=.5);for(var e=[],o=arguments.length-3;o-- >0;)e[o]=arguments[o+3];var i=e[0]||"lrgb";if(Z[i]||e.length||(i=Object.keys(Z)[0]),!Z[i])throw new Error("interpolation mode "+i+" is not defined");return"object"!==a(t)&&(t=new h(t)),"object"!==a(r)&&(r=new h(r)),Z[i](t,r,n).alpha(t.alpha()+n*(r.alpha()-t.alpha()))}h.prototype.mix=h.prototype.interpolate=function(t,r){void 0===r&&(r=.5);for(var n=[],e=arguments.length-2;e-- >0;)n[e]=arguments[e+2];return tt.apply(void 0,[this,t,r].concat(n))},h.prototype.set=function(t,r,n){void 0===n&&(n=!1);var e=t.split("."),o=e[0],i=e[1],u=this[o]();if(i){var s=o.indexOf(i)-("ok"===o.substr(0,2)?2:0);if(s>-1){if("string"==a(r))switch(r.charAt(0)){case"+":case"-":u[s]+=+r;break;case"*":u[s]*=+r.substr(1);break;case"/":u[s]/=+r.substr(1);break;default:u[s]=+r}else{if("number"!==a(r))throw new Error("unsupported value for Color.set");u[s]=r}var l=new h(u,o);return n?(this._rgb=l._rgb,this):l}throw new Error("unknown channel "+i+" in mode "+o)}return u},h.prototype.tint=function(t){void 0===t&&(t=.5);for(var r=[],n=arguments.length-1;n-- >0;)r[n]=arguments[n+1];return tt.apply(void 0,[this,"white",t].concat(r))},h.prototype.shade=function(t){void 0===t&&(t=.5);for(var r=[],n=arguments.length-1;n-- >0;)r[n]=arguments[n+1];return tt.apply(void 0,[this,"black",t].concat(r))};var rt=Math.sqrt,nt=Math.pow;Z.lrgb=function(t,r,n){var e=t._rgb,o=e[0],a=e[1],i=e[2],u=r._rgb,s=u[0],l=u[1],c=u[2];return new h(rt(nt(o,2)*(1-n)+nt(s,2)*n),rt(nt(a,2)*(1-n)+nt(l,2)*n),rt(nt(i,2)*(1-n)+nt(c,2)*n),"rgb")};Z.oklab=function(t,r,n){var e=t.oklab(),o=r.oklab();return new h(e[0]+n*(o[0]-e[0]),e[1]+n*(o[1]-e[1]),e[2]+n*(o[2]-e[2]),"oklab")},f.mix=f.interpolate=require("./src/generator/mix"),f.valid=require("./src/utils/valid"),module.exports=f})); diff --git a/dist/chroma.cjs b/dist/chroma.cjs deleted file mode 100644 index 1eef66f3..00000000 --- a/dist/chroma.cjs +++ /dev/null @@ -1,3387 +0,0 @@ -/** - * chroma.js - JavaScript library for color conversions - * - * Copyright (c) 2011-2024, Gregor Aisch - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name Gregor Aisch may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ------------------------------------------------------- - * - * chroma.js includes colors from colorbrewer2.org, which are released under - * the following license: - * - * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, - * and The Pennsylvania State University. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific - * language governing permissions and limitations under the License. - * - * ------------------------------------------------------ - * - * Named colors are taken from X11 Color Names. - * http://www.w3.org/TR/css3-color/#svg-color - * - * @preserve - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.chroma = factory()); -})(this, (function () { 'use strict'; - - function limit (x, low, high) { - if ( low === void 0 ) low = 0; - if ( high === void 0 ) high = 1; - - return min$3(max$3(low, x), high); - } - - function clip_rgb (rgb) { - rgb._clipped = false; - rgb._unclipped = rgb.slice(0); - for (var i = 0; i <= 3; i++) { - if (i < 3) { - if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; } - rgb[i] = limit(rgb[i], 0, 255); - } else if (i === 3) { - rgb[i] = limit(rgb[i], 0, 1); - } - } - return rgb; - } - - // ported from jQuery's $.type - var classToType = {}; - for (var i$1 = 0, list$1 = [ - 'Boolean', - 'Number', - 'String', - 'Function', - 'Array', - 'Date', - 'RegExp', - 'Undefined', - 'Null' - ]; i$1 < list$1.length; i$1 += 1) { - var name = list$1[i$1]; - - classToType[("[object " + name + "]")] = name.toLowerCase(); - } - function type (obj) { - return classToType[Object.prototype.toString.call(obj)] || 'object'; - } - - function unpack (args, keyOrder) { - if ( keyOrder === void 0 ) keyOrder = null; - - // if called with more than 3 arguments, we return the arguments - if (args.length >= 3) { return Array.prototype.slice.call(args); } - // with less than 3 args we check if first arg is object - // and use the keyOrder string to extract and sort properties - if (type(args[0]) == 'object' && keyOrder) { - return keyOrder - .split('') - .filter(function (k) { return args[0][k] !== undefined; }) - .map(function (k) { return args[0][k]; }); - } - // otherwise we just return the first argument - // (which we suppose is an array of args) - return args[0]; - } - - function last (args) { - if (args.length < 2) { return null; } - var l = args.length - 1; - if (type(args[l]) == 'string') { return args[l].toLowerCase(); } - return null; - } - - var PI$2 = Math.PI; - var min$3 = Math.min; - var max$3 = Math.max; - - var TWOPI = PI$2 * 2; - var PITHIRD = PI$2 / 3; - var DEG2RAD = PI$2 / 180; - var RAD2DEG = 180 / PI$2; - - var input = { - format: {}, - autodetect: [] - }; - - var Color = function Color() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var me = this; - if ( - type(args[0]) === 'object' && - args[0].constructor && - args[0].constructor === this.constructor - ) { - // the argument is already a Color instance - return args[0]; - } - // last argument could be the mode - var mode = last(args); - var autodetect = false; - if (!mode) { - autodetect = true; - if (!input.sorted) { - input.autodetect = input.autodetect.sort(function (a, b) { return b.p - a.p; }); - input.sorted = true; - } - // auto-detect format - for (var i = 0, list = input.autodetect; i < list.length; i += 1) { - var chk = list[i]; - - mode = chk.test.apply(chk, args); - if (mode) { break; } - } - } - if (input.format[mode]) { - var rgb = input.format[mode].apply( - null, - autodetect ? args : args.slice(0, -1) - ); - me._rgb = clip_rgb(rgb); - } else { - throw new Error('unknown format: ' + args); - } - // add alpha channel - if (me._rgb.length === 3) { me._rgb.push(1); } - }; - Color.prototype.toString = function toString () { - if (type(this.hex) == 'function') { return this.hex(); } - return ("[" + (this._rgb.join(',')) + "]"); - }; - - // this gets updated automatically - var version = '2.6.0'; - - var chroma = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) )); - }; - - chroma.Color = Color; - chroma.version = version; - - var cmyk2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'cmyk'); - var c = args[0]; - var m = args[1]; - var y = args[2]; - var k = args[3]; - var alpha = args.length > 4 ? args[4] : 1; - if (k === 1) { return [0, 0, 0, alpha]; } - return [ - c >= 1 ? 0 : 255 * (1 - c) * (1 - k), // r - m >= 1 ? 0 : 255 * (1 - m) * (1 - k), // g - y >= 1 ? 0 : 255 * (1 - y) * (1 - k), // b - alpha - ]; - }; - - var max$2 = Math.max; - - var rgb2cmyk = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - r = r / 255; - g = g / 255; - b = b / 255; - var k = 1 - max$2(r, max$2(g, b)); - var f = k < 1 ? 1 / (1 - k) : 0; - var c = (1 - r - k) * f; - var m = (1 - g - k) * f; - var y = (1 - b - k) * f; - return [c, m, y, k]; - }; - - Color.prototype.cmyk = function () { - return rgb2cmyk(this._rgb); - }; - - chroma.cmyk = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['cmyk']) )); - }; - - input.format.cmyk = cmyk2rgb; - - input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'cmyk'); - if (type(args) === 'array' && args.length === 4) { - return 'cmyk'; - } - } - }); - - var rnd = function (a) { return Math.round(a * 100) / 100; }; - - /* - * supported arguments: - * - hsl2css(h,s,l) - * - hsl2css(h,s,l,a) - * - hsl2css([h,s,l], mode) - * - hsl2css([h,s,l,a], mode) - * - hsl2css({h,s,l,a}, mode) - */ - var hsl2css = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var hsla = unpack(args, 'hsla'); - var mode = last(args) || 'lsa'; - hsla[0] = rnd(hsla[0] || 0); - hsla[1] = rnd(hsla[1] * 100) + '%'; - hsla[2] = rnd(hsla[2] * 100) + '%'; - if (mode === 'hsla' || (hsla.length > 3 && hsla[3] < 1)) { - hsla[3] = hsla.length > 3 ? hsla[3] : 1; - mode = 'hsla'; - } else { - hsla.length = 3; - } - return (mode + "(" + (hsla.join(',')) + ")"); - }; - - /* - * supported arguments: - * - rgb2hsl(r,g,b) - * - rgb2hsl(r,g,b,a) - * - rgb2hsl([r,g,b]) - * - rgb2hsl([r,g,b,a]) - * - rgb2hsl({r,g,b,a}) - */ - var rgb2hsl$1 = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'rgba'); - var r = args[0]; - var g = args[1]; - var b = args[2]; - - r /= 255; - g /= 255; - b /= 255; - - var minRgb = min$3(r, g, b); - var maxRgb = max$3(r, g, b); - - var l = (maxRgb + minRgb) / 2; - var s, h; - - if (maxRgb === minRgb) { - s = 0; - h = Number.NaN; - } else { - s = - l < 0.5 - ? (maxRgb - minRgb) / (maxRgb + minRgb) - : (maxRgb - minRgb) / (2 - maxRgb - minRgb); - } - - if (r == maxRgb) { h = (g - b) / (maxRgb - minRgb); } - else if (g == maxRgb) { h = 2 + (b - r) / (maxRgb - minRgb); } - else if (b == maxRgb) { h = 4 + (r - g) / (maxRgb - minRgb); } - - h *= 60; - if (h < 0) { h += 360; } - if (args.length > 3 && args[3] !== undefined) { return [h, s, l, args[3]]; } - return [h, s, l]; - }; - - var round$6 = Math.round; - - /* - * supported arguments: - * - rgb2css(r,g,b) - * - rgb2css(r,g,b,a) - * - rgb2css([r,g,b], mode) - * - rgb2css([r,g,b,a], mode) - * - rgb2css({r,g,b,a}, mode) - */ - var rgb2css = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var rgba = unpack(args, 'rgba'); - var mode = last(args) || 'rgb'; - if (mode.substr(0, 3) == 'hsl') { - return hsl2css(rgb2hsl$1(rgba), mode); - } - rgba[0] = round$6(rgba[0]); - rgba[1] = round$6(rgba[1]); - rgba[2] = round$6(rgba[2]); - if (mode === 'rgba' || (rgba.length > 3 && rgba[3] < 1)) { - rgba[3] = rgba.length > 3 ? rgba[3] : 1; - mode = 'rgba'; - } - return (mode + "(" + (rgba.slice(0, mode === 'rgb' ? 3 : 4).join(',')) + ")"); - }; - - var round$5 = Math.round; - - var hsl2rgb = function () { - var assign; - - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - args = unpack(args, 'hsl'); - var h = args[0]; - var s = args[1]; - var l = args[2]; - var r, g, b; - if (s === 0) { - r = g = b = l * 255; - } else { - var t3 = [0, 0, 0]; - var c = [0, 0, 0]; - var t2 = l < 0.5 ? l * (1 + s) : l + s - l * s; - var t1 = 2 * l - t2; - var h_ = h / 360; - t3[0] = h_ + 1 / 3; - t3[1] = h_; - t3[2] = h_ - 1 / 3; - for (var i = 0; i < 3; i++) { - if (t3[i] < 0) { t3[i] += 1; } - if (t3[i] > 1) { t3[i] -= 1; } - if (6 * t3[i] < 1) { c[i] = t1 + (t2 - t1) * 6 * t3[i]; } - else if (2 * t3[i] < 1) { c[i] = t2; } - else if (3 * t3[i] < 2) { c[i] = t1 + (t2 - t1) * (2 / 3 - t3[i]) * 6; } - else { c[i] = t1; } - } - (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]); - } - if (args.length > 3) { - // keep alpha channel - return [r, g, b, args[3]]; - } - return [r, g, b, 1]; - }; - - var RE_RGB = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/; - var RE_RGBA = - /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/; - var RE_RGB_PCT = - /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; - var RE_RGBA_PCT = - /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; - var RE_HSL = - /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; - var RE_HSLA = - /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; - - var round$4 = Math.round; - - var css2rgb = function (css) { - css = css.toLowerCase().trim(); - var m; - - if (input.format.named) { - try { - return input.format.named(css); - // eslint-disable-next-line - } catch (e) {} - } - - // rgb(250,20,0) - if ((m = css.match(RE_RGB))) { - var rgb = m.slice(1, 4); - for (var i = 0; i < 3; i++) { - rgb[i] = +rgb[i]; - } - rgb[3] = 1; // default alpha - return rgb; - } - - // rgba(250,20,0,0.4) - if ((m = css.match(RE_RGBA))) { - var rgb$1 = m.slice(1, 5); - for (var i$1 = 0; i$1 < 4; i$1++) { - rgb$1[i$1] = +rgb$1[i$1]; - } - return rgb$1; - } - - // rgb(100%,0%,0%) - if ((m = css.match(RE_RGB_PCT))) { - var rgb$2 = m.slice(1, 4); - for (var i$2 = 0; i$2 < 3; i$2++) { - rgb$2[i$2] = round$4(rgb$2[i$2] * 2.55); - } - rgb$2[3] = 1; // default alpha - return rgb$2; - } - - // rgba(100%,0%,0%,0.4) - if ((m = css.match(RE_RGBA_PCT))) { - var rgb$3 = m.slice(1, 5); - for (var i$3 = 0; i$3 < 3; i$3++) { - rgb$3[i$3] = round$4(rgb$3[i$3] * 2.55); - } - rgb$3[3] = +rgb$3[3]; - return rgb$3; - } - - // hsl(0,100%,50%) - if ((m = css.match(RE_HSL))) { - var hsl = m.slice(1, 4); - hsl[1] *= 0.01; - hsl[2] *= 0.01; - var rgb$4 = hsl2rgb(hsl); - rgb$4[3] = 1; - return rgb$4; - } - - // hsla(0,100%,50%,0.5) - if ((m = css.match(RE_HSLA))) { - var hsl$1 = m.slice(1, 4); - hsl$1[1] *= 0.01; - hsl$1[2] *= 0.01; - var rgb$5 = hsl2rgb(hsl$1); - rgb$5[3] = +m[4]; // default alpha = 1 - return rgb$5; - } - }; - - css2rgb.test = function (s) { - return ( - RE_RGB.test(s) || - RE_RGBA.test(s) || - RE_RGB_PCT.test(s) || - RE_RGBA_PCT.test(s) || - RE_HSL.test(s) || - RE_HSLA.test(s) - ); - }; - - Color.prototype.css = function (mode) { - return rgb2css(this._rgb, mode); - }; - - chroma.css = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['css']) )); - }; - - input.format.css = css2rgb; - - input.autodetect.push({ - p: 5, - test: function (h) { - var rest = [], len = arguments.length - 1; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; - - if (!rest.length && type(h) === 'string' && css2rgb.test(h)) { - return 'css'; - } - } - }); - - input.format.gl = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var rgb = unpack(args, 'rgba'); - rgb[0] *= 255; - rgb[1] *= 255; - rgb[2] *= 255; - return rgb; - }; - - chroma.gl = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['gl']) )); - }; - - Color.prototype.gl = function () { - var rgb = this._rgb; - return [rgb[0] / 255, rgb[1] / 255, rgb[2] / 255, rgb[3]]; - }; - - var floor$3 = Math.floor; - - /* - * this is basically just HSV with some minor tweaks - * - * hue.. [0..360] - * chroma .. [0..1] - * grayness .. [0..1] - */ - - var hcg2rgb = function () { - var assign, assign$1, assign$2, assign$3, assign$4, assign$5; - - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - args = unpack(args, 'hcg'); - var h = args[0]; - var c = args[1]; - var _g = args[2]; - var r, g, b; - _g = _g * 255; - var _c = c * 255; - if (c === 0) { - r = g = b = _g; - } else { - if (h === 360) { h = 0; } - if (h > 360) { h -= 360; } - if (h < 0) { h += 360; } - h /= 60; - var i = floor$3(h); - var f = h - i; - var p = _g * (1 - c); - var q = p + _c * (1 - f); - var t = p + _c * f; - var v = p + _c; - switch (i) { - case 0: - (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); - break; - case 1: - (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); - break; - case 2: - (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); - break; - case 3: - (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); - break; - case 4: - (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); - break; - case 5: - (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); - break; - } - } - return [r, g, b, args.length > 3 ? args[3] : 1]; - }; - - var rgb2hcg = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - var minRgb = min$3(r, g, b); - var maxRgb = max$3(r, g, b); - var delta = maxRgb - minRgb; - var c = (delta * 100) / 255; - var _g = (minRgb / (255 - delta)) * 100; - var h; - if (delta === 0) { - h = Number.NaN; - } else { - if (r === maxRgb) { h = (g - b) / delta; } - if (g === maxRgb) { h = 2 + (b - r) / delta; } - if (b === maxRgb) { h = 4 + (r - g) / delta; } - h *= 60; - if (h < 0) { h += 360; } - } - return [h, c, _g]; - }; - - Color.prototype.hcg = function () { - return rgb2hcg(this._rgb); - }; - - chroma.hcg = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hcg']) )); - }; - - input.format.hcg = hcg2rgb; - - input.autodetect.push({ - p: 1, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'hcg'); - if (type(args) === 'array' && args.length === 3) { - return 'hcg'; - } - } - }); - - var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; - var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/; - - var hex2rgb = function (hex) { - if (hex.match(RE_HEX)) { - // remove optional leading # - if (hex.length === 4 || hex.length === 7) { - hex = hex.substr(1); - } - // expand short-notation to full six-digit - if (hex.length === 3) { - hex = hex.split(''); - hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; - } - var u = parseInt(hex, 16); - var r = u >> 16; - var g = (u >> 8) & 0xff; - var b = u & 0xff; - return [r, g, b, 1]; - } - - // match rgba hex format, eg #FF000077 - if (hex.match(RE_HEXA)) { - if (hex.length === 5 || hex.length === 9) { - // remove optional leading # - hex = hex.substr(1); - } - // expand short-notation to full eight-digit - if (hex.length === 4) { - hex = hex.split(''); - hex = - hex[0] + - hex[0] + - hex[1] + - hex[1] + - hex[2] + - hex[2] + - hex[3] + - hex[3]; - } - var u$1 = parseInt(hex, 16); - var r$1 = (u$1 >> 24) & 0xff; - var g$1 = (u$1 >> 16) & 0xff; - var b$1 = (u$1 >> 8) & 0xff; - var a = Math.round(((u$1 & 0xff) / 0xff) * 100) / 100; - return [r$1, g$1, b$1, a]; - } - - // we used to check for css colors here - // if _input.css? and rgb = _input.css hex - // return rgb - - throw new Error(("unknown hex color: " + hex)); - }; - - var round$3 = Math.round; - - var rgb2hex = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack(args, 'rgba'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - var a = ref[3]; - var mode = last(args) || 'auto'; - if (a === undefined) { a = 1; } - if (mode === 'auto') { - mode = a < 1 ? 'rgba' : 'rgb'; - } - r = round$3(r); - g = round$3(g); - b = round$3(b); - var u = (r << 16) | (g << 8) | b; - var str = '000000' + u.toString(16); //#.toUpperCase(); - str = str.substr(str.length - 6); - var hxa = '0' + round$3(a * 255).toString(16); - hxa = hxa.substr(hxa.length - 2); - switch (mode.toLowerCase()) { - case 'rgba': - return ("#" + str + hxa); - case 'argb': - return ("#" + hxa + str); - default: - return ("#" + str); - } - }; - - Color.prototype.hex = function (mode) { - return rgb2hex(this._rgb, mode); - }; - - chroma.hex = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hex']) )); - }; - - input.format.hex = hex2rgb; - input.autodetect.push({ - p: 4, - test: function (h) { - var rest = [], len = arguments.length - 1; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; - - if ( - !rest.length && - type(h) === 'string' && - [3, 4, 5, 6, 7, 8, 9].indexOf(h.length) >= 0 - ) { - return 'hex'; - } - } - }); - - var cos$4 = Math.cos; - - /* - * hue [0..360] - * saturation [0..1] - * intensity [0..1] - */ - var hsi2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - /* - borrowed from here: - http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp - */ - args = unpack(args, 'hsi'); - var h = args[0]; - var s = args[1]; - var i = args[2]; - var r, g, b; - - if (isNaN(h)) { h = 0; } - if (isNaN(s)) { s = 0; } - // normalize hue - if (h > 360) { h -= 360; } - if (h < 0) { h += 360; } - h /= 360; - if (h < 1 / 3) { - b = (1 - s) / 3; - r = (1 + (s * cos$4(TWOPI * h)) / cos$4(PITHIRD - TWOPI * h)) / 3; - g = 1 - (b + r); - } else if (h < 2 / 3) { - h -= 1 / 3; - r = (1 - s) / 3; - g = (1 + (s * cos$4(TWOPI * h)) / cos$4(PITHIRD - TWOPI * h)) / 3; - b = 1 - (r + g); - } else { - h -= 2 / 3; - g = (1 - s) / 3; - b = (1 + (s * cos$4(TWOPI * h)) / cos$4(PITHIRD - TWOPI * h)) / 3; - r = 1 - (g + b); - } - r = limit(i * r * 3); - g = limit(i * g * 3); - b = limit(i * b * 3); - return [r * 255, g * 255, b * 255, args.length > 3 ? args[3] : 1]; - }; - - var min$2 = Math.min; - var sqrt$4 = Math.sqrt; - var acos = Math.acos; - - var rgb2hsi = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - /* - borrowed from here: - http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp - */ - var ref = unpack(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - r /= 255; - g /= 255; - b /= 255; - var h; - var min_ = min$2(r, g, b); - var i = (r + g + b) / 3; - var s = i > 0 ? 1 - min_ / i : 0; - if (s === 0) { - h = NaN; - } else { - h = (r - g + (r - b)) / 2; - h /= sqrt$4((r - g) * (r - g) + (r - b) * (g - b)); - h = acos(h); - if (b > g) { - h = TWOPI - h; - } - h /= TWOPI; - } - return [h * 360, s, i]; - }; - - Color.prototype.hsi = function () { - return rgb2hsi(this._rgb); - }; - - chroma.hsi = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hsi']) )); - }; - - input.format.hsi = hsi2rgb; - - input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'hsi'); - if (type(args) === 'array' && args.length === 3) { - return 'hsi'; - } - } - }); - - Color.prototype.hsl = function () { - return rgb2hsl$1(this._rgb); - }; - - chroma.hsl = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hsl']) )); - }; - - input.format.hsl = hsl2rgb; - - input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'hsl'); - if (type(args) === 'array' && args.length === 3) { - return 'hsl'; - } - } - }); - - var floor$2 = Math.floor; - - var hsv2rgb = function () { - var assign, assign$1, assign$2, assign$3, assign$4, assign$5; - - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - args = unpack(args, 'hsv'); - var h = args[0]; - var s = args[1]; - var v = args[2]; - var r, g, b; - v *= 255; - if (s === 0) { - r = g = b = v; - } else { - if (h === 360) { h = 0; } - if (h > 360) { h -= 360; } - if (h < 0) { h += 360; } - h /= 60; - - var i = floor$2(h); - var f = h - i; - var p = v * (1 - s); - var q = v * (1 - s * f); - var t = v * (1 - s * (1 - f)); - - switch (i) { - case 0: - (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); - break; - case 1: - (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); - break; - case 2: - (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); - break; - case 3: - (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); - break; - case 4: - (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); - break; - case 5: - (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); - break; - } - } - return [r, g, b, args.length > 3 ? args[3] : 1]; - }; - - var min$1 = Math.min; - var max$1 = Math.max; - - /* - * supported arguments: - * - rgb2hsv(r,g,b) - * - rgb2hsv([r,g,b]) - * - rgb2hsv({r,g,b}) - */ - var rgb2hsl = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'rgb'); - var r = args[0]; - var g = args[1]; - var b = args[2]; - var min_ = min$1(r, g, b); - var max_ = max$1(r, g, b); - var delta = max_ - min_; - var h, s, v; - v = max_ / 255.0; - if (max_ === 0) { - h = Number.NaN; - s = 0; - } else { - s = delta / max_; - if (r === max_) { h = (g - b) / delta; } - if (g === max_) { h = 2 + (b - r) / delta; } - if (b === max_) { h = 4 + (r - g) / delta; } - h *= 60; - if (h < 0) { h += 360; } - } - return [h, s, v]; - }; - - Color.prototype.hsv = function () { - return rgb2hsl(this._rgb); - }; - - chroma.hsv = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hsv']) )); - }; - - input.format.hsv = hsv2rgb; - - input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'hsv'); - if (type(args) === 'array' && args.length === 3) { - return 'hsv'; - } - } - }); - - var LAB_CONSTANTS = { - // Corresponds roughly to RGB brighter/darker - Kn: 18, - - // D65 standard referent - Xn: 0.95047, - Yn: 1, - Zn: 1.08883, - - t0: 0.137931034, // 4 / 29 - t1: 0.206896552, // 6 / 29 - t2: 0.12841855, // 3 * t1 * t1 - t3: 0.008856452 // t1 * t1 * t1 - }; - - var pow$a = Math.pow; - - /* - * L* [0..100] - * a [-100..100] - * b [-100..100] - */ - var lab2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'lab'); - var l = args[0]; - var a = args[1]; - var b = args[2]; - var x, y, z, r, g, b_; - - y = (l + 16) / 116; - x = isNaN(a) ? y : y + a / 500; - z = isNaN(b) ? y : y - b / 200; - - y = LAB_CONSTANTS.Yn * lab_xyz(y); - x = LAB_CONSTANTS.Xn * lab_xyz(x); - z = LAB_CONSTANTS.Zn * lab_xyz(z); - - r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB - g = xyz_rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z); - b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z); - - return [r, g, b_, args.length > 3 ? args[3] : 1]; - }; - - var xyz_rgb = function (r) { - return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$a(r, 1 / 2.4) - 0.055); - }; - - var lab_xyz = function (t) { - return t > LAB_CONSTANTS.t1 - ? t * t * t - : LAB_CONSTANTS.t2 * (t - LAB_CONSTANTS.t0); - }; - - var pow$9 = Math.pow; - - var rgb2lab = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - var ref$1 = rgb2xyz(r, g, b); - var x = ref$1[0]; - var y = ref$1[1]; - var z = ref$1[2]; - var l = 116 * y - 16; - return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)]; - }; - - var rgb_xyz = function (r) { - if ((r /= 255) <= 0.04045) { return r / 12.92; } - return pow$9((r + 0.055) / 1.055, 2.4); - }; - - var xyz_lab = function (t) { - if (t > LAB_CONSTANTS.t3) { return pow$9(t, 1 / 3); } - return t / LAB_CONSTANTS.t2 + LAB_CONSTANTS.t0; - }; - - var rgb2xyz = function (r, g, b) { - r = rgb_xyz(r); - g = rgb_xyz(g); - b = rgb_xyz(b); - var x = xyz_lab( - (0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS.Xn - ); - var y = xyz_lab( - (0.2126729 * r + 0.7151522 * g + 0.072175 * b) / LAB_CONSTANTS.Yn - ); - var z = xyz_lab( - (0.0193339 * r + 0.119192 * g + 0.9503041 * b) / LAB_CONSTANTS.Zn - ); - return [x, y, z]; - }; - - Color.prototype.lab = function () { - return rgb2lab(this._rgb); - }; - - chroma.lab = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['lab']) )); - }; - - input.format.lab = lab2rgb; - - input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'lab'); - if (type(args) === 'array' && args.length === 3) { - return 'lab'; - } - } - }); - - var sin$3 = Math.sin; - var cos$3 = Math.cos; - - var lch2lab = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - /* - Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel. - These formulas were invented by David Dalrymple to obtain maximum contrast without going - out of gamut if the parameters are in the range 0-1. - - A saturation multiplier was added by Gregor Aisch - */ - var ref = unpack(args, 'lch'); - var l = ref[0]; - var c = ref[1]; - var h = ref[2]; - if (isNaN(h)) { h = 0; } - h = h * DEG2RAD; - return [l, cos$3(h) * c, sin$3(h) * c]; - }; - - var lch2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'lch'); - var l = args[0]; - var c = args[1]; - var h = args[2]; - var ref = lch2lab(l, c, h); - var L = ref[0]; - var a = ref[1]; - var b_ = ref[2]; - var ref$1 = lab2rgb(L, a, b_); - var r = ref$1[0]; - var g = ref$1[1]; - var b = ref$1[2]; - return [r, g, b, args.length > 3 ? args[3] : 1]; - }; - - var hcl2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var hcl = unpack(args, 'hcl').reverse(); - return lch2rgb.apply(void 0, hcl); - }; - - var sqrt$3 = Math.sqrt; - var atan2$2 = Math.atan2; - var round$2 = Math.round; - - var lab2lch = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack(args, 'lab'); - var l = ref[0]; - var a = ref[1]; - var b = ref[2]; - var c = sqrt$3(a * a + b * b); - var h = (atan2$2(b, a) * RAD2DEG + 360) % 360; - if (round$2(c * 10000) === 0) { h = Number.NaN; } - return [l, c, h]; - }; - - var rgb2lch = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - var ref$1 = rgb2lab(r, g, b); - var l = ref$1[0]; - var a = ref$1[1]; - var b_ = ref$1[2]; - return lab2lch(l, a, b_); - }; - - Color.prototype.lch = function () { - return rgb2lch(this._rgb); - }; - Color.prototype.hcl = function () { - return rgb2lch(this._rgb).reverse(); - }; - - chroma.lch = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['lch']) )); - }; - chroma.hcl = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hcl']) )); - }; - - input.format.lch = lch2rgb; - input.format.hcl = hcl2rgb; - ['lch', 'hcl'].forEach(function (m) { return input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, m); - if (type(args) === 'array' && args.length === 3) { - return m; - } - } - }); } - ); - - /** - X11 color names - - http://www.w3.org/TR/css3-color/#svg-color - */ - - var w3cx11 = { - aliceblue: '#f0f8ff', - antiquewhite: '#faebd7', - aqua: '#00ffff', - aquamarine: '#7fffd4', - azure: '#f0ffff', - beige: '#f5f5dc', - bisque: '#ffe4c4', - black: '#000000', - blanchedalmond: '#ffebcd', - blue: '#0000ff', - blueviolet: '#8a2be2', - brown: '#a52a2a', - burlywood: '#deb887', - cadetblue: '#5f9ea0', - chartreuse: '#7fff00', - chocolate: '#d2691e', - coral: '#ff7f50', - cornflowerblue: '#6495ed', - cornsilk: '#fff8dc', - crimson: '#dc143c', - cyan: '#00ffff', - darkblue: '#00008b', - darkcyan: '#008b8b', - darkgoldenrod: '#b8860b', - darkgray: '#a9a9a9', - darkgreen: '#006400', - darkgrey: '#a9a9a9', - darkkhaki: '#bdb76b', - darkmagenta: '#8b008b', - darkolivegreen: '#556b2f', - darkorange: '#ff8c00', - darkorchid: '#9932cc', - darkred: '#8b0000', - darksalmon: '#e9967a', - darkseagreen: '#8fbc8f', - darkslateblue: '#483d8b', - darkslategray: '#2f4f4f', - darkslategrey: '#2f4f4f', - darkturquoise: '#00ced1', - darkviolet: '#9400d3', - deeppink: '#ff1493', - deepskyblue: '#00bfff', - dimgray: '#696969', - dimgrey: '#696969', - dodgerblue: '#1e90ff', - firebrick: '#b22222', - floralwhite: '#fffaf0', - forestgreen: '#228b22', - fuchsia: '#ff00ff', - gainsboro: '#dcdcdc', - ghostwhite: '#f8f8ff', - gold: '#ffd700', - goldenrod: '#daa520', - gray: '#808080', - green: '#008000', - greenyellow: '#adff2f', - grey: '#808080', - honeydew: '#f0fff0', - hotpink: '#ff69b4', - indianred: '#cd5c5c', - indigo: '#4b0082', - ivory: '#fffff0', - khaki: '#f0e68c', - laserlemon: '#ffff54', - lavender: '#e6e6fa', - lavenderblush: '#fff0f5', - lawngreen: '#7cfc00', - lemonchiffon: '#fffacd', - lightblue: '#add8e6', - lightcoral: '#f08080', - lightcyan: '#e0ffff', - lightgoldenrod: '#fafad2', - lightgoldenrodyellow: '#fafad2', - lightgray: '#d3d3d3', - lightgreen: '#90ee90', - lightgrey: '#d3d3d3', - lightpink: '#ffb6c1', - lightsalmon: '#ffa07a', - lightseagreen: '#20b2aa', - lightskyblue: '#87cefa', - lightslategray: '#778899', - lightslategrey: '#778899', - lightsteelblue: '#b0c4de', - lightyellow: '#ffffe0', - lime: '#00ff00', - limegreen: '#32cd32', - linen: '#faf0e6', - magenta: '#ff00ff', - maroon: '#800000', - maroon2: '#7f0000', - maroon3: '#b03060', - mediumaquamarine: '#66cdaa', - mediumblue: '#0000cd', - mediumorchid: '#ba55d3', - mediumpurple: '#9370db', - mediumseagreen: '#3cb371', - mediumslateblue: '#7b68ee', - mediumspringgreen: '#00fa9a', - mediumturquoise: '#48d1cc', - mediumvioletred: '#c71585', - midnightblue: '#191970', - mintcream: '#f5fffa', - mistyrose: '#ffe4e1', - moccasin: '#ffe4b5', - navajowhite: '#ffdead', - navy: '#000080', - oldlace: '#fdf5e6', - olive: '#808000', - olivedrab: '#6b8e23', - orange: '#ffa500', - orangered: '#ff4500', - orchid: '#da70d6', - palegoldenrod: '#eee8aa', - palegreen: '#98fb98', - paleturquoise: '#afeeee', - palevioletred: '#db7093', - papayawhip: '#ffefd5', - peachpuff: '#ffdab9', - peru: '#cd853f', - pink: '#ffc0cb', - plum: '#dda0dd', - powderblue: '#b0e0e6', - purple: '#800080', - purple2: '#7f007f', - purple3: '#a020f0', - rebeccapurple: '#663399', - red: '#ff0000', - rosybrown: '#bc8f8f', - royalblue: '#4169e1', - saddlebrown: '#8b4513', - salmon: '#fa8072', - sandybrown: '#f4a460', - seagreen: '#2e8b57', - seashell: '#fff5ee', - sienna: '#a0522d', - silver: '#c0c0c0', - skyblue: '#87ceeb', - slateblue: '#6a5acd', - slategray: '#708090', - slategrey: '#708090', - snow: '#fffafa', - springgreen: '#00ff7f', - steelblue: '#4682b4', - tan: '#d2b48c', - teal: '#008080', - thistle: '#d8bfd8', - tomato: '#ff6347', - turquoise: '#40e0d0', - violet: '#ee82ee', - wheat: '#f5deb3', - white: '#ffffff', - whitesmoke: '#f5f5f5', - yellow: '#ffff00', - yellowgreen: '#9acd32' - }; - - Color.prototype.name = function () { - var hex = rgb2hex(this._rgb, 'rgb'); - for (var i = 0, list = Object.keys(w3cx11); i < list.length; i += 1) { - var n = list[i]; - - if (w3cx11[n] === hex) { return n.toLowerCase(); } - } - return hex; - }; - - input.format.named = function (name) { - name = name.toLowerCase(); - if (w3cx11[name]) { return hex2rgb(w3cx11[name]); } - throw new Error('unknown color name: ' + name); - }; - - input.autodetect.push({ - p: 5, - test: function (h) { - var rest = [], len = arguments.length - 1; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; - - if (!rest.length && type(h) === 'string' && w3cx11[h.toLowerCase()]) { - return 'named'; - } - } - }); - - var num2rgb = function (num) { - if (type(num) == 'number' && num >= 0 && num <= 0xffffff) { - var r = num >> 16; - var g = (num >> 8) & 0xff; - var b = num & 0xff; - return [r, g, b, 1]; - } - throw new Error('unknown num color: ' + num); - }; - - var rgb2num = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - return (r << 16) + (g << 8) + b; - }; - - Color.prototype.num = function () { - return rgb2num(this._rgb); - }; - - chroma.num = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['num']) )); - }; - - input.format.num = num2rgb; - - input.autodetect.push({ - p: 5, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if ( - args.length === 1 && - type(args[0]) === 'number' && - args[0] >= 0 && - args[0] <= 0xffffff - ) { - return 'num'; - } - } - }); - - var round$1 = Math.round; - - Color.prototype.rgb = function (rnd) { - if ( rnd === void 0 ) rnd = true; - - if (rnd === false) { return this._rgb.slice(0, 3); } - return this._rgb.slice(0, 3).map(round$1); - }; - - Color.prototype.rgba = function (rnd) { - if ( rnd === void 0 ) rnd = true; - - return this._rgb.slice(0, 4).map(function (v, i) { - return i < 3 ? (rnd === false ? v : round$1(v)) : v; - }); - }; - - chroma.rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['rgb']) )); - }; - - input.format.rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var rgba = unpack(args, 'rgba'); - if (rgba[3] === undefined) { rgba[3] = 1; } - return rgba; - }; - - input.autodetect.push({ - p: 3, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'rgba'); - if ( - type(args) === 'array' && - (args.length === 3 || - (args.length === 4 && - type(args[3]) == 'number' && - args[3] >= 0 && - args[3] <= 1)) - ) { - return 'rgb'; - } - } - }); - - /* - * Based on implementation by Neil Bartlett - * https://github.com/neilbartlett/color-temperature - */ - - var log$1 = Math.log; - - var temperature2rgb = function (kelvin) { - var temp = kelvin / 100; - var r, g, b; - if (temp < 66) { - r = 255; - g = - temp < 6 - ? 0 - : -155.25485562709179 - - 0.44596950469579133 * (g = temp - 2) + - 104.49216199393888 * log$1(g); - b = - temp < 20 - ? 0 - : -254.76935184120902 + - 0.8274096064007395 * (b = temp - 10) + - 115.67994401066147 * log$1(b); - } else { - r = - 351.97690566805693 + - 0.114206453784165 * (r = temp - 55) - - 40.25366309332127 * log$1(r); - g = - 325.4494125711974 + - 0.07943456536662342 * (g = temp - 50) - - 28.0852963507957 * log$1(g); - b = 255; - } - return [r, g, b, 1]; - }; - - /* - * Based on implementation by Neil Bartlett - * https://github.com/neilbartlett/color-temperature - **/ - - var round = Math.round; - - var rgb2temperature = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var rgb = unpack(args, 'rgb'); - var r = rgb[0], - b = rgb[2]; - var minTemp = 1000; - var maxTemp = 40000; - var eps = 0.4; - var temp; - while (maxTemp - minTemp > eps) { - temp = (maxTemp + minTemp) * 0.5; - var rgb$1 = temperature2rgb(temp); - if (rgb$1[2] / rgb$1[0] >= b / r) { - maxTemp = temp; - } else { - minTemp = temp; - } - } - return round(temp); - }; - - Color.prototype.temp = - Color.prototype.kelvin = - Color.prototype.temperature = - function () { - return rgb2temperature(this._rgb); - }; - - chroma.temp = - chroma.kelvin = - chroma.temperature = - function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['temp']) )); - }; - - input.format.temp = - input.format.kelvin = - input.format.temperature = - temperature2rgb; - - var pow$8 = Math.pow; - var sign$1 = Math.sign; - - /* - * L* [0..100] - * a [-100..100] - * b [-100..100] - */ - var oklab2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'lab'); - var L = args[0]; - var a = args[1]; - var b = args[2]; - - var l = pow$8(L + 0.3963377774 * a + 0.2158037573 * b, 3); - var m = pow$8(L - 0.1055613458 * a - 0.0638541728 * b, 3); - var s = pow$8(L - 0.0894841775 * a - 1.291485548 * b, 3); - - return [ - 255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s), - 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s), - 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s), - args.length > 3 ? args[3] : 1 - ]; - }; - - function lrgb2rgb(c) { - var abs = Math.abs(c); - if (abs > 0.0031308) { - return (sign$1(c) || 1) * (1.055 * pow$8(abs, 1 / 2.4) - 0.055); - } - return c * 12.92; - } - - var cbrt = Math.cbrt; - var pow$7 = Math.pow; - var sign = Math.sign; - - var rgb2oklab = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - // OKLab color space implementation taken from - // https://bottosson.github.io/posts/oklab/ - var ref = unpack(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - var ref$1 = [ - rgb2lrgb(r / 255), - rgb2lrgb(g / 255), - rgb2lrgb(b / 255) - ]; - var lr = ref$1[0]; - var lg = ref$1[1]; - var lb = ref$1[2]; - var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb); - var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb); - var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb); - - return [ - 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s, - 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s, - 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s - ]; - }; - - function rgb2lrgb(c) { - var abs = Math.abs(c); - if (abs < 0.04045) { - return c / 12.92; - } - return (sign(c) || 1) * pow$7((abs + 0.055) / 1.055, 2.4); - } - - Color.prototype.oklab = function () { - return rgb2oklab(this._rgb); - }; - - chroma.oklab = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['oklab']) )); - }; - - input.format.oklab = oklab2rgb; - - input.autodetect.push({ - p: 3, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'oklab'); - if (type(args) === 'array' && args.length === 3) { - return 'oklab'; - } - } - }); - - var oklch2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'lch'); - var l = args[0]; - var c = args[1]; - var h = args[2]; - var ref = lch2lab(l, c, h); - var L = ref[0]; - var a = ref[1]; - var b_ = ref[2]; - var ref$1 = oklab2rgb(L, a, b_); - var r = ref$1[0]; - var g = ref$1[1]; - var b = ref$1[2]; - return [r, g, b, args.length > 3 ? args[3] : 1]; - }; - - var rgb2oklch = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - var ref$1 = rgb2oklab(r, g, b); - var l = ref$1[0]; - var a = ref$1[1]; - var b_ = ref$1[2]; - return lab2lch(l, a, b_); - }; - - Color.prototype.oklch = function () { - return rgb2oklch(this._rgb); - }; - - chroma.oklch = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['oklch']) )); - }; - - input.format.oklch = oklch2rgb; - - input.autodetect.push({ - p: 3, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack(args, 'oklch'); - if (type(args) === 'array' && args.length === 3) { - return 'oklch'; - } - } - }); - - Color.prototype.alpha = function (a, mutate) { - if ( mutate === void 0 ) mutate = false; - - if (a !== undefined && type(a) === 'number') { - if (mutate) { - this._rgb[3] = a; - return this; - } - return new Color([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb'); - } - return this._rgb[3]; - }; - - Color.prototype.clipped = function () { - return this._rgb._clipped || false; - }; - - Color.prototype.darken = function (amount) { - if ( amount === void 0 ) amount = 1; - - var me = this; - var lab = me.lab(); - lab[0] -= LAB_CONSTANTS.Kn * amount; - return new Color(lab, 'lab').alpha(me.alpha(), true); - }; - - Color.prototype.brighten = function (amount) { - if ( amount === void 0 ) amount = 1; - - return this.darken(-amount); - }; - - Color.prototype.darker = Color.prototype.darken; - Color.prototype.brighter = Color.prototype.brighten; - - Color.prototype.get = function (mc) { - var ref = mc.split('.'); - var mode = ref[0]; - var channel = ref[1]; - var src = this[mode](); - if (channel) { - var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); - if (i > -1) { return src[i]; } - throw new Error(("unknown channel " + channel + " in mode " + mode)); - } else { - return src; - } - }; - - var pow$6 = Math.pow; - - var EPS = 1e-7; - var MAX_ITER = 20; - - Color.prototype.luminance = function (lum, mode) { - if ( mode === void 0 ) mode = 'rgb'; - - if (lum !== undefined && type(lum) === 'number') { - if (lum === 0) { - // return pure black - return new Color([0, 0, 0, this._rgb[3]], 'rgb'); - } - if (lum === 1) { - // return pure white - return new Color([255, 255, 255, this._rgb[3]], 'rgb'); - } - // compute new color using... - var cur_lum = this.luminance(); - var max_iter = MAX_ITER; - - var test = function (low, high) { - var mid = low.interpolate(high, 0.5, mode); - var lm = mid.luminance(); - if (Math.abs(lum - lm) < EPS || !max_iter--) { - // close enough - return mid; - } - return lm > lum ? test(low, mid) : test(mid, high); - }; - - var rgb = ( - cur_lum > lum - ? test(new Color([0, 0, 0]), this) - : test(this, new Color([255, 255, 255])) - ).rgb(); - return new Color(rgb.concat( [this._rgb[3]])); - } - return rgb2luminance.apply(void 0, this._rgb.slice(0, 3)); - }; - - var rgb2luminance = function (r, g, b) { - // relative luminance - // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef - r = luminance_x(r); - g = luminance_x(g); - b = luminance_x(b); - return 0.2126 * r + 0.7152 * g + 0.0722 * b; - }; - - var luminance_x = function (x) { - x /= 255; - return x <= 0.03928 ? x / 12.92 : pow$6((x + 0.055) / 1.055, 2.4); - }; - - var index = {}; - - function mix (col1, col2, f) { - if ( f === void 0 ) f = 0.5; - var rest = [], len = arguments.length - 3; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ]; - - var mode = rest[0] || 'lrgb'; - if (!index[mode] && !rest.length) { - // fall back to the first supported mode - mode = Object.keys(index)[0]; - } - if (!index[mode]) { - throw new Error(("interpolation mode " + mode + " is not defined")); - } - if (type(col1) !== 'object') { col1 = new Color(col1); } - if (type(col2) !== 'object') { col2 = new Color(col2); } - return index[mode](col1, col2, f).alpha( - col1.alpha() + f * (col2.alpha() - col1.alpha()) - ); - } - - Color.prototype.mix = Color.prototype.interpolate = function ( - col2, - f - ) { - if ( f === void 0 ) f = 0.5; - var rest = [], len = arguments.length - 2; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ]; - - return mix.apply(void 0, [ this, col2, f ].concat( rest )); - }; - - Color.prototype.premultiply = function (mutate) { - if ( mutate === void 0 ) mutate = false; - - var rgb = this._rgb; - var a = rgb[3]; - if (mutate) { - this._rgb = [rgb[0] * a, rgb[1] * a, rgb[2] * a, a]; - return this; - } else { - return new Color([rgb[0] * a, rgb[1] * a, rgb[2] * a, a], 'rgb'); - } - }; - - Color.prototype.saturate = function (amount) { - if ( amount === void 0 ) amount = 1; - - var me = this; - var lch = me.lch(); - lch[1] += LAB_CONSTANTS.Kn * amount; - if (lch[1] < 0) { lch[1] = 0; } - return new Color(lch, 'lch').alpha(me.alpha(), true); - }; - - Color.prototype.desaturate = function (amount) { - if ( amount === void 0 ) amount = 1; - - return this.saturate(-amount); - }; - - Color.prototype.set = function (mc, value, mutate) { - if ( mutate === void 0 ) mutate = false; - - var ref = mc.split('.'); - var mode = ref[0]; - var channel = ref[1]; - var src = this[mode](); - if (channel) { - var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); - if (i > -1) { - if (type(value) == 'string') { - switch (value.charAt(0)) { - case '+': - src[i] += +value; - break; - case '-': - src[i] += +value; - break; - case '*': - src[i] *= +value.substr(1); - break; - case '/': - src[i] /= +value.substr(1); - break; - default: - src[i] = +value; - } - } else if (type(value) === 'number') { - src[i] = value; - } else { - throw new Error("unsupported value for Color.set"); - } - var out = new Color(src, mode); - if (mutate) { - this._rgb = out._rgb; - return this; - } - return out; - } - throw new Error(("unknown channel " + channel + " in mode " + mode)); - } else { - return src; - } - }; - - Color.prototype.tint = function (f) { - if ( f === void 0 ) f = 0.5; - var rest = [], len = arguments.length - 1; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; - - return mix.apply(void 0, [ this, 'white', f ].concat( rest )); - }; - - Color.prototype.shade = function (f) { - if ( f === void 0 ) f = 0.5; - var rest = [], len = arguments.length - 1; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; - - return mix.apply(void 0, [ this, 'black', f ].concat( rest )); - }; - - var rgb = function (col1, col2, f) { - var xyz0 = col1._rgb; - var xyz1 = col2._rgb; - return new Color( - xyz0[0] + f * (xyz1[0] - xyz0[0]), - xyz0[1] + f * (xyz1[1] - xyz0[1]), - xyz0[2] + f * (xyz1[2] - xyz0[2]), - 'rgb' - ); - }; - - // register interpolator - index.rgb = rgb; - - var sqrt$2 = Math.sqrt; - var pow$5 = Math.pow; - - var lrgb = function (col1, col2, f) { - var ref = col1._rgb; - var x1 = ref[0]; - var y1 = ref[1]; - var z1 = ref[2]; - var ref$1 = col2._rgb; - var x2 = ref$1[0]; - var y2 = ref$1[1]; - var z2 = ref$1[2]; - return new Color( - sqrt$2(pow$5(x1, 2) * (1 - f) + pow$5(x2, 2) * f), - sqrt$2(pow$5(y1, 2) * (1 - f) + pow$5(y2, 2) * f), - sqrt$2(pow$5(z1, 2) * (1 - f) + pow$5(z2, 2) * f), - 'rgb' - ); - }; - - // register interpolator - index.lrgb = lrgb; - - var lab = function (col1, col2, f) { - var xyz0 = col1.lab(); - var xyz1 = col2.lab(); - return new Color( - xyz0[0] + f * (xyz1[0] - xyz0[0]), - xyz0[1] + f * (xyz1[1] - xyz0[1]), - xyz0[2] + f * (xyz1[2] - xyz0[2]), - 'lab' - ); - }; - - // register interpolator - index.lab = lab; - - function interpolate_hsx (col1, col2, f, m) { - var assign, assign$1; - - var xyz0, xyz1; - if (m === 'hsl') { - xyz0 = col1.hsl(); - xyz1 = col2.hsl(); - } else if (m === 'hsv') { - xyz0 = col1.hsv(); - xyz1 = col2.hsv(); - } else if (m === 'hcg') { - xyz0 = col1.hcg(); - xyz1 = col2.hcg(); - } else if (m === 'hsi') { - xyz0 = col1.hsi(); - xyz1 = col2.hsi(); - } else if (m === 'lch' || m === 'hcl') { - m = 'hcl'; - xyz0 = col1.hcl(); - xyz1 = col2.hcl(); - } else if (m === 'oklch') { - xyz0 = col1.oklch().reverse(); - xyz1 = col2.oklch().reverse(); - } - - var hue0, hue1, sat0, sat1, lbv0, lbv1; - if (m.substr(0, 1) === 'h' || m === 'oklch') { - (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]); - (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]); - } - - var sat, hue, lbv, dh; - - if (!isNaN(hue0) && !isNaN(hue1)) { - // both colors have hue - if (hue1 > hue0 && hue1 - hue0 > 180) { - dh = hue1 - (hue0 + 360); - } else if (hue1 < hue0 && hue0 - hue1 > 180) { - dh = hue1 + 360 - hue0; - } else { - dh = hue1 - hue0; - } - hue = hue0 + f * dh; - } else if (!isNaN(hue0)) { - hue = hue0; - if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; } - } else if (!isNaN(hue1)) { - hue = hue1; - if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; } - } else { - hue = Number.NaN; - } - - if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); } - lbv = lbv0 + f * (lbv1 - lbv0); - return m === 'oklch' - ? new Color([lbv, sat, hue], m) - : new Color([hue, sat, lbv], m); - } - - var lch = function (col1, col2, f) { - return interpolate_hsx(col1, col2, f, 'lch'); - }; - - // register interpolator - index.lch = lch; - index.hcl = lch; - - var num = function (col1, col2, f) { - var c1 = col1.num(); - var c2 = col2.num(); - return new Color(c1 + f * (c2 - c1), 'num'); - }; - - // register interpolator - index.num = num; - - var hcg = function (col1, col2, f) { - return interpolate_hsx(col1, col2, f, 'hcg'); - }; - - // register interpolator - index.hcg = hcg; - - var hsi = function (col1, col2, f) { - return interpolate_hsx(col1, col2, f, 'hsi'); - }; - - // register interpolator - index.hsi = hsi; - - var hsl = function (col1, col2, f) { - return interpolate_hsx(col1, col2, f, 'hsl'); - }; - - // register interpolator - index.hsl = hsl; - - var hsv = function (col1, col2, f) { - return interpolate_hsx(col1, col2, f, 'hsv'); - }; - - // register interpolator - index.hsv = hsv; - - var oklab = function (col1, col2, f) { - var xyz0 = col1.oklab(); - var xyz1 = col2.oklab(); - return new Color( - xyz0[0] + f * (xyz1[0] - xyz0[0]), - xyz0[1] + f * (xyz1[1] - xyz0[1]), - xyz0[2] + f * (xyz1[2] - xyz0[2]), - 'oklab' - ); - }; - - // register interpolator - index.oklab = oklab; - - var oklch = function (col1, col2, f) { - return interpolate_hsx(col1, col2, f, 'oklch'); - }; - - // register interpolator - index.oklch = oklch; - - var pow$4 = Math.pow; - var sqrt$1 = Math.sqrt; - var PI$1 = Math.PI; - var cos$2 = Math.cos; - var sin$2 = Math.sin; - var atan2$1 = Math.atan2; - - function average (colors, mode, weights) { - if ( mode === void 0 ) mode = 'lrgb'; - if ( weights === void 0 ) weights = null; - - var l = colors.length; - if (!weights) { weights = Array.from(new Array(l)).map(function () { return 1; }); } - // normalize weights - var k = - l / - weights.reduce(function (a, b) { - return a + b; - }); - weights.forEach(function (w, i) { - weights[i] *= k; - }); - // convert colors to Color objects - colors = colors.map(function (c) { return new Color(c); }); - if (mode === 'lrgb') { - return _average_lrgb(colors, weights); - } - var first = colors.shift(); - var xyz = first.get(mode); - var cnt = []; - var dx = 0; - var dy = 0; - // initial color - for (var i = 0; i < xyz.length; i++) { - xyz[i] = (xyz[i] || 0) * weights[0]; - cnt.push(isNaN(xyz[i]) ? 0 : weights[0]); - if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) { - var A = (xyz[i] / 180) * PI$1; - dx += cos$2(A) * weights[0]; - dy += sin$2(A) * weights[0]; - } - } - - var alpha = first.alpha() * weights[0]; - colors.forEach(function (c, ci) { - var xyz2 = c.get(mode); - alpha += c.alpha() * weights[ci + 1]; - for (var i = 0; i < xyz.length; i++) { - if (!isNaN(xyz2[i])) { - cnt[i] += weights[ci + 1]; - if (mode.charAt(i) === 'h') { - var A = (xyz2[i] / 180) * PI$1; - dx += cos$2(A) * weights[ci + 1]; - dy += sin$2(A) * weights[ci + 1]; - } else { - xyz[i] += xyz2[i] * weights[ci + 1]; - } - } - } - }); - - for (var i$1 = 0; i$1 < xyz.length; i$1++) { - if (mode.charAt(i$1) === 'h') { - var A$1 = (atan2$1(dy / cnt[i$1], dx / cnt[i$1]) / PI$1) * 180; - while (A$1 < 0) { A$1 += 360; } - while (A$1 >= 360) { A$1 -= 360; } - xyz[i$1] = A$1; - } else { - xyz[i$1] = xyz[i$1] / cnt[i$1]; - } - } - alpha /= l; - return new Color(xyz, mode).alpha(alpha > 0.99999 ? 1 : alpha, true); - } - var _average_lrgb = function (colors, weights) { - var l = colors.length; - var xyz = [0, 0, 0, 0]; - for (var i = 0; i < colors.length; i++) { - var col = colors[i]; - var f = weights[i] / l; - var rgb = col._rgb; - xyz[0] += pow$4(rgb[0], 2) * f; - xyz[1] += pow$4(rgb[1], 2) * f; - xyz[2] += pow$4(rgb[2], 2) * f; - xyz[3] += rgb[3] * f; - } - xyz[0] = sqrt$1(xyz[0]); - xyz[1] = sqrt$1(xyz[1]); - xyz[2] = sqrt$1(xyz[2]); - if (xyz[3] > 0.9999999) { xyz[3] = 1; } - return new Color(clip_rgb(xyz)); - }; - - // minimal multi-purpose interface - - - var pow$3 = Math.pow; - - function scale (colors) { - // constructor - var _mode = 'rgb'; - var _nacol = chroma('#ccc'); - var _spread = 0; - // const _fixed = false; - var _domain = [0, 1]; - var _pos = []; - var _padding = [0, 0]; - var _classes = false; - var _colors = []; - var _out = false; - var _min = 0; - var _max = 1; - var _correctLightness = false; - var _colorCache = {}; - var _useCache = true; - var _gamma = 1; - - // private methods - - var setColors = function (colors) { - colors = colors || ['#fff', '#000']; - if ( - colors && - type(colors) === 'string' && - chroma.brewer && - chroma.brewer[colors.toLowerCase()] - ) { - colors = chroma.brewer[colors.toLowerCase()]; - } - if (type(colors) === 'array') { - // handle single color - if (colors.length === 1) { - colors = [colors[0], colors[0]]; - } - // make a copy of the colors - colors = colors.slice(0); - // convert to chroma classes - for (var c = 0; c < colors.length; c++) { - colors[c] = chroma(colors[c]); - } - // auto-fill color position - _pos.length = 0; - for (var c$1 = 0; c$1 < colors.length; c$1++) { - _pos.push(c$1 / (colors.length - 1)); - } - } - resetCache(); - return (_colors = colors); - }; - - var getClass = function (value) { - if (_classes != null) { - var n = _classes.length - 1; - var i = 0; - while (i < n && value >= _classes[i]) { - i++; - } - return i - 1; - } - return 0; - }; - - var tMapLightness = function (t) { return t; }; - var tMapDomain = function (t) { return t; }; - - // const classifyValue = function(value) { - // let val = value; - // if (_classes.length > 2) { - // const n = _classes.length-1; - // const i = getClass(value); - // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class - // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class - // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min)); - // } - // return val; - // }; - - var getColor = function (val, bypassMap) { - var col, t; - if (bypassMap == null) { - bypassMap = false; - } - if (isNaN(val) || val === null) { - return _nacol; - } - if (!bypassMap) { - if (_classes && _classes.length > 2) { - // find the class - var c = getClass(val); - t = c / (_classes.length - 2); - } else if (_max !== _min) { - // just interpolate between min/max - t = (val - _min) / (_max - _min); - } else { - t = 1; - } - } else { - t = val; - } - - // domain map - t = tMapDomain(t); - - if (!bypassMap) { - t = tMapLightness(t); // lightness correction - } - - if (_gamma !== 1) { - t = pow$3(t, _gamma); - } - - t = _padding[0] + t * (1 - _padding[0] - _padding[1]); - - t = limit(t, 0, 1); - - var k = Math.floor(t * 10000); - - if (_useCache && _colorCache[k]) { - col = _colorCache[k]; - } else { - if (type(_colors) === 'array') { - //for i in [0.._pos.length-1] - for (var i = 0; i < _pos.length; i++) { - var p = _pos[i]; - if (t <= p) { - col = _colors[i]; - break; - } - if (t >= p && i === _pos.length - 1) { - col = _colors[i]; - break; - } - if (t > p && t < _pos[i + 1]) { - t = (t - p) / (_pos[i + 1] - p); - col = chroma.interpolate( - _colors[i], - _colors[i + 1], - t, - _mode - ); - break; - } - } - } else if (type(_colors) === 'function') { - col = _colors(t); - } - if (_useCache) { - _colorCache[k] = col; - } - } - return col; - }; - - var resetCache = function () { return (_colorCache = {}); }; - - setColors(colors); - - // public interface - - var f = function (v) { - var c = chroma(getColor(v)); - if (_out && c[_out]) { - return c[_out](); - } else { - return c; - } - }; - - f.classes = function (classes) { - if (classes != null) { - if (type(classes) === 'array') { - _classes = classes; - _domain = [classes[0], classes[classes.length - 1]]; - } else { - var d = chroma.analyze(_domain); - if (classes === 0) { - _classes = [d.min, d.max]; - } else { - _classes = chroma.limits(d, 'e', classes); - } - } - return f; - } - return _classes; - }; - - f.domain = function (domain) { - if (!arguments.length) { - return _domain; - } - _min = domain[0]; - _max = domain[domain.length - 1]; - _pos = []; - var k = _colors.length; - if (domain.length === k && _min !== _max) { - // update positions - for (var i = 0, list = Array.from(domain); i < list.length; i += 1) { - var d = list[i]; - - _pos.push((d - _min) / (_max - _min)); - } - } else { - for (var c = 0; c < k; c++) { - _pos.push(c / (k - 1)); - } - if (domain.length > 2) { - // set domain map - var tOut = domain.map(function (d, i) { return i / (domain.length - 1); }); - var tBreaks = domain.map(function (d) { return (d - _min) / (_max - _min); }); - if (!tBreaks.every(function (val, i) { return tOut[i] === val; })) { - tMapDomain = function (t) { - if (t <= 0 || t >= 1) { return t; } - var i = 0; - while (t >= tBreaks[i + 1]) { i++; } - var f = - (t - tBreaks[i]) / (tBreaks[i + 1] - tBreaks[i]); - var out = tOut[i] + f * (tOut[i + 1] - tOut[i]); - return out; - }; - } - } - } - _domain = [_min, _max]; - return f; - }; - - f.mode = function (_m) { - if (!arguments.length) { - return _mode; - } - _mode = _m; - resetCache(); - return f; - }; - - f.range = function (colors, _pos) { - setColors(colors); - return f; - }; - - f.out = function (_o) { - _out = _o; - return f; - }; - - f.spread = function (val) { - if (!arguments.length) { - return _spread; - } - _spread = val; - return f; - }; - - f.correctLightness = function (v) { - if (v == null) { - v = true; - } - _correctLightness = v; - resetCache(); - if (_correctLightness) { - tMapLightness = function (t) { - var L0 = getColor(0, true).lab()[0]; - var L1 = getColor(1, true).lab()[0]; - var pol = L0 > L1; - var L_actual = getColor(t, true).lab()[0]; - var L_ideal = L0 + (L1 - L0) * t; - var L_diff = L_actual - L_ideal; - var t0 = 0; - var t1 = 1; - var max_iter = 20; - while (Math.abs(L_diff) > 1e-2 && max_iter-- > 0) { - (function () { - if (pol) { - L_diff *= -1; - } - if (L_diff < 0) { - t0 = t; - t += (t1 - t) * 0.5; - } else { - t1 = t; - t += (t0 - t) * 0.5; - } - L_actual = getColor(t, true).lab()[0]; - return (L_diff = L_actual - L_ideal); - })(); - } - return t; - }; - } else { - tMapLightness = function (t) { return t; }; - } - return f; - }; - - f.padding = function (p) { - if (p != null) { - if (type(p) === 'number') { - p = [p, p]; - } - _padding = p; - return f; - } else { - return _padding; - } - }; - - f.colors = function (numColors, out) { - // If no arguments are given, return the original colors that were provided - if (arguments.length < 2) { - out = 'hex'; - } - var result = []; - - if (arguments.length === 0) { - result = _colors.slice(0); - } else if (numColors === 1) { - result = [f(0.5)]; - } else if (numColors > 1) { - var dm = _domain[0]; - var dd = _domain[1] - dm; - result = __range__(0, numColors).map(function (i) { return f(dm + (i / (numColors - 1)) * dd); } - ); - } else { - // returns all colors based on the defined classes - colors = []; - var samples = []; - if (_classes && _classes.length > 2) { - for ( - var i = 1, end = _classes.length, asc = 1 <= end; - asc ? i < end : i > end; - asc ? i++ : i-- - ) { - samples.push((_classes[i - 1] + _classes[i]) * 0.5); - } - } else { - samples = _domain; - } - result = samples.map(function (v) { return f(v); }); - } - - if (chroma[out]) { - result = result.map(function (c) { return c[out](); }); - } - return result; - }; - - f.cache = function (c) { - if (c != null) { - _useCache = c; - return f; - } else { - return _useCache; - } - }; - - f.gamma = function (g) { - if (g != null) { - _gamma = g; - return f; - } else { - return _gamma; - } - }; - - f.nodata = function (d) { - if (d != null) { - _nacol = chroma(d); - return f; - } else { - return _nacol; - } - }; - - return f; - } - - function __range__(left, right, inclusive) { - var range = []; - var ascending = left < right; - var end = right ; - for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) { - range.push(i); - } - return range; - } - - // - // interpolates between a set of colors uzing a bezier spline - // - - - // nth row of the pascal triangle - var binom_row = function (n) { - var row = [1, 1]; - for (var i = 1; i < n; i++) { - var newrow = [1]; - for (var j = 1; j <= row.length; j++) { - newrow[j] = (row[j] || 0) + row[j - 1]; - } - row = newrow; - } - return row; - }; - - var bezier = function (colors) { - var assign, assign$1, assign$2; - - var I, lab0, lab1, lab2; - colors = colors.map(function (c) { return new Color(c); }); - if (colors.length === 2) { - // linear interpolation - (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]); - I = function (t) { - var lab = [0, 1, 2].map(function (i) { return lab0[i] + t * (lab1[i] - lab0[i]); }); - return new Color(lab, 'lab'); - }; - } else if (colors.length === 3) { - // quadratic bezier interpolation - (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]); - I = function (t) { - 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]; } - ); - return new Color(lab, 'lab'); - }; - } else if (colors.length === 4) { - // cubic bezier interpolation - var lab3; - (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]); - I = function (t) { - 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]; } - ); - return new Color(lab, 'lab'); - }; - } else if (colors.length >= 5) { - // general case (degree n bezier) - var labs, row, n; - labs = colors.map(function (c) { return c.lab(); }); - n = colors.length - 1; - row = binom_row(n); - I = function (t) { - var u = 1 - t; - 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 - ); } - ); - return new Color(lab, 'lab'); - }; - } else { - throw new RangeError('No point in running bezier with only one color.'); - } - return I; - }; - - function bezier$1 (colors) { - var f = bezier(colors); - f.scale = function () { return scale(f); }; - return f; - } - - /* - * interpolates between a set of colors uzing a bezier spline - * blend mode formulas taken from https://web.archive.org/web/20180110014946/http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/ - */ - - - var blend = function (bottom, top, mode) { - if (!blend[mode]) { - throw new Error('unknown blend mode ' + mode); - } - return blend[mode](bottom, top); - }; - - var blend_f = function (f) { return function (bottom, top) { - var c0 = chroma(top).rgb(); - var c1 = chroma(bottom).rgb(); - return chroma.rgb(f(c0, c1)); - }; }; - - var each = function (f) { return function (c0, c1) { - var out = []; - out[0] = f(c0[0], c1[0]); - out[1] = f(c0[1], c1[1]); - out[2] = f(c0[2], c1[2]); - return out; - }; }; - - var normal = function (a) { return a; }; - var multiply = function (a, b) { return (a * b) / 255; }; - var darken = function (a, b) { return (a > b ? b : a); }; - var lighten = function (a, b) { return (a > b ? a : b); }; - var screen = function (a, b) { return 255 * (1 - (1 - a / 255) * (1 - b / 255)); }; - var overlay = function (a, b) { return b < 128 ? (2 * a * b) / 255 : 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255)); }; - var burn = function (a, b) { return 255 * (1 - (1 - b / 255) / (a / 255)); }; - var dodge = function (a, b) { - if (a === 255) { return 255; } - a = (255 * (b / 255)) / (1 - a / 255); - return a > 255 ? 255 : a; - }; - - // # add = (a,b) -> - // # if (a + b > 255) then 255 else a + b - - blend.normal = blend_f(each(normal)); - blend.multiply = blend_f(each(multiply)); - blend.screen = blend_f(each(screen)); - blend.overlay = blend_f(each(overlay)); - blend.darken = blend_f(each(darken)); - blend.lighten = blend_f(each(lighten)); - blend.dodge = blend_f(each(dodge)); - blend.burn = blend_f(each(burn)); - - // cubehelix interpolation - // based on D.A. Green "A colour scheme for the display of astronomical intensity images" - // http://astron-soc.in/bulletin/11June/289392011.pdf - var pow$2 = Math.pow; - var sin$1 = Math.sin; - var cos$1 = Math.cos; - - function cubehelix ( - start, - rotations, - hue, - gamma, - lightness - ) { - if ( start === void 0 ) start = 300; - if ( rotations === void 0 ) rotations = -1.5; - if ( hue === void 0 ) hue = 1; - if ( gamma === void 0 ) gamma = 1; - if ( lightness === void 0 ) lightness = [0, 1]; - - var dh = 0, - dl; - if (type(lightness) === 'array') { - dl = lightness[1] - lightness[0]; - } else { - dl = 0; - lightness = [lightness, lightness]; - } - var f = function (fract) { - var a = TWOPI * ((start + 120) / 360 + rotations * fract); - var l = pow$2(lightness[0] + dl * fract, gamma); - var h = dh !== 0 ? hue[0] + fract * dh : hue; - var amp = (h * l * (1 - l)) / 2; - var cos_a = cos$1(a); - var sin_a = sin$1(a); - var r = l + amp * (-0.14861 * cos_a + 1.78277 * sin_a); - var g = l + amp * (-0.29227 * cos_a - 0.90649 * sin_a); - var b = l + amp * (+1.97294 * cos_a); - return chroma(clip_rgb([r * 255, g * 255, b * 255, 1])); - }; - f.start = function (s) { - if (s == null) { - return start; - } - start = s; - return f; - }; - f.rotations = function (r) { - if (r == null) { - return rotations; - } - rotations = r; - return f; - }; - f.gamma = function (g) { - if (g == null) { - return gamma; - } - gamma = g; - return f; - }; - f.hue = function (h) { - if (h == null) { - return hue; - } - hue = h; - if (type(hue) === 'array') { - dh = hue[1] - hue[0]; - if (dh === 0) { - hue = hue[1]; - } - } else { - dh = 0; - } - return f; - }; - f.lightness = function (h) { - if (h == null) { - return lightness; - } - if (type(h) === 'array') { - lightness = h; - dl = h[1] - h[0]; - } else { - lightness = [h, h]; - dl = 0; - } - return f; - }; - f.scale = function () { return chroma.scale(f); }; - f.hue(hue); - return f; - } - - var digits = '0123456789abcdef'; - - var floor$1 = Math.floor; - var random = Math.random; - - function random$1 () { - var code = '#'; - for (var i = 0; i < 6; i++) { - code += digits.charAt(floor$1(random() * 16)); - } - return new Color(code, 'hex'); - } - - var log = Math.log; - var pow$1 = Math.pow; - var floor = Math.floor; - var abs$1 = Math.abs; - - function analyze(data, key) { - if ( key === void 0 ) key = null; - - var r = { - min: Number.MAX_VALUE, - max: Number.MAX_VALUE * -1, - sum: 0, - values: [], - count: 0 - }; - if (type(data) === 'object') { - data = Object.values(data); - } - data.forEach(function (val) { - if (key && type(val) === 'object') { val = val[key]; } - if (val !== undefined && val !== null && !isNaN(val)) { - r.values.push(val); - r.sum += val; - if (val < r.min) { r.min = val; } - if (val > r.max) { r.max = val; } - r.count += 1; - } - }); - - r.domain = [r.min, r.max]; - - r.limits = function (mode, num) { return limits(r, mode, num); }; - - return r; - } - - function limits(data, mode, num) { - if ( mode === void 0 ) mode = 'equal'; - if ( num === void 0 ) num = 7; - - if (type(data) == 'array') { - data = analyze(data); - } - var min = data.min; - var max = data.max; - var values = data.values.sort(function (a, b) { return a - b; }); - - if (num === 1) { - return [min, max]; - } - - var limits = []; - - if (mode.substr(0, 1) === 'c') { - // continuous - limits.push(min); - limits.push(max); - } - - if (mode.substr(0, 1) === 'e') { - // equal interval - limits.push(min); - for (var i = 1; i < num; i++) { - limits.push(min + (i / num) * (max - min)); - } - limits.push(max); - } else if (mode.substr(0, 1) === 'l') { - // log scale - if (min <= 0) { - throw new Error( - 'Logarithmic scales are only possible for values > 0' - ); - } - var min_log = Math.LOG10E * log(min); - var max_log = Math.LOG10E * log(max); - limits.push(min); - for (var i$1 = 1; i$1 < num; i$1++) { - limits.push(pow$1(10, min_log + (i$1 / num) * (max_log - min_log))); - } - limits.push(max); - } else if (mode.substr(0, 1) === 'q') { - // quantile scale - limits.push(min); - for (var i$2 = 1; i$2 < num; i$2++) { - var p = ((values.length - 1) * i$2) / num; - var pb = floor(p); - if (pb === p) { - limits.push(values[pb]); - } else { - // p > pb - var pr = p - pb; - limits.push(values[pb] * (1 - pr) + values[pb + 1] * pr); - } - } - limits.push(max); - } else if (mode.substr(0, 1) === 'k') { - // k-means clustering - /* - implementation based on - http://code.google.com/p/figue/source/browse/trunk/figue.js#336 - simplified for 1-d input values - */ - var cluster; - var n = values.length; - var assignments = new Array(n); - var clusterSizes = new Array(num); - var repeat = true; - var nb_iters = 0; - var centroids = null; - - // get seed values - centroids = []; - centroids.push(min); - for (var i$3 = 1; i$3 < num; i$3++) { - centroids.push(min + (i$3 / num) * (max - min)); - } - centroids.push(max); - - while (repeat) { - // assignment step - for (var j = 0; j < num; j++) { - clusterSizes[j] = 0; - } - for (var i$4 = 0; i$4 < n; i$4++) { - var value = values[i$4]; - var mindist = Number.MAX_VALUE; - var best = (void 0); - for (var j$1 = 0; j$1 < num; j$1++) { - var dist = abs$1(centroids[j$1] - value); - if (dist < mindist) { - mindist = dist; - best = j$1; - } - clusterSizes[best]++; - assignments[i$4] = best; - } - } - - // update centroids step - var newCentroids = new Array(num); - for (var j$2 = 0; j$2 < num; j$2++) { - newCentroids[j$2] = null; - } - for (var i$5 = 0; i$5 < n; i$5++) { - cluster = assignments[i$5]; - if (newCentroids[cluster] === null) { - newCentroids[cluster] = values[i$5]; - } else { - newCentroids[cluster] += values[i$5]; - } - } - for (var j$3 = 0; j$3 < num; j$3++) { - newCentroids[j$3] *= 1 / clusterSizes[j$3]; - } - - // check convergence - repeat = false; - for (var j$4 = 0; j$4 < num; j$4++) { - if (newCentroids[j$4] !== centroids[j$4]) { - repeat = true; - break; - } - } - - centroids = newCentroids; - nb_iters++; - - if (nb_iters > 200) { - repeat = false; - } - } - - // finished k-means clustering - // the next part is borrowed from gabrielflor.it - var kClusters = {}; - for (var j$5 = 0; j$5 < num; j$5++) { - kClusters[j$5] = []; - } - for (var i$6 = 0; i$6 < n; i$6++) { - cluster = assignments[i$6]; - kClusters[cluster].push(values[i$6]); - } - var tmpKMeansBreaks = []; - for (var j$6 = 0; j$6 < num; j$6++) { - tmpKMeansBreaks.push(kClusters[j$6][0]); - tmpKMeansBreaks.push(kClusters[j$6][kClusters[j$6].length - 1]); - } - tmpKMeansBreaks = tmpKMeansBreaks.sort(function (a, b) { return a - b; }); - limits.push(tmpKMeansBreaks[0]); - for (var i$7 = 1; i$7 < tmpKMeansBreaks.length; i$7 += 2) { - var v = tmpKMeansBreaks[i$7]; - if (!isNaN(v) && limits.indexOf(v) === -1) { - limits.push(v); - } - } - } - return limits; - } - - function contrast (a, b) { - // WCAG contrast ratio - // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef - a = new Color(a); - b = new Color(b); - var l1 = a.luminance(); - var l2 = b.luminance(); - return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05); - } - - var sqrt = Math.sqrt; - var pow = Math.pow; - var min = Math.min; - var max = Math.max; - var atan2 = Math.atan2; - var abs = Math.abs; - var cos = Math.cos; - var sin = Math.sin; - var exp = Math.exp; - var PI = Math.PI; - - function deltaE (a, b, Kl, Kc, Kh) { - if ( Kl === void 0 ) Kl = 1; - if ( Kc === void 0 ) Kc = 1; - if ( Kh === void 0 ) Kh = 1; - - // Delta E (CIE 2000) - // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html - var rad2deg = function (rad) { - return (360 * rad) / (2 * PI); - }; - var deg2rad = function (deg) { - return (2 * PI * deg) / 360; - }; - a = new Color(a); - b = new Color(b); - var ref = Array.from(a.lab()); - var L1 = ref[0]; - var a1 = ref[1]; - var b1 = ref[2]; - var ref$1 = Array.from(b.lab()); - var L2 = ref$1[0]; - var a2 = ref$1[1]; - var b2 = ref$1[2]; - var avgL = (L1 + L2) / 2; - var C1 = sqrt(pow(a1, 2) + pow(b1, 2)); - var C2 = sqrt(pow(a2, 2) + pow(b2, 2)); - var avgC = (C1 + C2) / 2; - var G = 0.5 * (1 - sqrt(pow(avgC, 7) / (pow(avgC, 7) + pow(25, 7)))); - var a1p = a1 * (1 + G); - var a2p = a2 * (1 + G); - var C1p = sqrt(pow(a1p, 2) + pow(b1, 2)); - var C2p = sqrt(pow(a2p, 2) + pow(b2, 2)); - var avgCp = (C1p + C2p) / 2; - var arctan1 = rad2deg(atan2(b1, a1p)); - var arctan2 = rad2deg(atan2(b2, a2p)); - var h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360; - var h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360; - var avgHp = - abs(h1p - h2p) > 180 ? (h1p + h2p + 360) / 2 : (h1p + h2p) / 2; - 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)); - var deltaHp = h2p - h1p; - deltaHp = - abs(deltaHp) <= 180 - ? deltaHp - : h2p <= h1p - ? deltaHp + 360 - : deltaHp - 360; - deltaHp = 2 * sqrt(C1p * C2p) * sin(deg2rad(deltaHp) / 2); - var deltaL = L2 - L1; - var deltaCp = C2p - C1p; - var sl = 1 + (0.015 * pow(avgL - 50, 2)) / sqrt(20 + pow(avgL - 50, 2)); - var sc = 1 + 0.045 * avgCp; - var sh = 1 + 0.015 * avgCp * T; - var deltaTheta = 30 * exp(-pow((avgHp - 275) / 25, 2)); - var Rc = 2 * sqrt(pow(avgCp, 7) / (pow(avgCp, 7) + pow(25, 7))); - var Rt = -Rc * sin(2 * deg2rad(deltaTheta)); - 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)) - ); - return max(0, min(100, result)); - } - - // simple Euclidean distance - function distance (a, b, mode) { - if ( mode === void 0 ) mode = 'lab'; - - // Delta E (CIE 1976) - // see http://www.brucelindbloom.com/index.html?Equations.html - a = new Color(a); - b = new Color(b); - var l1 = a.get(mode); - var l2 = b.get(mode); - var sum_sq = 0; - for (var i in l1) { - var d = (l1[i] || 0) - (l2[i] || 0); - sum_sq += d * d; - } - return Math.sqrt(sum_sq); - } - - function valid () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - try { - new (Function.prototype.bind.apply( Color, [ null ].concat( args) )); - return true; - // eslint-disable-next-line - } catch (e) { - return false; - } - } - - // some pre-defined color scales: - - var scales = { - cool: function cool() { - return scale([chroma.hsl(180, 1, 0.9), chroma.hsl(250, 0.7, 0.4)]); - }, - hot: function hot() { - return scale(['#000', '#f00', '#ff0', '#fff']).mode( - 'rgb' - ); - } - }; - - /** - ColorBrewer colors for chroma.js - - Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The - Pennsylvania State University. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed - under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. See the License for the - specific language governing permissions and limitations under the License. - */ - - var colorbrewer = { - // sequential - OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'], - PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'], - BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'], - Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'], - BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'], - YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'], - YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'], - Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'], - RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'], - Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'], - YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'], - Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'], - GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'], - Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'], - YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'], - PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'], - Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'], - PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'], - Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'], - - // diverging - Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'], - RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'], - RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'], - PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'], - PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'], - RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'], - BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'], - RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'], - PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'], - - // qualitative - Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'], - Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'], - Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'], - Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'], - Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'], - Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'], - Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'], - Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'] - }; - - // add lowercase aliases for case-insensitive matches - for (var i = 0, list = Object.keys(colorbrewer); i < list.length; i += 1) { - var key = list[i]; - - colorbrewer[key.toLowerCase()] = colorbrewer[key]; - } - - Object.assign(chroma, { - average: average, - bezier: bezier$1, - blend: blend, - cubehelix: cubehelix, - mix: mix, - interpolate: mix, - random: random$1, - scale: scale, - analyze: analyze, - contrast: contrast, - deltaE: deltaE, - distance: distance, - limits: limits, - valid: valid, - scales: scales, - input: input, - colors: w3cx11, - brewer: colorbrewer - }); - - return chroma; - -})); diff --git a/dist/chroma.min.cjs b/dist/chroma.min.cjs deleted file mode 100644 index c86b7a2b..00000000 --- a/dist/chroma.min.cjs +++ /dev/null @@ -1,58 +0,0 @@ -/** - * chroma.js - JavaScript library for color conversions - * - * Copyright (c) 2011-2024, Gregor Aisch - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name Gregor Aisch may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ------------------------------------------------------- - * - * chroma.js includes colors from colorbrewer2.org, which are released under - * the following license: - * - * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, - * and The Pennsylvania State University. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific - * language governing permissions and limitations under the License. - * - * ------------------------------------------------------ - * - * Named colors are taken from X11 Color Names. - * http://www.w3.org/TR/css3-color/#svg-color - * - * @preserve - */ - -!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,(function(){"use strict";function r(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),l(h(e,r),t)}function e(e){e._clipped=!1,e._unclipped=e.slice(0);for(var t=0;t<=3;t++)t<3?((e[t]<0||e[t]>255)&&(e._clipped=!0),e[t]=r(e[t],0,255)):3===t&&(e[t]=r(e[t],0,1));return e}for(var t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n=3?Array.prototype.slice.call(r):"object"==o(r[0])&&e?e.split("").filter((function(e){return void 0!==r[0][e]})).map((function(e){return r[0][e]})):r[0]}function c(r){if(r.length<2)return null;var e=r.length-1;return"string"==o(r[e])?r[e].toLowerCase():null}var i=Math.PI,l=Math.min,h=Math.max,d=2*i,s=i/3,b=i/180,g=180/i,p={format:{},autodetect:[]},v=function(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];var n=this;if("object"===o(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var a=c(r),f=!1;if(!a){f=!0,p.sorted||(p.autodetect=p.autodetect.sort((function(r,e){return e.p-r.p})),p.sorted=!0);for(var u=0,i=p.autodetect;u4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},p.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"cmyk"))&&4===r.length)return"cmyk"}});var w=function(r){return Math.round(100*r)/100},k=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a=(r=u(r,"rgba"))[0],f=r[1],o=r[2],c=l(a/=255,f/=255,o/=255),i=h(a,f,o),d=(i+c)/2;return i===c?(t=0,n=Number.NaN):t=d<.5?(i-c)/(i+c):(i-c)/(2-i-c),a==i?n=(f-o)/(i-c):f==i?n=2+(o-a)/(i-c):o==i&&(n=4+(a-f)/(i-c)),(n*=60)<0&&(n+=360),r.length>3&&void 0!==r[3]?[n,t,d,r[3]]:[n,t,d]},M=Math.round,N=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgba"),n=c(r)||"rgb";return"hsl"==n.substr(0,3)?function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"hsla"),n=c(r)||"lsa";return t[0]=w(t[0]||0),t[1]=w(100*t[1])+"%",t[2]=w(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"}(k(t),n):(t[0]=M(t[0]),t[1]=M(t[1]),t[2]=M(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},_=Math.round,x=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=u(e,"hsl"))[0],c=e[1],i=e[2];if(0===c)n=a=f=255*i;else{var l=[0,0,0],h=[0,0,0],d=i<.5?i*(1+c):i+c-i*c,s=2*i-d,b=o/360;l[0]=b+1/3,l[1]=b,l[2]=b-1/3;for(var g=0;g<3;g++)l[g]<0&&(l[g]+=1),l[g]>1&&(l[g]-=1),6*l[g]<1?h[g]=s+6*(d-s)*l[g]:2*l[g]<1?h[g]=d:3*l[g]<2?h[g]=s+(d-s)*(2/3-l[g])*6:h[g]=s;n=(r=[_(255*h[0]),_(255*h[1]),_(255*h[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},A=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,F=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,E=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,j=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,q=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,L=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,O=Math.round,P=function(r){var e;if(r=r.toLowerCase().trim(),p.format.named)try{return p.format.named(r)}catch(r){}if(e=r.match(A)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];return t[3]=1,t}if(e=r.match(F)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(E)){for(var o=e.slice(1,4),u=0;u<3;u++)o[u]=O(2.55*o[u]);return o[3]=1,o}if(e=r.match(j)){for(var c=e.slice(1,5),i=0;i<3;i++)c[i]=O(2.55*c[i]);return c[3]=+c[3],c}if(e=r.match(q)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var h=x(l);return h[3]=1,h}if(e=r.match(L)){var d=e.slice(1,4);d[1]*=.01,d[2]*=.01;var s=x(d);return s[3]=+e[4],s}};P.test=function(r){return A.test(r)||F.test(r)||E.test(r)||j.test(r)||q.test(r)||L.test(r)},v.prototype.css=function(r){return N(this._rgb,r)},m.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["css"])))},p.format.css=P,p.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===o(r)&&P.test(r))return"css"}}),p.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},m.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["gl"])))},v.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var G=Math.floor;v.prototype.hcg=function(){return function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=u(r,"rgb"),a=n[0],f=n[1],o=n[2],c=l(a,f,o),i=h(a,f,o),d=i-c,s=100*d/255,b=c/(255-d)*100;return 0===d?t=Number.NaN:(a===i&&(t=(f-o)/d),f===i&&(t=2+(o-a)/d),o===i&&(t=4+(a-f)/d),(t*=60)<0&&(t+=360)),[t,s,b]}(this._rgb)},m.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["hcg"])))},p.format.hcg=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var i,l,h,d=(o=u(o,"hcg"))[0],s=o[1],b=o[2];b*=255;var g=255*s;if(0===s)i=l=h=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=G(d/=60),v=d-p,m=b*(1-s),y=m+g*(1-v),w=m+g*v,k=m+g;switch(p){case 0:i=(r=[k,w,m])[0],l=r[1],h=r[2];break;case 1:i=(e=[y,k,m])[0],l=e[1],h=e[2];break;case 2:i=(t=[m,k,w])[0],l=t[1],h=t[2];break;case 3:i=(n=[m,y,k])[0],l=n[1],h=n[2];break;case 4:i=(a=[w,m,k])[0],l=a[1],h=a[2];break;case 5:i=(f=[k,m,y])[0],l=f[1],h=f[2]}}return[i,l,h,o.length>3?o[3]:1]},p.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"hcg"))&&3===r.length)return"hcg"}});var B=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,C=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,R=function(r){if(r.match(B)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(C)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex color: "+r)},S=Math.round,$=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],i=c(r)||"auto";void 0===o&&(o=1),"auto"===i&&(i=o<1?"rgba":"rgb");var l="000000"+((n=S(n))<<16|(a=S(a))<<8|(f=S(f))).toString(16);l=l.substr(l.length-6);var h="0"+S(255*o).toString(16);switch(h=h.substr(h.length-2),i.toLowerCase()){case"rgba":return"#"+l+h;case"argb":return"#"+h+l;default:return"#"+l}};v.prototype.hex=function(r){return $(this._rgb,r)},m.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["hex"])))},p.format.hex=R,p.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===o(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Y=Math.cos,z=Math.min,I=Math.sqrt,U=Math.acos;v.prototype.hsi=function(){return function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=u(r,"rgb"),a=n[0],f=n[1],o=n[2],c=z(a/=255,f/=255,o/=255),i=(a+f+o)/3,l=i>0?1-c/i:0;return 0===l?t=NaN:(t=(a-f+(a-o))/2,t/=I((a-f)*(a-f)+(a-o)*(f-o)),t=U(t),o>f&&(t=d-t),t/=d),[360*t,l,i]}(this._rgb)},m.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["hsi"])))},p.format.hsi=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=u(e,"hsi"))[0],c=e[1],i=e[2];return isNaN(o)&&(o=0),isNaN(c)&&(c=0),o>360&&(o-=360),o<0&&(o+=360),(o/=360)<1/3?a=1-((f=(1-c)/3)+(n=(1+c*Y(d*o)/Y(s-d*o))/3)):o<2/3?f=1-((n=(1-c)/3)+(a=(1+c*Y(d*(o-=1/3))/Y(s-d*o))/3)):n=1-((a=(1-c)/3)+(f=(1+c*Y(d*(o-=2/3))/Y(s-d*o))/3)),[255*(n=r(i*n*3)),255*(a=r(i*a*3)),255*(f=r(i*f*3)),e.length>3?e[3]:1]},p.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"hsi"))&&3===r.length)return"hsi"}}),v.prototype.hsl=function(){return k(this._rgb)},m.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["hsl"])))},p.format.hsl=x,p.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"hsl"))&&3===r.length)return"hsl"}});var V=Math.floor,X=Math.min,D=Math.max;v.prototype.hsv=function(){return function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=u(r,"rgb"))[0],o=r[1],c=r[2],i=X(f,o,c),l=D(f,o,c),h=l-i;return a=l/255,0===l?(t=Number.NaN,n=0):(n=h/l,f===l&&(t=(o-c)/h),o===l&&(t=2+(c-f)/h),c===l&&(t=4+(f-o)/h),(t*=60)<0&&(t+=360)),[t,n,a]}(this._rgb)},m.hsv=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["hsv"])))},p.format.hsv=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var i,l,h,d=(o=u(o,"hsv"))[0],s=o[1],b=o[2];if(b*=255,0===s)i=l=h=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var g=V(d/=60),p=d-g,v=b*(1-s),m=b*(1-s*p),y=b*(1-s*(1-p));switch(g){case 0:i=(r=[b,y,v])[0],l=r[1],h=r[2];break;case 1:i=(e=[m,b,v])[0],l=e[1],h=e[2];break;case 2:i=(t=[v,b,y])[0],l=t[1],h=t[2];break;case 3:i=(n=[v,m,b])[0],l=n[1],h=n[2];break;case 4:i=(a=[y,v,b])[0],l=a[1],h=a[2];break;case 5:i=(f=[b,v,m])[0],l=f[1],h=f[2]}}return[i,l,h,o.length>3?o[3]:1]},p.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"hsv"))&&3===r.length)return"hsv"}});var T=18,H=.95047,J=1,K=1.08883,Q=.137931034,W=.206896552,Z=.12841855,rr=.008856452,er=Math.pow,tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=u(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=J*ar(n),t=H*ar(t),a=K*ar(a),[nr(3.2404542*t-1.5371385*n-.4985314*a),nr(-.969266*t+1.8760108*n+.041556*a),nr(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},nr=function(r){return 255*(r<=.00304?12.92*r:1.055*er(r,1/2.4)-.055)},ar=function(r){return r>W?r*r*r:Z*(r-Q)},fr=Math.pow,or=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgb"),n=t[0],a=t[1],f=t[2],o=ir(n,a,f),c=o[0],i=o[1],l=116*i-16;return[l<0?0:l,500*(c-i),200*(i-o[2])]},ur=function(r){return(r/=255)<=.04045?r/12.92:fr((r+.055)/1.055,2.4)},cr=function(r){return r>rr?fr(r,1/3):r/Z+Q},ir=function(r,e,t){return r=ur(r),e=ur(e),t=ur(t),[cr((.4124564*r+.3575761*e+.1804375*t)/H),cr((.2126729*r+.7151522*e+.072175*t)/J),cr((.0193339*r+.119192*e+.9503041*t)/K)]};v.prototype.lab=function(){return or(this._rgb)},m.lab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["lab"])))},p.format.lab=tr,p.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"lab"))&&3===r.length)return"lab"}});var lr=Math.sin,hr=Math.cos,dr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,hr(f*=b)*a,lr(f)*a]},sr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=u(r,"lch"))[0],n=r[1],a=r[2],f=dr(t,n,a),o=f[0],c=f[1],i=f[2],l=tr(o,c,i);return[l[0],l[1],l[2],r.length>3?r[3]:1]},br=Math.sqrt,gr=Math.atan2,pr=Math.round,vr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"lab"),n=t[0],a=t[1],f=t[2],o=br(a*a+f*f),c=(gr(f,a)*g+360)%360;return 0===pr(1e4*o)&&(c=Number.NaN),[n,o,c]},mr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgb"),n=t[0],a=t[1],f=t[2],o=or(n,a,f),c=o[0],i=o[1],l=o[2];return vr(c,i,l)};v.prototype.lch=function(){return mr(this._rgb)},v.prototype.hcl=function(){return mr(this._rgb).reverse()},m.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["lch"])))},m.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["hcl"])))},p.format.lch=sr,p.format.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"hcl").reverse();return sr.apply(void 0,t)},["lch","hcl"].forEach((function(r){return p.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if("array"===o(e=u(e,r))&&3===e.length)return r}})}));var yr={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};v.prototype.name=function(){for(var r=$(this._rgb,"rgb"),e=0,t=Object.keys(yr);e0;)e[t]=arguments[t+1];if(!e.length&&"string"===o(r)&&yr[r.toLowerCase()])return"named"}});v.prototype.num=function(){return function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]}(this._rgb)},m.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["num"])))},p.format.num=function(r){if("number"==o(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},p.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===o(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var wr=Math.round;v.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(wr)},v.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map((function(e,t){return t<3?!1===r?e:wr(e):e}))},m.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["rgb"])))},p.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgba");return void 0===t[3]&&(t[3]=1),t},p.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"rgba"))&&(3===r.length||4===r.length&&"number"==o(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var kr=Math.log,Mr=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*kr(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*kr(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-40.25366309332127*kr(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*kr(t),n=255),[e,t,n,1]},Nr=Math.round;v.prototype.temp=v.prototype.kelvin=v.prototype.temperature=function(){return function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=u(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var i=Mr(t=.5*(c+o));i[2]/i[0]>=f/a?c=t:o=t}return Nr(t)}(this._rgb)},m.temp=m.kelvin=m.temperature=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["temp"])))},p.format.temp=p.format.kelvin=p.format.temperature=Mr;var _r=Math.pow,xr=Math.sign,Ar=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=u(r,"lab"))[0],n=r[1],a=r[2],f=_r(t+.3963377774*n+.2158037573*a,3),o=_r(t-.1055613458*n-.0638541728*a,3),c=_r(t-.0894841775*n-1.291485548*a,3);return[255*Fr(4.0767416621*f-3.3077115913*o+.2309699292*c),255*Fr(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Fr(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Fr(r){var e=Math.abs(r);return e>.0031308?(xr(r)||1)*(1.055*_r(e,1/2.4)-.055):12.92*r}var Er=Math.cbrt,jr=Math.pow,qr=Math.sign,Lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[Or(n/255),Or(a/255),Or(f/255)],c=o[0],i=o[1],l=o[2],h=Er(.4122214708*c+.5363325363*i+.0514459929*l),d=Er(.2119034982*c+.6806995451*i+.1073969566*l),s=Er(.0883024619*c+.2817188376*i+.6299787005*l);return[.2104542553*h+.793617785*d-.0040720468*s,1.9779984951*h-2.428592205*d+.4505937099*s,.0259040371*h+.7827717662*d-.808675766*s]};function Or(r){var e=Math.abs(r);return e<.04045?r/12.92:(qr(r)||1)*jr((e+.055)/1.055,2.4)}v.prototype.oklab=function(){return Lr(this._rgb)},m.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["oklab"])))},p.format.oklab=Ar,p.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"oklab"))&&3===r.length)return"oklab"}});v.prototype.oklch=function(){return function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgb"),n=t[0],a=t[1],f=t[2],o=Lr(n,a,f),c=o[0],i=o[1],l=o[2];return vr(c,i,l)}(this._rgb)},m.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["oklch"])))},p.format.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=u(r,"lch"))[0],n=r[1],a=r[2],f=dr(t,n,a),o=f[0],c=f[1],i=f[2],l=Ar(o,c,i);return[l[0],l[1],l[2],r.length>3?r[3]:1]},p.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"oklch"))&&3===r.length)return"oklch"}}),v.prototype.alpha=function(r,e){return void 0===e&&(e=!1),void 0!==r&&"number"===o(r)?e?(this._rgb[3]=r,this):new v([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1},v.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=T*r,new v(e,"lab").alpha(this.alpha(),!0)},v.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},v.prototype.darker=v.prototype.darken,v.prototype.brighter=v.prototype.brighten,v.prototype.get=function(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var Pr=Math.pow;v.prototype.luminance=function(r,e){if(void 0===e&&(e="rgb"),void 0!==r&&"number"===o(r)){if(0===r)return new v([0,0,0,this._rgb[3]],"rgb");if(1===r)return new v([255,255,255,this._rgb[3]],"rgb");var t=this.luminance(),n=20,a=function(t,f){var o=t.interpolate(f,.5,e),u=o.luminance();return Math.abs(r-u)<1e-7||!n--?o:u>r?a(t,o):a(o,f)},f=(t>r?a(new v([0,0,0]),this):a(this,new v([255,255,255]))).rgb();return new v(f.concat([this._rgb[3]]))}return Gr.apply(void 0,this._rgb.slice(0,3))};var Gr=function(r,e,t){return.2126*(r=Br(r))+.7152*(e=Br(e))+.0722*(t=Br(t))},Br=function(r){return(r/=255)<=.03928?r/12.92:Pr((r+.055)/1.055,2.4)},Cr={};function Rr(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(Cr[f]||n.length||(f=Object.keys(Cr)[0]),!Cr[f])throw new Error("interpolation mode "+f+" is not defined");return"object"!==o(r)&&(r=new v(r)),"object"!==o(e)&&(e=new v(e)),Cr[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))}v.prototype.mix=v.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rr.apply(void 0,[this,r,e].concat(t))},v.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new v([e[0]*t,e[1]*t,e[2]*t,t],"rgb")},v.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=T*r,e[1]<0&&(e[1]=0),new v(e,"lch").alpha(this.alpha(),!0)},v.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)},v.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],u=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==o(e))switch(e.charAt(0)){case"+":case"-":u[c]+=+e;break;case"*":u[c]*=+e.substr(1);break;case"/":u[c]/=+e.substr(1);break;default:u[c]=+e}else{if("number"!==o(e))throw new Error("unsupported value for Color.set");u[c]=e}var i=new v(u,a);return t?(this._rgb=i._rgb,this):i}throw new Error("unknown channel "+f+" in mode "+a)}return u},v.prototype.tint=function(r){void 0===r&&(r=.5);for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];return Rr.apply(void 0,[this,"white",r].concat(e))},v.prototype.shade=function(r){void 0===r&&(r=.5);for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];return Rr.apply(void 0,[this,"black",r].concat(e))};Cr.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new v(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var Sr=Math.sqrt,$r=Math.pow;Cr.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],u=e._rgb,c=u[0],i=u[1],l=u[2];return new v(Sr($r(a,2)*(1-t)+$r(c,2)*t),Sr($r(f,2)*(1-t)+$r(i,2)*t),Sr($r(o,2)*(1-t)+$r(l,2)*t),"rgb")};function Yr(r,e,t,n){var a,f,o,u,c,i,l,h,d,s,b,g,p;return"hsl"===n?(o=r.hsl(),u=e.hsl()):"hsv"===n?(o=r.hsv(),u=e.hsv()):"hcg"===n?(o=r.hcg(),u=e.hcg()):"hsi"===n?(o=r.hsi(),u=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),u=e.hcl()):"oklch"===n&&(o=r.oklch().reverse(),u=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(c=(a=o)[0],l=a[1],d=a[2],i=(f=u)[0],h=f[1],s=f[2]),isNaN(c)||isNaN(i)?isNaN(c)?isNaN(i)?g=Number.NaN:(g=i,1!=d&&0!=d||"hsv"==n||(b=h)):(g=c,1!=s&&0!=s||"hsv"==n||(b=l)):g=c+t*(i>c&&i-c>180?i-(c+360):i180?i+360-c:i-c),void 0===b&&(b=l+t*(h-l)),p=d+t*(s-d),new v("oklch"===n?[p,b,g]:[g,b,p],n)}Cr.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new v(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var zr=function(r,e,t){return Yr(r,e,t,"lch")};Cr.lch=zr,Cr.hcl=zr;Cr.num=function(r,e,t){var n=r.num(),a=e.num();return new v(n+t*(a-n),"num")};Cr.hcg=function(r,e,t){return Yr(r,e,t,"hcg")};Cr.hsi=function(r,e,t){return Yr(r,e,t,"hsi")};Cr.hsl=function(r,e,t){return Yr(r,e,t,"hsl")};Cr.hsv=function(r,e,t){return Yr(r,e,t,"hsv")};Cr.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new v(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};Cr.oklch=function(r,e,t){return Yr(r,e,t,"oklch")};var Ir=Math.pow,Ur=Math.sqrt,Vr=Math.PI,Xr=Math.cos,Dr=Math.sin,Tr=Math.atan2;var Hr=function(r,t){for(var n=r.length,a=[0,0,0,0],f=0;f.9999999&&(a[3]=1),new v(e(a))},Jr=Math.pow;function Kr(e){var t="rgb",n=m("#ccc"),a=0,f=[0,1],u=[],c=[0,0],i=!1,l=[],h=!1,d=0,s=1,b=!1,g={},p=!0,v=1,y=function(r){if((r=r||["#fff","#000"])&&"string"===o(r)&&m.brewer&&m.brewer[r.toLowerCase()]&&(r=m.brewer[r.toLowerCase()]),"array"===o(r)){1===r.length&&(r=[r[0],r[0]]),r=r.slice(0);for(var e=0;e2){var b=function(r){if(null!=i){for(var e=i.length-1,t=0;t=i[t];)t++;return t-1}return 0}(e);h=b/(i.length-2)}else h=s!==d?(e-d)/(s-d):1;h=k(h),a||(h=w(h)),1!==v&&(h=Jr(h,v)),h=r(h=c[0]+h*(1-c[0]-c[1]),0,1);var y=Math.floor(1e4*h);if(p&&g[y])f=g[y];else{if("array"===o(l))for(var M=0;M=N&&M===u.length-1){f=l[M];break}if(h>N&&h2){var c=r.map((function(e,t){return t/(r.length-1)})),i=r.map((function(r){return(r-d)/(s-d)}));i.every((function(r,e){return c[e]===r}))||(k=function(r){if(r<=0||r>=1)return r;for(var e=0;r>=i[e+1];)e++;var t=(r-i[e])/(i[e+1]-i[e]);return c[e]+t*(c[e+1]-c[e])})}}return f=[d,s],_},_.mode=function(r){return arguments.length?(t=r,N(),_):t},_.range=function(r,e){return y(r),_},_.out=function(r){return h=r,_},_.spread=function(r){return arguments.length?(a=r,_):a},_.correctLightness=function(r){return null==r&&(r=!0),b=r,N(),w=b?function(r){for(var e=M(0,!0).lab()[0],t=M(1,!0).lab()[0],n=e>t,a=M(r,!0).lab()[0],f=e+(t-e)*r,o=a-f,u=0,c=1,i=20;Math.abs(o)>.01&&i-- >0;)n&&(o*=-1),o<0?(u=r,r+=.5*(c-r)):(c=r,r+=.5*(u-r)),a=M(r,!0).lab()[0],o=a-f;return r}:function(r){return r},_},_.padding=function(r){return null!=r?("number"===o(r)&&(r=[r,r]),c=r,_):c},_.colors=function(r,t){arguments.length<2&&(t="hex");var n=[];if(0===arguments.length)n=l.slice(0);else if(1===r)n=[_(.5)];else if(r>1){var a=f[0],o=f[1]-a;n=function(r,e){for(var t=[],n=ra;n?f++:f--)t.push(f);return t}(0,r).map((function(e){return _(a+e/(r-1)*o)}))}else{e=[];var u=[];if(i&&i.length>2)for(var c=1,h=i.length,d=1<=h;d?ch;d?c++:c--)u.push(.5*(i[c-1]+i[c]));else u=f;n=u.map((function(r){return _(r)}))}return m[t]&&(n=n.map((function(r){return r[t]()}))),n},_.cache=function(r){return null!=r?(p=r,_):p},_.gamma=function(r){return null!=r?(v=r,_):v},_.nodata=function(r){return null!=r?(n=m(r),_):n},_}var Qr=function(r,e,t){if(!Qr[t])throw new Error("unknown blend mode "+t);return Qr[t](r,e)},Wr=function(r){return function(e,t){var n=m(t).rgb(),a=m(e).rgb();return m.rgb(r(n,a))}},Zr=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Qr.normal=Wr(Zr((function(r){return r}))),Qr.multiply=Wr(Zr((function(r,e){return r*e/255}))),Qr.screen=Wr(Zr((function(r,e){return 255*(1-(1-r/255)*(1-e/255))}))),Qr.overlay=Wr(Zr((function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-e/255))}))),Qr.darken=Wr(Zr((function(r,e){return r>e?e:r}))),Qr.lighten=Wr(Zr((function(r,e){return r>e?r:e}))),Qr.dodge=Wr(Zr((function(r,e){return 255===r||(r=e/255*255/(1-r/255))>255?255:r}))),Qr.burn=Wr(Zr((function(r,e){return 255*(1-(1-e/255)/(r/255))})));var re=Math.pow,ee=Math.sin,te=Math.cos;var ne=Math.floor,ae=Math.random;var fe=Math.log,oe=Math.pow,ue=Math.floor,ce=Math.abs;function ie(r,e){void 0===e&&(e=null);var t={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0};return"object"===o(r)&&(r=Object.values(r)),r.forEach((function(r){e&&"object"===o(r)&&(r=r[e]),null==r||isNaN(r)||(t.values.push(r),t.sum+=r,rt.max&&(t.max=r),t.count+=1)})),t.domain=[t.min,t.max],t.limits=function(r,e){return le(t,r,e)},t}function le(r,e,t){void 0===e&&(e="equal"),void 0===t&&(t=7),"array"==o(r)&&(r=ie(r));var n=r.min,a=r.max,f=r.values.sort((function(r,e){return r-e}));if(1===t)return[n,a];var u=[];if("c"===e.substr(0,1)&&(u.push(n),u.push(a)),"e"===e.substr(0,1)){u.push(n);for(var c=1;c 0");var i=Math.LOG10E*fe(n),l=Math.LOG10E*fe(a);u.push(n);for(var h=1;h200&&(w=!1)}for(var C={},R=0;R=360;)b-=360;o[s]=b}else o[s]=o[s]/u[s];return d/=n,new v(o,e).alpha(d>.99999?1:d,!0)},bezier:function(r){var e=function(r){var e,t,n,a,f,o,u;if(2===(r=r.map((function(r){return new v(r)}))).length)e=r.map((function(r){return r.lab()})),f=e[0],o=e[1],a=function(r){var e=[0,1,2].map((function(e){return f[e]+r*(o[e]-f[e])}));return new v(e,"lab")};else if(3===r.length)t=r.map((function(r){return r.lab()})),f=t[0],o=t[1],u=t[2],a=function(r){var e=[0,1,2].map((function(e){return(1-r)*(1-r)*f[e]+2*(1-r)*r*o[e]+r*r*u[e]}));return new v(e,"lab")};else if(4===r.length){var c;n=r.map((function(r){return r.lab()})),f=n[0],o=n[1],u=n[2],c=n[3],a=function(r){var e=[0,1,2].map((function(e){return(1-r)*(1-r)*(1-r)*f[e]+3*(1-r)*(1-r)*r*o[e]+3*(1-r)*r*r*u[e]+r*r*r*c[e]}));return new v(e,"lab")}}else{if(!(r.length>=5))throw new RangeError("No point in running bezier with only one color.");var i,l,h;i=r.map((function(r){return r.lab()})),h=r.length-1,l=function(r){for(var e=[1,1],t=1;tn?(t+.05)/(n+.05):(n+.05)/(t+.05)},deltaE:function(r,e,t,n,a){void 0===t&&(t=1),void 0===n&&(n=1),void 0===a&&(a=1);var f=function(r){return 360*r/(2*we)},o=function(r){return 2*we*r/360};r=new v(r),e=new v(e);var u=Array.from(r.lab()),c=u[0],i=u[1],l=u[2],h=Array.from(e.lab()),d=h[0],s=h[1],b=h[2],g=(c+d)/2,p=(he(de(i,2)+de(l,2))+he(de(s,2)+de(b,2)))/2,m=.5*(1-he(de(p,7)/(de(p,7)+de(25,7)))),y=i*(1+m),w=s*(1+m),k=he(de(y,2)+de(l,2)),M=he(de(w,2)+de(b,2)),N=(k+M)/2,_=f(ge(l,y)),x=f(ge(b,w)),A=_>=0?_:_+360,F=x>=0?x:x+360,E=pe(A-F)>180?(A+F+360)/2:(A+F)/2,j=1-.17*ve(o(E-30))+.24*ve(o(2*E))+.32*ve(o(3*E+6))-.2*ve(o(4*E-63)),q=F-A;q=pe(q)<=180?q:F<=A?q+360:q-360,q=2*he(k*M)*me(o(q)/2);var L=d-c,O=M-k,P=1+.015*de(g-50,2)/he(20+de(g-50,2)),G=1+.045*N,B=1+.015*N*j,C=30*ye(-de((E-275)/25,2)),R=-(2*he(de(N,7)/(de(N,7)+de(25,7))))*me(2*o(C)),S=he(de(L/(t*P),2)+de(O/(n*G),2)+de(q/(a*B),2)+R*(O/(n*G))*(q/(a*B)));return be(0,se(100,S))},distance:function(r,e,t){void 0===t&&(t="lab"),r=new v(r),e=new v(e);var n=r.get(t),a=e.get(t),f=0;for(var o in n){var u=(n[o]||0)-(a[o]||0);f+=u*u}return Math.sqrt(f)},limits:le,valid:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];try{return new(Function.prototype.bind.apply(v,[null].concat(r))),!0}catch(r){return!1}},scales:ke,input:p,colors:yr,brewer:Me}),m})); diff --git a/index-light.js b/index-light.js index c1539739..3cefad43 100644 --- a/index-light.js +++ b/index-light.js @@ -24,9 +24,11 @@ import './src/interpolator/lrgb.js'; import './src/interpolator/oklab.js'; // generators -- > create new colors -chroma.mix = chroma.interpolate = require('./src/generator/mix'); +import mix from './src/generator/mix'; +chroma.mix = chroma.interpolate = mix; // other utility methods -chroma.valid = require('./src/utils/valid'); +import valid from './src/utils/valid'; +chroma.valid = valid; -module.exports = chroma; +export default chroma; diff --git a/package.json b/package.json index 99f977c2..ee01cb72 100644 --- a/package.json +++ b/package.json @@ -22,18 +22,25 @@ }, "exports": { ".": { - "import": "./index.js", - "require": "./dist/chroma.cjs" + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "./index-light": { + "import": "./dist/index-light.js", + "require": "./dist/index-light.cjs" } }, - "main": "./index.js", + "main": "./dist/index.js", + "files": [ + "dist" + ], "scripts": { "prepublishOnly": "npm test -- --run && node .bin/update-version.cjs && npm run build", - "build": "rollup -c && cross-env DEV=1 rollup -c ", + "build": "tsup", "docs": "cd docs && make", "docs-preview": "cd docs && make && make preview", - "test": "vitest test/*.js", - "test:old": "vows --dot-matrix test/*.cjs", + "test": "vitest", + "test:update": "vitest -u", "lint": "prettier --check index.js index-light.js src *.config.js test && eslint index.js index-light.js src", "format": "prettier --write index.js index-light.js src *.config.js test", "prepare": "husky" @@ -45,7 +52,7 @@ "@rollup/plugin-buble": "^1.0.3", "@rollup/plugin-terser": "^0.4.4", "cross-env": "^7.0.3", - "es6-shim": "^0.35.8", + "esbuild-plugin-license": "^1.2.2", "eslint": "^9.8.0", "globals": "^15.8.0", "http-server": "^14.1.1", @@ -56,7 +63,7 @@ "rollup": "^4.19.1", "rollup-plugin-license": "^3.5.2", "vitest": "^2.0.4", - "vows": "^0.8.3" + "tsup": "^8.2.3" }, "license": "(BSD-3-Clause AND Apache-2.0)", "spm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5f6e2bef..5cbae7a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,9 +26,9 @@ importers: cross-env: specifier: ^7.0.3 version: 7.0.3 - es6-shim: - specifier: ^0.35.8 - version: 0.35.8 + esbuild-plugin-license: + specifier: ^1.2.2 + version: 1.2.2(esbuild@0.23.0) eslint: specifier: ^9.8.0 version: 9.8.0 @@ -56,12 +56,12 @@ importers: rollup-plugin-license: specifier: ^3.5.2 version: 3.5.2(rollup@4.19.1) + tsup: + specifier: ^8.2.3 + version: 8.2.3(postcss@8.4.40) vitest: specifier: ^2.0.4 version: 2.0.4(terser@5.31.3) - vows: - specifier: ^0.8.3 - version: 0.8.3 packages: @@ -153,138 +153,282 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.23.0': + resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.23.0': + resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.23.0': + resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.23.0': + resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.23.0': + resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.23.0': + resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.23.0': + resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.23.0': + resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.23.0': + resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.23.0': + resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.23.0': + resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.23.0': + resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.23.0': + resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.23.0': + resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.23.0': + resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.23.0': + resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.23.0': + resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.23.0': + resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.0': + resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.23.0': + resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.23.0': + resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.23.0': + resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.23.0': + resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.23.0': + resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -319,6 +463,10 @@ packages: resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} engines: {node: '>=18.18'} + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -355,6 +503,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@rollup/plugin-buble@1.0.3': resolution: {integrity: sha512-QYD9BKkJoof0FdCFeSYYhF6/Y8e0Mnf+098xGgmWOFJ4UPHlWujjqOYeVwEm2hJPOmlR5k7HPUdAjqtOWhN64Q==} engines: {node: '>=14.0.0'} @@ -406,46 +558,55 @@ packages: resolution: {integrity: sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.19.1': resolution: {integrity: sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.19.1': resolution: {integrity: sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.19.1': resolution: {integrity: sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': resolution: {integrity: sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.19.1': resolution: {integrity: sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-s390x-gnu@4.19.1': resolution: {integrity: sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.19.1': resolution: {integrity: sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.19.1': resolution: {integrity: sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.19.1': resolution: {integrity: sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA==} @@ -514,6 +675,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -522,6 +687,17 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -529,6 +705,10 @@ packages: resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} engines: {node: '>=0.10.0'} + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} @@ -562,6 +742,10 @@ packages: bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + bl@0.4.2: resolution: {integrity: sha512-/Jhsskdr/kVmqiA+zn6A1h0Z9pRLXrx/yxOlhKVgwaiCMtb+/UhZOHlefRAqArQVRRuOxOu+MvzQh/yIvFMZlQ==} @@ -571,6 +755,10 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + browserslist@4.23.2: resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -583,6 +771,12 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + bundle-require@5.0.0: + resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -617,6 +811,10 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -637,12 +835,20 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + commenting@1.1.0: resolution: {integrity: sha512-YeNK4tavZwtH7jEgK1ZINXzLKm6DZdEMfsaaieOsCAN0S8vsY7UeuO3Q7d/M018EFgE+IeUAuBOKkFccBZsUZA==} concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -701,9 +907,12 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} @@ -711,6 +920,12 @@ packages: electron-to-chromium@1.5.2: resolution: {integrity: sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ==} + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -719,14 +934,21 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es6-shim@0.35.8: - resolution: {integrity: sha512-Twf7I2v4/1tLoIXMT8HlqaBSS5H2wQTs2wx3MNYCI8K1R1/clXyCazrcVCPm/FuO9cyV8+leEaZOWD5C253NDg==} + esbuild-plugin-license@1.2.2: + resolution: {integrity: sha512-sqa8V1pB6wr6L8lPQ+lD73ARTfi824H/smyUd4eBwvc+yGK0ZvfupXDqgmrFpP5zu6aTj8pMlnoowuDOjKGX5A==} + peerDependencies: + esbuild: '*' esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true + esbuild@0.23.0: + resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -797,6 +1019,10 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -808,13 +1034,13 @@ packages: resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} engines: {'0': node >=0.6.0} - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -836,6 +1062,10 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -856,6 +1086,10 @@ packages: debug: optional: true + foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} + engines: {node: '>=14'} + forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} @@ -863,9 +1097,6 @@ packages: resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} engines: {node: '>= 0.12'} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -885,6 +1116,10 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -895,13 +1130,17 @@ packages: gfm-linkify@0.1.0: resolution: {integrity: sha512-IBlmOdGcoXoVvpfy+21KghIRSZaph3r+HuQkFjyga5oBoHnhkOgS2LP0/zc3OgnnPxrsU/JrjshF10+KTD+T3g==} + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -915,6 +1154,10 @@ packages: resolution: {integrity: sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==} engines: {node: '>=18'} + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -971,6 +1214,10 @@ packages: resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} engines: {node: '>=0.8', npm: '>=1.3.7'} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -996,25 +1243,37 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1031,6 +1290,13 @@ packages: isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1081,6 +1347,17 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -1088,12 +1365,18 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} loupe@3.1.1: resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -1115,6 +1398,14 @@ packages: merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -1128,6 +1419,10 @@ packages: engines: {node: '>=4'} hasBin: true + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -1139,9 +1434,17 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -1155,6 +1458,9 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1166,6 +1472,14 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1173,6 +1487,10 @@ packages: oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + object-inspect@1.13.2: resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} engines: {node: '>= 0.4'} @@ -1180,8 +1498,9 @@ packages: object-keys@0.4.0: resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} @@ -1207,6 +1526,9 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-name-regex@2.0.6: resolution: {integrity: sha512-gFL35q7kbE/zBaPA3UKhp2vSzcPYx2ecbYuwv1ucE9Il6IIgBDweBlH8D68UFGZic2MkllKa2KHCfC1IQBQUYA==} engines: {node: '>=12'} @@ -1219,10 +1541,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -1231,6 +1549,14 @@ packages: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -1248,10 +1574,32 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + portfinder@1.0.32: resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} engines: {node: '>= 0.12.0'} + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + postcss@8.4.40: resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} engines: {node: ^10 || ^12 || >=14} @@ -1296,6 +1644,10 @@ packages: readable-stream@1.1.14: resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + regenerate-unicode-properties@8.2.0: resolution: {integrity: sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==} engines: {node: '>=4'} @@ -1326,6 +1678,10 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -1382,10 +1738,17 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + smob@1.5.0: resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} @@ -1400,6 +1763,10 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead @@ -1436,6 +1803,14 @@ packages: std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} @@ -1443,6 +1818,14 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -1451,6 +1834,11 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -1467,6 +1855,13 @@ packages: text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + through2@0.2.3: resolution: {integrity: sha512-mLa8Bn2mZurjyomGKWRu3Bo2mvoQojFks9NvOK8H+k4kDJNkdEqG522KFZsEFBEl6rKkxTgFbE5+OPcgfvPEHA==} @@ -1493,10 +1888,43 @@ packages: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + tough-cookie@2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} engines: {node: '>=0.8'} + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tsup@8.2.3: + resolution: {integrity: sha512-6YNT44oUfXRbZuSMNmN36GzwPPIlD2wBccY7looM2fkTcxkf2NEmwr3OZuDZoySklnrIG4hoEtzy8yUXYOqNcg==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -1606,14 +2034,16 @@ packages: jsdom: optional: true - vows@0.8.3: - resolution: {integrity: sha512-PVIxa/ovXhrw5gA3mz6M+ZF3PHlqX4tutR2p/y9NWPAaFVKcWBE8b2ktfr0opQM/qFmcOVWKjSCJVjnYOvjXhw==} - hasBin: true + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -1628,8 +2058,13 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} xtend@2.1.2: resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} @@ -1775,72 +2210,144 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true + '@esbuild/aix-ppc64@0.23.0': + optional: true + '@esbuild/android-arm64@0.21.5': optional: true + '@esbuild/android-arm64@0.23.0': + optional: true + '@esbuild/android-arm@0.21.5': optional: true + '@esbuild/android-arm@0.23.0': + optional: true + '@esbuild/android-x64@0.21.5': optional: true + '@esbuild/android-x64@0.23.0': + optional: true + '@esbuild/darwin-arm64@0.21.5': optional: true + '@esbuild/darwin-arm64@0.23.0': + optional: true + '@esbuild/darwin-x64@0.21.5': optional: true + '@esbuild/darwin-x64@0.23.0': + optional: true + '@esbuild/freebsd-arm64@0.21.5': optional: true + '@esbuild/freebsd-arm64@0.23.0': + optional: true + '@esbuild/freebsd-x64@0.21.5': optional: true + '@esbuild/freebsd-x64@0.23.0': + optional: true + '@esbuild/linux-arm64@0.21.5': optional: true + '@esbuild/linux-arm64@0.23.0': + optional: true + '@esbuild/linux-arm@0.21.5': optional: true + '@esbuild/linux-arm@0.23.0': + optional: true + '@esbuild/linux-ia32@0.21.5': optional: true + '@esbuild/linux-ia32@0.23.0': + optional: true + '@esbuild/linux-loong64@0.21.5': optional: true + '@esbuild/linux-loong64@0.23.0': + optional: true + '@esbuild/linux-mips64el@0.21.5': optional: true + '@esbuild/linux-mips64el@0.23.0': + optional: true + '@esbuild/linux-ppc64@0.21.5': optional: true + '@esbuild/linux-ppc64@0.23.0': + optional: true + '@esbuild/linux-riscv64@0.21.5': optional: true + '@esbuild/linux-riscv64@0.23.0': + optional: true + '@esbuild/linux-s390x@0.21.5': optional: true + '@esbuild/linux-s390x@0.23.0': + optional: true + '@esbuild/linux-x64@0.21.5': optional: true + '@esbuild/linux-x64@0.23.0': + optional: true + '@esbuild/netbsd-x64@0.21.5': optional: true + '@esbuild/netbsd-x64@0.23.0': + optional: true + + '@esbuild/openbsd-arm64@0.23.0': + optional: true + '@esbuild/openbsd-x64@0.21.5': optional: true + '@esbuild/openbsd-x64@0.23.0': + optional: true + '@esbuild/sunos-x64@0.21.5': optional: true + '@esbuild/sunos-x64@0.23.0': + optional: true + '@esbuild/win32-arm64@0.21.5': optional: true + '@esbuild/win32-arm64@0.23.0': + optional: true + '@esbuild/win32-ia32@0.21.5': optional: true + '@esbuild/win32-ia32@0.23.0': + optional: true + '@esbuild/win32-x64@0.21.5': optional: true + '@esbuild/win32-x64@0.23.0': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)': dependencies: eslint: 9.8.0 @@ -1878,6 +2385,15 @@ snapshots: '@humanwhocodes/retry@0.3.0': {} + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -1916,6 +2432,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@pkgjs/parseargs@0.11.0': + optional: true + '@rollup/plugin-buble@1.0.3(rollup@4.19.1)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.19.1) @@ -2052,6 +2571,8 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.0.1: {} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 @@ -2060,10 +2581,21 @@ snapshots: dependencies: color-convert: 2.0.1 + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + argparse@2.0.1: {} array-find-index@1.0.2: {} + array-union@2.1.0: {} + asn1@0.2.6: dependencies: safer-buffer: 2.1.2 @@ -2092,6 +2624,8 @@ snapshots: dependencies: tweetnacl: 0.14.5 + binary-extensions@2.3.0: {} + bl@0.4.2: dependencies: readable-stream: 1.0.34 @@ -2105,6 +2639,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + browserslist@4.23.2: dependencies: caniuse-lite: 1.0.30001643 @@ -2124,6 +2662,11 @@ snapshots: buffer-from@1.1.2: {} + bundle-require@5.0.0(esbuild@0.23.0): + dependencies: + esbuild: 0.23.0 + load-tsconfig: 0.2.5 + cac@6.7.14: {} call-bind@1.0.7: @@ -2161,6 +2704,18 @@ snapshots: check-error@2.1.1: {} + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -2179,10 +2734,14 @@ snapshots: commander@2.20.3: {} + commander@4.1.1: {} + commenting@1.1.0: {} concat-map@0.0.1: {} + consola@3.2.3: {} + convert-source-map@2.0.0: {} core-util-is@1.0.2: {} @@ -2225,7 +2784,11 @@ snapshots: delayed-stream@1.0.0: {} - diff@4.0.2: {} + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + eastasianwidth@0.2.0: {} ecc-jsbn@0.1.2: dependencies: @@ -2234,13 +2797,19 @@ snapshots: electron-to-chromium@1.5.2: {} + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 es-errors@1.3.0: {} - es6-shim@0.35.8: {} + esbuild-plugin-license@1.2.2(esbuild@0.23.0): + dependencies: + esbuild: 0.23.0 esbuild@0.21.5: optionalDependencies: @@ -2268,6 +2837,33 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + esbuild@0.23.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.0 + '@esbuild/android-arm': 0.23.0 + '@esbuild/android-arm64': 0.23.0 + '@esbuild/android-x64': 0.23.0 + '@esbuild/darwin-arm64': 0.23.0 + '@esbuild/darwin-x64': 0.23.0 + '@esbuild/freebsd-arm64': 0.23.0 + '@esbuild/freebsd-x64': 0.23.0 + '@esbuild/linux-arm': 0.23.0 + '@esbuild/linux-arm64': 0.23.0 + '@esbuild/linux-ia32': 0.23.0 + '@esbuild/linux-loong64': 0.23.0 + '@esbuild/linux-mips64el': 0.23.0 + '@esbuild/linux-ppc64': 0.23.0 + '@esbuild/linux-riscv64': 0.23.0 + '@esbuild/linux-s390x': 0.23.0 + '@esbuild/linux-x64': 0.23.0 + '@esbuild/netbsd-x64': 0.23.0 + '@esbuild/openbsd-arm64': 0.23.0 + '@esbuild/openbsd-x64': 0.23.0 + '@esbuild/sunos-x64': 0.23.0 + '@esbuild/win32-arm64': 0.23.0 + '@esbuild/win32-ia32': 0.23.0 + '@esbuild/win32-x64': 0.23.0 + escalade@3.1.2: {} escape-string-regexp@1.0.5: {} @@ -2357,6 +2953,18 @@ snapshots: eventemitter3@4.0.7: {} + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + execa@8.0.1: dependencies: cross-spawn: 7.0.3 @@ -2373,10 +2981,16 @@ snapshots: extsprintf@1.3.0: {} - eyes@0.1.8: {} - fast-deep-equal@3.1.3: {} + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 + fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} @@ -2391,6 +3005,10 @@ snapshots: dependencies: flat-cache: 4.0.1 + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -2405,6 +3023,11 @@ snapshots: follow-redirects@1.15.6: {} + foreground-child@3.2.1: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + forever-agent@0.6.1: {} form-data@2.3.3: @@ -2413,8 +3036,6 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 - fs.realpath@1.0.0: {} - fsevents@2.3.3: optional: true @@ -2432,6 +3053,8 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 + get-stream@6.0.1: {} + get-stream@8.0.1: {} getpass@0.1.7: @@ -2440,18 +3063,22 @@ snapshots: gfm-linkify@0.1.0: {} + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - glob@7.2.3: + glob@10.4.5: dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 + foreground-child: 3.2.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 globals@11.12.0: {} @@ -2459,6 +3086,15 @@ snapshots: globals@15.8.0: {} + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 @@ -2525,6 +3161,8 @@ snapshots: jsprim: 1.4.2 sshpk: 1.18.0 + human-signals@2.1.0: {} + human-signals@5.0.0: {} husky@9.1.3: {} @@ -2542,21 +3180,26 @@ snapshots: imurmurhash@0.1.4: {} - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - inherits@2.0.4: {} + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-extglob@2.1.1: {} + is-fullwidth-code-point@3.0.0: {} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 + is-number@7.0.0: {} + is-path-inside@3.0.3: {} + is-stream@2.0.1: {} + is-stream@3.0.0: {} is-typedarray@1.0.0: {} @@ -2567,6 +3210,14 @@ snapshots: isstream@0.1.2: {} + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + joycon@3.1.1: {} + js-tokens@4.0.0: {} js-yaml@4.1.0: @@ -2607,18 +3258,28 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + load-tsconfig@0.2.5: {} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 lodash.merge@4.6.2: {} + lodash.sortby@4.7.0: {} + lodash@4.17.21: {} loupe@3.1.1: dependencies: get-func-name: 2.0.2 + lru-cache@10.4.3: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -2645,6 +3306,13 @@ snapshots: merge-stream@2.0.0: {} + merge2@1.4.1: {} + + micromatch@4.0.7: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + mime-db@1.52.0: {} mime-types@2.1.35: @@ -2653,6 +3321,8 @@ snapshots: mime@1.6.0: {} + mimic-fn@2.1.0: {} + mimic-fn@4.0.0: {} minimatch@10.0.1: @@ -2663,8 +3333,14 @@ snapshots: dependencies: brace-expansion: 1.1.11 + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + minimist@1.2.8: {} + minipass@7.1.2: {} + mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -2675,25 +3351,39 @@ snapshots: ms@2.1.3: {} + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + nanoid@3.3.7: {} natural-compare@1.4.0: {} node-releases@2.0.18: {} + normalize-path@3.0.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 oauth-sign@0.9.0: {} + object-assign@4.1.1: {} + object-inspect@1.13.2: {} object-keys@0.4.0: {} - once@1.4.0: + onetime@5.1.2: dependencies: - wrappy: 1.0.2 + mimic-fn: 2.1.0 onetime@6.0.0: dependencies: @@ -2720,6 +3410,8 @@ snapshots: dependencies: p-limit: 3.1.0 + package-json-from-dist@1.0.0: {} + package-name-regex@2.0.6: {} parent-module@1.0.1: @@ -2728,12 +3420,17 @@ snapshots: path-exists@4.0.0: {} - path-is-absolute@1.0.1: {} - path-key@3.1.1: {} path-key@4.0.0: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-type@4.0.0: {} + pathe@1.1.2: {} pathval@2.0.0: {} @@ -2744,6 +3441,8 @@ snapshots: picomatch@2.3.1: {} + pirates@4.0.6: {} + portfinder@1.0.32: dependencies: async: 2.6.4 @@ -2752,6 +3451,12 @@ snapshots: transitivePeerDependencies: - supports-color + postcss-load-config@6.0.1(postcss@8.4.40): + dependencies: + lilconfig: 3.1.2 + optionalDependencies: + postcss: 8.4.40 + postcss@8.4.40: dependencies: nanoid: 3.3.7 @@ -2797,6 +3502,10 @@ snapshots: isarray: 0.0.1 string_decoder: 0.10.31 + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + regenerate-unicode-properties@8.2.0: dependencies: regenerate: 1.4.2 @@ -2845,6 +3554,8 @@ snapshots: resolve-from@4.0.0: {} + resolve-from@5.0.0: {} + reusify@1.0.4: {} rollup-plugin-license@3.5.2(rollup@4.19.1): @@ -2925,8 +3636,12 @@ snapshots: siginfo@2.0.0: {} + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} + slash@3.0.0: {} + smob@1.5.0: {} source-map-js@1.2.0: {} @@ -2938,6 +3653,10 @@ snapshots: source-map@0.6.1: {} + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + sourcemap-codec@1.4.8: {} spdx-compare@1.0.0: @@ -2983,16 +3702,44 @@ snapshots: std-env@3.7.0: {} + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + string_decoder@0.10.31: {} strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + + strip-final-newline@2.0.0: {} + strip-final-newline@3.0.0: {} strip-json-comments@3.1.1: {} + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -3010,6 +3757,14 @@ snapshots: text-table@0.2.0: {} + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + through2@0.2.3: dependencies: readable-stream: 1.1.14 @@ -3027,11 +3782,49 @@ snapshots: to-fast-properties@2.0.0: {} + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + tough-cookie@2.5.0: dependencies: psl: 1.9.0 punycode: 2.3.1 + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + + tree-kill@1.2.2: {} + + ts-interface-checker@0.1.13: {} + + tsup@8.2.3(postcss@8.4.40): + dependencies: + bundle-require: 5.0.0(esbuild@0.23.0) + cac: 6.7.14 + chokidar: 3.6.0 + consola: 3.2.3 + debug: 4.3.6 + esbuild: 0.23.0 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + picocolors: 1.0.1 + postcss-load-config: 6.0.1(postcss@8.4.40) + resolve-from: 5.0.0 + rollup: 4.19.1 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.4.40 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 @@ -3133,16 +3926,18 @@ snapshots: - supports-color - terser - vows@0.8.3: - dependencies: - diff: 4.0.2 - eyes: 0.1.8 - glob: 7.2.3 + webidl-conversions@4.0.2: {} whatwg-encoding@2.0.0: dependencies: iconv-lite: 0.6.3 + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -3154,7 +3949,17 @@ snapshots: word-wrap@1.2.5: {} - wrappy@1.0.2: {} + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 xtend@2.1.2: dependencies: diff --git a/tsup.config.mjs b/tsup.config.mjs new file mode 100644 index 00000000..0ac695ad --- /dev/null +++ b/tsup.config.mjs @@ -0,0 +1,11 @@ +import { defineConfig } from 'tsup' + +export default defineConfig({ + entry: [ + './index.js', + './index-light.js', + ], + clean: true, + format: ['esm', 'cjs'], + minify: true, +}) From 8869c572407c720d04ebd476686190c20fe4b4fa Mon Sep 17 00:00:00 2001 From: Chris Date: Thu, 1 Aug 2024 22:41:43 +0800 Subject: [PATCH 02/18] chore: add license --- package.json | 6 ++-- pnpm-lock.yaml | 90 ++++++++++++++++++++++++------------------------- tsup.config.mjs | 2 ++ 3 files changed, 50 insertions(+), 48 deletions(-) diff --git a/package.json b/package.json index ee01cb72..fe114cbc 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@rollup/plugin-buble": "^1.0.3", "@rollup/plugin-terser": "^0.4.4", "cross-env": "^7.0.3", - "esbuild-plugin-license": "^1.2.2", + "esbuild-plugin-license": "^1.2.3", "eslint": "^9.8.0", "globals": "^15.8.0", "http-server": "^14.1.1", @@ -62,8 +62,8 @@ "prettier": "^3.3.3", "rollup": "^4.19.1", "rollup-plugin-license": "^3.5.2", - "vitest": "^2.0.4", - "tsup": "^8.2.3" + "tsup": "^8.2.3", + "vitest": "^2.0.4" }, "license": "(BSD-3-Clause AND Apache-2.0)", "spm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5cbae7a3..130cfd10 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: devDependencies: '@babel/eslint-parser': specifier: ^7.25.0 - version: 7.25.0(@babel/core@7.24.9)(eslint@9.8.0) + version: 7.25.0(@babel/core@7.25.2)(eslint@9.8.0) '@eslint/eslintrc': specifier: ^3.1.0 version: 3.1.0 @@ -27,8 +27,8 @@ importers: specifier: ^7.0.3 version: 7.0.3 esbuild-plugin-license: - specifier: ^1.2.2 - version: 1.2.2(esbuild@0.23.0) + specifier: ^1.2.3 + version: 1.2.3(esbuild@0.23.0) eslint: specifier: ^9.8.0 version: 9.8.0 @@ -73,12 +73,12 @@ packages: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.0': - resolution: {integrity: sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg==} + '@babel/compat-data@7.25.2': + resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.9': - resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} '@babel/eslint-parser@7.25.0': @@ -92,16 +92,16 @@ packages: resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.24.8': - resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.24.7': resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.25.0': - resolution: {integrity: sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ==} + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -130,8 +130,8 @@ packages: resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.25.0': - resolution: {integrity: sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==} + '@babel/parser@7.25.3': + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} engines: {node: '>=6.0.0'} hasBin: true @@ -139,8 +139,8 @@ packages: resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.2': - resolution: {integrity: sha512-s4/r+a7xTnny2O6FcZzqgT6nE4/GHEdcqj4qAeglbUOh0TeglEfmNJFAd/OLoVtGd6ZhAO8GCVvCNUO5t/VJVQ==} + '@babel/traverse@7.25.3': + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} engines: {node: '>=6.9.0'} '@babel/types@7.25.2': @@ -789,8 +789,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001643: - resolution: {integrity: sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==} + caniuse-lite@1.0.30001646: + resolution: {integrity: sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -917,8 +917,8 @@ packages: ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - electron-to-chromium@1.5.2: - resolution: {integrity: sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ==} + electron-to-chromium@1.5.4: + resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -934,8 +934,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - esbuild-plugin-license@1.2.2: - resolution: {integrity: sha512-sqa8V1pB6wr6L8lPQ+lD73ARTfi824H/smyUd4eBwvc+yGK0ZvfupXDqgmrFpP5zu6aTj8pMlnoowuDOjKGX5A==} + esbuild-plugin-license@1.2.3: + resolution: {integrity: sha512-/ovWsIFHYIRqapsPCojMRHFppCgU3jFTVSu9r6MjpUArCWukL64+NwYJkX28ZXzYtw/cOYkGmbC3EhX0qwnn9w==} peerDependencies: esbuild: '*' @@ -2092,19 +2092,19 @@ snapshots: '@babel/highlight': 7.24.7 picocolors: 1.0.1 - '@babel/compat-data@7.25.0': {} + '@babel/compat-data@7.25.2': {} - '@babel/core@7.24.9': + '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 '@babel/generator': 7.25.0 - '@babel/helper-compilation-targets': 7.24.8 - '@babel/helper-module-transforms': 7.25.0(@babel/core@7.24.9) + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.0 + '@babel/parser': 7.25.3 '@babel/template': 7.25.0 - '@babel/traverse': 7.25.2 + '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 convert-source-map: 2.0.0 debug: 4.3.6 @@ -2114,9 +2114,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.25.0(@babel/core@7.24.9)(eslint@9.8.0)': + '@babel/eslint-parser@7.25.0(@babel/core@7.25.2)(eslint@9.8.0)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 9.8.0 eslint-visitor-keys: 2.1.0 @@ -2129,9 +2129,9 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/helper-compilation-targets@7.24.8': + '@babel/helper-compilation-targets@7.25.2': dependencies: - '@babel/compat-data': 7.25.0 + '@babel/compat-data': 7.25.2 '@babel/helper-validator-option': 7.24.8 browserslist: 4.23.2 lru-cache: 5.1.1 @@ -2139,24 +2139,24 @@ snapshots: '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/traverse': 7.25.2 + '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.25.0(@babel/core@7.24.9)': + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.2 + '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.25.2 + '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color @@ -2179,21 +2179,21 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.0.1 - '@babel/parser@7.25.0': + '@babel/parser@7.25.3': dependencies: '@babel/types': 7.25.2 '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.0 + '@babel/parser': 7.25.3 '@babel/types': 7.25.2 - '@babel/traverse@7.25.2': + '@babel/traverse@7.25.3': dependencies: '@babel/code-frame': 7.24.7 '@babel/generator': 7.25.0 - '@babel/parser': 7.25.0 + '@babel/parser': 7.25.3 '@babel/template': 7.25.0 '@babel/types': 7.25.2 debug: 4.3.6 @@ -2645,8 +2645,8 @@ snapshots: browserslist@4.23.2: dependencies: - caniuse-lite: 1.0.30001643 - electron-to-chromium: 1.5.2 + caniuse-lite: 1.0.30001646 + electron-to-chromium: 1.5.4 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.2) @@ -2679,7 +2679,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001643: {} + caniuse-lite@1.0.30001646: {} caseless@0.12.0: {} @@ -2795,7 +2795,7 @@ snapshots: jsbn: 0.1.1 safer-buffer: 2.1.2 - electron-to-chromium@1.5.2: {} + electron-to-chromium@1.5.4: {} emoji-regex@8.0.0: {} @@ -2807,7 +2807,7 @@ snapshots: es-errors@1.3.0: {} - esbuild-plugin-license@1.2.2(esbuild@0.23.0): + esbuild-plugin-license@1.2.3(esbuild@0.23.0): dependencies: esbuild: 0.23.0 diff --git a/tsup.config.mjs b/tsup.config.mjs index 0ac695ad..7bd6ade5 100644 --- a/tsup.config.mjs +++ b/tsup.config.mjs @@ -1,4 +1,5 @@ import { defineConfig } from 'tsup' +import license from 'esbuild-plugin-license' export default defineConfig({ entry: [ @@ -8,4 +9,5 @@ export default defineConfig({ clean: true, format: ['esm', 'cjs'], minify: true, + esbuildPlugins: [license()] }) From 17957919e8a16e18f2c5705f1ae1d46c9e5adf53 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 2 Aug 2024 00:00:33 +0800 Subject: [PATCH 03/18] refactor: use build file to test --- package.json | 4 - pnpm-lock.yaml | 347 +++------------------------------ test/alpha.test.js | 2 +- test/analyze.test.js | 4 +- test/autodetect.test.js | 2 +- test/average.test.js | 24 +-- test/bezier.test.js | 14 +- test/blend.test.js | 12 +- test/cmyk2rgb.test.js | 1 - test/color.test.js | 2 +- test/contrast.test.js | 2 +- test/converters.test.js | 2 +- test/css2rgb.test.js | 2 +- test/cubehelix.test.js | 2 +- test/delta-e.test.js | 5 +- test/docs.test.js | 4 +- test/hsl2rgb.test.js | 50 ----- test/lch.test.js | 2 +- test/luminance.test.js | 2 +- test/manipulate.test.js | 2 +- test/misc.test.js | 2 +- test/mix.test.js | 2 +- test/num.test.js | 2 +- test/premultiply.test.js | 2 +- test/random.test.js | 2 +- test/scale.lcorrection.test.js | 18 +- test/scales.test.js | 5 +- test/valid.test.js | 8 +- 28 files changed, 97 insertions(+), 429 deletions(-) diff --git a/package.json b/package.json index fe114cbc..4598640d 100644 --- a/package.json +++ b/package.json @@ -49,8 +49,6 @@ "@babel/eslint-parser": "^7.25.0", "@eslint/eslintrc": "^3.1.0", "@eslint/js": "^9.8.0", - "@rollup/plugin-buble": "^1.0.3", - "@rollup/plugin-terser": "^0.4.4", "cross-env": "^7.0.3", "esbuild-plugin-license": "^1.2.3", "eslint": "^9.8.0", @@ -60,8 +58,6 @@ "markdown-to-html": "0.0.13", "minimatch": "^10.0.1", "prettier": "^3.3.3", - "rollup": "^4.19.1", - "rollup-plugin-license": "^3.5.2", "tsup": "^8.2.3", "vitest": "^2.0.4" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 130cfd10..fcc89523 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,12 +17,6 @@ importers: '@eslint/js': specifier: ^9.8.0 version: 9.8.0 - '@rollup/plugin-buble': - specifier: ^1.0.3 - version: 1.0.3(rollup@4.19.1) - '@rollup/plugin-terser': - specifier: ^0.4.4 - version: 0.4.4(rollup@4.19.1) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -50,15 +44,9 @@ importers: prettier: specifier: ^3.3.3 version: 3.3.3 - rollup: - specifier: ^4.19.1 - version: 4.19.1 - rollup-plugin-license: - specifier: ^3.5.2 - version: 3.5.2(rollup@4.19.1) tsup: specifier: ^8.2.3 - version: 8.2.3(postcss@8.4.40) + version: 8.2.3(jiti@1.21.6)(postcss@8.4.40)(typescript@5.5.4) vitest: specifier: ^2.0.4 version: 2.0.4(terser@5.31.3) @@ -507,33 +495,6 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@rollup/plugin-buble@1.0.3': - resolution: {integrity: sha512-QYD9BKkJoof0FdCFeSYYhF6/Y8e0Mnf+098xGgmWOFJ4UPHlWujjqOYeVwEm2hJPOmlR5k7HPUdAjqtOWhN64Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-terser@0.4.4': - resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/rollup-android-arm-eabi@4.19.1': resolution: {integrity: sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww==} cpu: [arm] @@ -623,9 +584,6 @@ packages: cpu: [x64] os: [win32] - '@types/buble@0.19.2': - resolution: {integrity: sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q==} - '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -647,22 +605,11 @@ packages: '@vitest/utils@2.0.4': resolution: {integrity: sha512-Zc75QuuoJhOBnlo99ZVUkJIuq4Oj0zAkrQ2VzCqNCx6wAwViHEh5Fnp4fiJTE9rA+sAoXRf00Z9xGgfEzV6fzQ==} - acorn-dynamic-import@4.0.0: - resolution: {integrity: sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==} - deprecated: This is probably built in to whatever tool you're using. If you still need it... idk - peerDependencies: - acorn: ^6.0.0 - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@6.4.2: - resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.12.1: resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} @@ -701,10 +648,6 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-find-index@1.0.2: - resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} - engines: {node: '>=0.10.0'} - array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -764,10 +707,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - buble@0.20.0: - resolution: {integrity: sha512-/1gnaMQE8xvd5qsNBl+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4BguN0sH0tVTKrOw==} - hasBin: true - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -839,9 +778,6 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - commenting@1.1.0: - resolution: {integrity: sha512-YeNK4tavZwtH7jEgK1ZINXzLKm6DZdEMfsaaieOsCAN0S8vsY7UeuO3Q7d/M018EFgE+IeUAuBOKkFccBZsUZA==} - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -1006,9 +942,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -1050,14 +983,6 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - fdir@6.1.1: - resolution: {integrity: sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg==} - peerDependencies: - picomatch: 3.x - peerDependenciesMeta: - picomatch: - optional: true - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -1293,6 +1218,10 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -1307,10 +1236,6 @@ packages: jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -1380,9 +1305,6 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} @@ -1449,9 +1371,6 @@ packages: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true - moment@2.30.1: - resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -1529,10 +1448,6 @@ packages: package-json-from-dist@1.0.0: resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} - package-name-regex@2.0.6: - resolution: {integrity: sha512-gFL35q7kbE/zBaPA3UKhp2vSzcPYx2ecbYuwv1ucE9Il6IIgBDweBlH8D68UFGZic2MkllKa2KHCfC1IQBQUYA==} - engines: {node: '>=12'} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1635,9 +1550,6 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - readable-stream@1.0.34: resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} @@ -1648,24 +1560,6 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - regenerate-unicode-properties@8.2.0: - resolution: {integrity: sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regexpu-core@4.5.4: - resolution: {integrity: sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==} - engines: {node: '>=4'} - - regjsgen@0.5.2: - resolution: {integrity: sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==} - - regjsparser@0.6.9: - resolution: {integrity: sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==} - hasBin: true - request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} engines: {node: '>= 6'} @@ -1686,12 +1580,6 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup-plugin-license@3.5.2: - resolution: {integrity: sha512-NNeXBcE6RyQdZdSC8Vxe8Cheax2aUa/K0Ok6JDZwr9isjkSDer4aMg0sovas1Ua76ojLZX1BrNQ6ZFspztKkZQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 - rollup@4.19.1: resolution: {integrity: sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -1716,9 +1604,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -1749,9 +1634,6 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - smob@1.5.0: - resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} - source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} @@ -1767,31 +1649,6 @@ packages: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} - sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - - spdx-compare@1.0.0: - resolution: {integrity: sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-expression-validate@2.0.0: - resolution: {integrity: sha512-b3wydZLM+Tc6CFvaRDBOF9d76oGIHNCLYFeHbftFXUWjnfZWganmDmvtM5sm1cRwJc/VDBMLyGGrsLFd1vOxbg==} - - spdx-license-ids@3.0.18: - resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} - - spdx-ranges@2.1.1: - resolution: {integrity: sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==} - - spdx-satisfies@5.0.1: - resolution: {integrity: sha512-Nwor6W6gzFp8XX4neaKQ7ChV4wmpSh2sSDemMFSzHxpTw460jxFYeOn+jq4ybnSSw/5sc3pjka9MQPouksQNpw==} - sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} engines: {node: '>=0.10.0'} @@ -1935,21 +1792,10 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - unicode-canonical-property-names-ecmascript@1.0.4: - resolution: {integrity: sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@1.0.4: - resolution: {integrity: sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@1.2.0: - resolution: {integrity: sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@1.1.0: - resolution: {integrity: sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==} - engines: {node: '>=4'} + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true union@0.5.0: resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} @@ -2408,6 +2254,7 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + optional: true '@jridgewell/sourcemap-codec@1.5.0': {} @@ -2435,30 +2282,6 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/plugin-buble@1.0.3(rollup@4.19.1)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.19.1) - '@types/buble': 0.19.2 - buble: 0.20.0 - optionalDependencies: - rollup: 4.19.1 - - '@rollup/plugin-terser@0.4.4(rollup@4.19.1)': - dependencies: - serialize-javascript: 6.0.2 - smob: 1.5.0 - terser: 5.31.3 - optionalDependencies: - rollup: 4.19.1 - - '@rollup/pluginutils@5.1.0(rollup@4.19.1)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 4.19.1 - '@rollup/rollup-android-arm-eabi@4.19.1': optional: true @@ -2507,10 +2330,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.19.1': optional: true - '@types/buble@0.19.2': - dependencies: - magic-string: 0.25.9 - '@types/estree@1.0.5': {} '@vitest/expect@2.0.4': @@ -2546,20 +2365,10 @@ snapshots: loupe: 3.1.1 tinyrainbow: 1.2.0 - acorn-dynamic-import@4.0.0(acorn@6.4.2): - dependencies: - acorn: 6.4.2 - - acorn-jsx@5.3.2(acorn@6.4.2): - dependencies: - acorn: 6.4.2 - acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 - acorn@6.4.2: {} - acorn@8.12.1: {} ajv@6.12.6: @@ -2592,8 +2401,6 @@ snapshots: argparse@2.0.1: {} - array-find-index@1.0.2: {} - array-union@2.1.0: {} asn1@0.2.6: @@ -2650,17 +2457,8 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.2) - buble@0.20.0: - dependencies: - acorn: 6.4.2 - acorn-dynamic-import: 4.0.0(acorn@6.4.2) - acorn-jsx: 5.3.2(acorn@6.4.2) - chalk: 2.4.2 - magic-string: 0.25.9 - minimist: 1.2.8 - regexpu-core: 4.5.4 - - buffer-from@1.1.2: {} + buffer-from@1.1.2: + optional: true bundle-require@5.0.0(esbuild@0.23.0): dependencies: @@ -2732,12 +2530,11 @@ snapshots: dependencies: delayed-stream: 1.0.0 - commander@2.20.3: {} + commander@2.20.3: + optional: true commander@4.1.1: {} - commenting@1.1.0: {} - concat-map@0.0.1: {} consola@3.2.3: {} @@ -2943,8 +2740,6 @@ snapshots: estraverse@5.3.0: {} - estree-walker@2.0.2: {} - estree-walker@3.0.3: dependencies: '@types/estree': 1.0.5 @@ -2999,8 +2794,6 @@ snapshots: dependencies: reusify: 1.0.4 - fdir@6.1.1: {} - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -3216,6 +3009,9 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jiti@1.21.6: + optional: true + joycon@3.1.1: {} js-tokens@4.0.0: {} @@ -3226,8 +3022,6 @@ snapshots: jsbn@0.1.1: {} - jsesc@0.5.0: {} - jsesc@2.5.2: {} json-buffer@3.0.1: {} @@ -3284,10 +3078,6 @@ snapshots: dependencies: yallist: 3.1.1 - magic-string@0.25.9: - dependencies: - sourcemap-codec: 1.4.8 - magic-string@0.30.10: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -3345,8 +3135,6 @@ snapshots: dependencies: minimist: 1.2.8 - moment@2.30.1: {} - ms@2.1.2: {} ms@2.1.3: {} @@ -3412,8 +3200,6 @@ snapshots: package-json-from-dist@1.0.0: {} - package-name-regex@2.0.6: {} - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -3451,10 +3237,11 @@ snapshots: transitivePeerDependencies: - supports-color - postcss-load-config@6.0.1(postcss@8.4.40): + postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.40): dependencies: lilconfig: 3.1.2 optionalDependencies: + jiti: 1.21.6 postcss: 8.4.40 postcss@8.4.40: @@ -3484,10 +3271,6 @@ snapshots: queue-microtask@1.2.3: {} - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - readable-stream@1.0.34: dependencies: core-util-is: 1.0.3 @@ -3506,27 +3289,6 @@ snapshots: dependencies: picomatch: 2.3.1 - regenerate-unicode-properties@8.2.0: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - - regexpu-core@4.5.4: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 8.2.0 - regjsgen: 0.5.2 - regjsparser: 0.6.9 - unicode-match-property-ecmascript: 1.0.4 - unicode-match-property-value-ecmascript: 1.2.0 - - regjsgen@0.5.2: {} - - regjsparser@0.6.9: - dependencies: - jsesc: 0.5.0 - request@2.88.2: dependencies: aws-sign2: 0.7.0 @@ -3558,20 +3320,6 @@ snapshots: reusify@1.0.4: {} - rollup-plugin-license@3.5.2(rollup@4.19.1): - dependencies: - commenting: 1.1.0 - fdir: 6.1.1 - lodash: 4.17.21 - magic-string: 0.30.10 - moment: 2.30.1 - package-name-regex: 2.0.6 - rollup: 4.19.1 - spdx-expression-validate: 2.0.0 - spdx-satisfies: 5.0.1 - transitivePeerDependencies: - - picomatch - rollup@4.19.1: dependencies: '@types/estree': 1.0.5 @@ -3608,10 +3356,6 @@ snapshots: semver@6.3.1: {} - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -3642,50 +3386,21 @@ snapshots: slash@3.0.0: {} - smob@1.5.0: {} - source-map-js@1.2.0: {} source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + optional: true - source-map@0.6.1: {} + source-map@0.6.1: + optional: true source-map@0.8.0-beta.0: dependencies: whatwg-url: 7.1.0 - sourcemap-codec@1.4.8: {} - - spdx-compare@1.0.0: - dependencies: - array-find-index: 1.0.2 - spdx-expression-parse: 3.0.1 - spdx-ranges: 2.1.1 - - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.18 - - spdx-expression-validate@2.0.0: - dependencies: - spdx-expression-parse: 3.0.1 - - spdx-license-ids@3.0.18: {} - - spdx-ranges@2.1.1: {} - - spdx-satisfies@5.0.1: - dependencies: - spdx-compare: 1.0.0 - spdx-expression-parse: 3.0.1 - spdx-ranges: 2.1.1 - sshpk@1.18.0: dependencies: asn1: 0.2.6 @@ -3754,6 +3469,7 @@ snapshots: acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 + optional: true text-table@0.2.0: {} @@ -3799,7 +3515,7 @@ snapshots: ts-interface-checker@0.1.13: {} - tsup@8.2.3(postcss@8.4.40): + tsup@8.2.3(jiti@1.21.6)(postcss@8.4.40)(typescript@5.5.4): dependencies: bundle-require: 5.0.0(esbuild@0.23.0) cac: 6.7.14 @@ -3811,7 +3527,7 @@ snapshots: globby: 11.1.0 joycon: 3.1.1 picocolors: 1.0.1 - postcss-load-config: 6.0.1(postcss@8.4.40) + postcss-load-config: 6.0.1(jiti@1.21.6)(postcss@8.4.40) resolve-from: 5.0.0 rollup: 4.19.1 source-map: 0.8.0-beta.0 @@ -3819,6 +3535,7 @@ snapshots: tree-kill: 1.2.2 optionalDependencies: postcss: 8.4.40 + typescript: 5.5.4 transitivePeerDependencies: - jiti - supports-color @@ -3835,16 +3552,8 @@ snapshots: dependencies: prelude-ls: 1.2.1 - unicode-canonical-property-names-ecmascript@1.0.4: {} - - unicode-match-property-ecmascript@1.0.4: - dependencies: - unicode-canonical-property-names-ecmascript: 1.0.4 - unicode-property-aliases-ecmascript: 1.1.0 - - unicode-match-property-value-ecmascript@1.2.0: {} - - unicode-property-aliases-ecmascript@1.1.0: {} + typescript@5.5.4: + optional: true union@0.5.0: dependencies: diff --git a/test/alpha.test.js b/test/alpha.test.js index d5b048ff..ed8408ae 100644 --- a/test/alpha.test.js +++ b/test/alpha.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; describe('Tests for the alpha channel', () => { it('setting & getting alpha channel', () => { diff --git a/test/analyze.test.js b/test/analyze.test.js index 6aea7b17..c25e46b8 100644 --- a/test/analyze.test.js +++ b/test/analyze.test.js @@ -1,5 +1,7 @@ import { describe, it, expect } from 'vitest'; -import { analyze } from '../src/utils/analyze.js'; +import chroma from '../dist/index.mjs'; + +const analyze = chroma.analyze; describe('Some tests for analyze()', () => { it('analyze an array of numbers', () => { diff --git a/test/autodetect.test.js b/test/autodetect.test.js index 3974b836..2d861003 100644 --- a/test/autodetect.test.js +++ b/test/autodetect.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; describe('autodetect color', () => { it('autodetect named color', () => { diff --git a/test/average.test.js b/test/average.test.js index 4dd88f41..e1e7a8ea 100644 --- a/test/average.test.js +++ b/test/average.test.js @@ -1,56 +1,58 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; + +const average = chroma.average; const colors = ['red', 'blue', 'white']; describe('Tests for average color', () => { it('average in RGB', () => { - const result = chroma.average(colors, 'rgb'); + const result = average(colors, 'rgb'); expect(result.hex()).toBe('#aa55aa'); }); it('average with alpha channel', () => { - const result = chroma.average([chroma('red').alpha(0.5), chroma('blue').alpha(0.5)], 'rgb'); + const result = average([chroma('red').alpha(0.5), chroma('blue').alpha(0.5)], 'rgb'); expect(result.rgba()).toEqual([128, 0, 128, 0.5]); }); it('average in lab', () => { - const result = chroma.average(colors, 'lab'); + const result = average(colors, 'lab'); expect(result.hex()).toBe('#e26daf'); }); it('average h in lch', () => { - const result = chroma.average([chroma.lch(50, 50, 0), chroma.lch(50, 50, 90)], 'lch').get('lch.h'); + const result = average([chroma.lch(50, 50, 0), chroma.lch(50, 50, 90)], 'lch').get('lch.h'); expect(Math.round(result)).toBe(45); }); it('average in hsl of same colors', () => { - const result = chroma.average(['#02c03a', '#02c03a'], 'hsl'); + const result = average(['#02c03a', '#02c03a'], 'hsl'); expect(result.hex()).toBe('#02c03a'); }); it('average same color', () => { - const result = chroma.average(['#02c03a', '#02c03a'], 'hsl'); + const result = average(['#02c03a', '#02c03a'], 'hsl'); expect(result.hex()).toBe('#02c03a'); }); it('lrgb average', () => { - const result = chroma.average(colors, 'lrgb'); + const result = average(colors, 'lrgb'); expect(result.hex()).toBe('#d093d0'); }); it('three colors, weighted rgb average', () => { - const result = chroma.average(colors, 'rgb', [1, 1, 2]); + const result = average(colors, 'rgb', [1, 1, 2]); expect(result.hex()).toBe('#bf80bf'); }); it('three colors, weighted lrgb average', () => { - const result = chroma.average(colors, 'lrgb', [1, 3, 2]); + const result = average(colors, 'lrgb', [1, 3, 2]); expect(result.hex()).toBe('#b493e9'); }); it('three colors, weighted hsl average', () => { - const result = chroma.average(colors, 'hsl', [0.25, 1, 0.5]); + const result = average(colors, 'hsl', [0.25, 1, 0.5]); expect(result.hex()).toBe('#8163e5'); }); }); diff --git a/test/bezier.test.js b/test/bezier.test.js index 729b00d0..794c5e77 100644 --- a/test/bezier.test.js +++ b/test/bezier.test.js @@ -1,9 +1,11 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; + +const bezier = chroma.bezier; describe('Testing bezier interpolation', () => { describe('simple two color linear interpolation', () => { - const f = chroma.bezier(['white', 'black']); + const f = bezier(['white', 'black']); it('starts from white', () => { expect(f(0).hex()).toBe('#ffffff'); @@ -19,7 +21,7 @@ describe('Testing bezier interpolation', () => { }); describe('three color quadratic bezier interpolation', () => { - const f = chroma.bezier(['white', 'red', 'black']); + const f = bezier(['white', 'red', 'black']); it('starts from white', () => { expect(f(0).hex()).toBe('#ffffff'); @@ -35,7 +37,7 @@ describe('Testing bezier interpolation', () => { }); describe('four color cubic bezier interpolation', () => { - const f = chroma.bezier(['white', 'yellow', 'red', 'black']); + const f = bezier(['white', 'yellow', 'red', 'black']); it('starts from white', () => { expect(f(0).hex()).toBe('#ffffff'); @@ -59,7 +61,7 @@ describe('Testing bezier interpolation', () => { }); describe('five color diverging quadratic bezier interpolation', () => { - const f = chroma.bezier(['darkred', 'orange', 'snow', 'lightgreen', 'royalblue']); + const f = bezier(['darkred', 'orange', 'snow', 'lightgreen', 'royalblue']); it('starts from darkred', () => { expect(f(0).hex()).toBe('#8b0000'); @@ -84,7 +86,7 @@ describe('Testing bezier interpolation', () => { describe('using bezier in a chroma.scale', () => { const f = chroma - .scale(chroma.bezier(['darkred', 'orange', 'snow', 'lightgreen', 'royalblue'])) + .scale(bezier(['darkred', 'orange', 'snow', 'lightgreen', 'royalblue'])) .domain([0, 1], 5) .out('hex'); diff --git a/test/blend.test.js b/test/blend.test.js index 7f3eaa5d..1d202756 100644 --- a/test/blend.test.js +++ b/test/blend.test.js @@ -1,24 +1,26 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; + +const blend = chroma.blend; describe('Testing blend modes', () => { it('multiply 1', () => { - const result = chroma.blend('red', '#5a9f37', 'multiply'); + const result = blend('red', '#5a9f37', 'multiply'); expect(result.hex()).toBe('#5a0000'); }); it('multiply 2', () => { - const result = chroma.blend('#33b16f', '#857590', 'multiply'); + const result = blend('#33b16f', '#857590', 'multiply'); expect(result.hex()).toBe('#1b513f'); }); it('screen', () => { - const result = chroma.blend('#b83d31', '#0da671', 'screen'); + const result = blend('#b83d31', '#0da671', 'screen'); expect(result.hex()).toBe('#bcbb8c'); }); it('overlay', () => { - const result = chroma.blend('#b83d31', '#0da671', 'overlay'); + const result = blend('#b83d31', '#0da671', 'overlay'); expect(result.hex()).toBe('#784f2b'); }); }); diff --git a/test/cmyk2rgb.test.js b/test/cmyk2rgb.test.js index c1741c93..cce00839 100644 --- a/test/cmyk2rgb.test.js +++ b/test/cmyk2rgb.test.js @@ -1,6 +1,5 @@ import { describe, it, expect } from 'vitest'; import cmyk2rgb from '../src/io/cmyk/cmyk2rgb.js'; -import '../index.js'; const cmykColors = [ [0, 0, 0, 1], diff --git a/test/color.test.js b/test/color.test.js index d9af1c4f..8da71ab7 100644 --- a/test/color.test.js +++ b/test/color.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; const Color = chroma.Color; diff --git a/test/contrast.test.js b/test/contrast.test.js index 0a4cc9a1..a4208da1 100644 --- a/test/contrast.test.js +++ b/test/contrast.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; const contrast = chroma.contrast; diff --git a/test/converters.test.js b/test/converters.test.js index afba5ad0..133a26b7 100644 --- a/test/converters.test.js +++ b/test/converters.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; describe('Testing color conversions', () => { for (const colorName in chroma.colors) { diff --git a/test/css2rgb.test.js b/test/css2rgb.test.js index 1c4c73af..62a87b5c 100644 --- a/test/css2rgb.test.js +++ b/test/css2rgb.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; const css2rgb = chroma.input.format.css; diff --git a/test/cubehelix.test.js b/test/cubehelix.test.js index d6c4a9d0..66fc1cfc 100644 --- a/test/cubehelix.test.js +++ b/test/cubehelix.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; const cubehelix = chroma.cubehelix; diff --git a/test/delta-e.test.js b/test/delta-e.test.js index 1c511d78..e72fdb68 100644 --- a/test/delta-e.test.js +++ b/test/delta-e.test.js @@ -1,6 +1,7 @@ import { describe, it, expect } from 'vitest'; -import '../index.js'; -import deltaE from '../src/utils/delta-e.js'; +import chroma from '../dist/index.mjs'; + +const deltaE = chroma.deltaE; // due to floating-point arithmetic on different devices, differences in decimals may be found. // Running http://www.brucelindbloom.com/index.html?ColorDifferenceCalc.html JS code locally diff --git a/test/docs.test.js b/test/docs.test.js index 838e3e02..0292209f 100644 --- a/test/docs.test.js +++ b/test/docs.test.js @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest'; -import chroma_ from '../index.js'; -import fs from 'fs'; +import fs from 'node:fs'; +import chroma_ from '../dist/index.mjs'; const DOCS = fs.readFileSync(__dirname + '/../docs/src/index.md', 'utf-8'); diff --git a/test/hsl2rgb.test.js b/test/hsl2rgb.test.js index cd41e1fc..aeaf59aa 100644 --- a/test/hsl2rgb.test.js +++ b/test/hsl2rgb.test.js @@ -1,53 +1,3 @@ -// const vows = require('vows'); -// const assert = require('assert'); -// require('es6-shim'); - -// import hsl2rgb from '../src/io/hsl/hsl2rgb.js'; - -// vows.describe('Testing CMYK color conversions') -// .addBatch({ -// 'parse simple HSL colors': { -// topic: { -// black: { in: [0, 0, 0], out: [0, 0, 0, 1] }, -// white: { in: [0, 0, 1], out: [255, 255, 255, 1] }, -// gray: { in: [0, 0, 0.5], out: [127.5, 127.5, 127.5, 1] }, -// red: { in: [0, 1, 0.5], out: [255, 0, 0, 1] }, -// yellow: { in: [60, 1, 0.5], out: [255, 255, 0, 1] }, -// green: { in: [120, 1, 0.5], out: [0, 255, 0, 1] }, -// cyan: { in: [180, 1, 0.5], out: [0, 255, 255, 1] }, -// blue: { in: [240, 1, 0.5], out: [0, 0, 255, 1] }, -// magenta: { in: [300, 1, 0.5], out: [255, 0, 255, 1] }, -// red_again: { in: [360, 1, 0.5], out: [255, 0, 0, 1] } -// }, -// hsl_arr(topic) { -// Object.keys(topic).forEach((key) => { -// assert.deepEqual( -// hsl2rgb(topic[key].in), -// topic[key].out, -// key -// ); -// }); -// }, -// hsl_args(topic) { -// Object.keys(topic).forEach((key) => { -// assert.deepEqual( -// hsl2rgb.apply(null, topic[key].in), -// topic[key].out, -// key -// ); -// }); -// }, -// hsl_obj(topic) { -// Object.keys(topic).forEach((key) => { -// const [h, s, l] = topic[key].in; -// assert.deepEqual(hsl2rgb({ h, s, l }), topic[key].out, key); -// }); -// } -// }, -// 'make sure that alpha is 1': {} -// }) -// .export(module); - import { describe, it, expect } from 'vitest'; import hsl2rgb from '../src/io/hsl/hsl2rgb.js'; diff --git a/test/lch.test.js b/test/lch.test.js index 10a5df5c..eed1606d 100644 --- a/test/lch.test.js +++ b/test/lch.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; describe('Some tests for chroma.lch()', () => { describe('lch grayscale', () => { diff --git a/test/luminance.test.js b/test/luminance.test.js index a9089c9c..f034a379 100644 --- a/test/luminance.test.js +++ b/test/luminance.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; const rnd = function (f, d) { d = Math.pow(10, d); diff --git a/test/manipulate.test.js b/test/manipulate.test.js index 4f4dfa5b..fedeb812 100644 --- a/test/manipulate.test.js +++ b/test/manipulate.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; describe('Manipulating colors', () => { it('darken', () => { diff --git a/test/misc.test.js b/test/misc.test.js index dce9a0b2..9b20e0c7 100644 --- a/test/misc.test.js +++ b/test/misc.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; const round = function (digits) { var d; diff --git a/test/mix.test.js b/test/mix.test.js index fbcd1810..bf6a76aa 100644 --- a/test/mix.test.js +++ b/test/mix.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; describe('Some tests for chroma.color()', () => { it('hsv interpolation white <-> red', () => { diff --git a/test/num.test.js b/test/num.test.js index 353bbfa7..7e489220 100644 --- a/test/num.test.js +++ b/test/num.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; describe('Some tests for chroma.num()', () => { it('number output', () => { diff --git a/test/premultiply.test.js b/test/premultiply.test.js index 37268bad..334122e8 100644 --- a/test/premultiply.test.js +++ b/test/premultiply.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; describe('Premultiply colors', () => { it('premultiply rgba', () => { diff --git a/test/random.test.js b/test/random.test.js index 4b34a0a8..6c9510f6 100644 --- a/test/random.test.js +++ b/test/random.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; describe('Some tests for random colors', () => { it('should generate valid hex codes for random colors', () => { diff --git a/test/scale.lcorrection.test.js b/test/scale.lcorrection.test.js index a34c9a93..9d89a573 100644 --- a/test/scale.lcorrection.test.js +++ b/test/scale.lcorrection.test.js @@ -1,9 +1,11 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; + +const scale = chroma.scale; describe('Testing lightness correction', () => { describe('simple two color linear interpolation', () => { - const f = chroma.scale(['white', 'black']).mode('lab'); + const f = scale(['white', 'black']).mode('lab'); it('center L is 50', () => { expect(Math.round(f(0.5).lab()[0])).toBe(50); @@ -11,7 +13,7 @@ describe('Testing lightness correction', () => { }); describe('hot - w/o correction', () => { - const f = chroma.scale(['white', 'yellow', 'red', 'black']).mode('lab'); + const f = scale(['white', 'yellow', 'red', 'black']).mode('lab'); it('center L is 74', () => { expect(Math.round(f(0.5).lab()[0])).toBe(74); @@ -19,7 +21,7 @@ describe('Testing lightness correction', () => { }); describe('hot - with correction', () => { - const f = chroma.scale(['white', 'yellow', 'red', 'black']).mode('lab').correctLightness(true); + const f = scale(['white', 'yellow', 'red', 'black']).mode('lab').correctLightness(true); it('center L is 50', () => { expect(Math.round(f(0.5).lab()[0])).toBe(50); @@ -27,7 +29,7 @@ describe('Testing lightness correction', () => { }); describe('hot - w/o correction - domained [0,100]', () => { - const f = chroma.scale(['white', 'yellow', 'red', 'black']).domain([0, 100]).mode('lab'); + const f = scale(['white', 'yellow', 'red', 'black']).domain([0, 100]).mode('lab'); it('center L is 74', () => { expect(Math.round(f(50).lab()[0])).toBe(74); @@ -35,7 +37,7 @@ describe('Testing lightness correction', () => { }); describe('hot - with correction - domained [0,100]', () => { - const f = chroma.scale(['white', 'yellow', 'red', 'black']).domain([0, 100]).mode('lab').correctLightness(true); + const f = scale(['white', 'yellow', 'red', 'black']).domain([0, 100]).mode('lab').correctLightness(true); it('center L is 50', () => { expect(Math.round(f(50).lab()[0])).toBe(50); @@ -43,7 +45,7 @@ describe('Testing lightness correction', () => { }); describe('hot - w/o correction - domained [0,20,40,60,80,100]', () => { - const f = chroma.scale(['white', 'yellow', 'red', 'black']).domain([0, 20, 40, 60, 80, 100]).mode('lab'); + const f = scale(['white', 'yellow', 'red', 'black']).domain([0, 20, 40, 60, 80, 100]).mode('lab'); it('center L is 74', () => { expect(Math.round(f(50).lab()[0])).toBe(74); @@ -51,7 +53,7 @@ describe('Testing lightness correction', () => { }); describe('hot - with correction - domained [0,20,40,60,80,100]', () => { - const f = chroma.scale(['white', 'yellow', 'red', 'black']).domain([0, 20, 40, 60, 80, 100]).mode('lab').correctLightness(true); + const f = scale(['white', 'yellow', 'red', 'black']).domain([0, 20, 40, 60, 80, 100]).mode('lab').correctLightness(true); it('center L is 50', () => { expect(Math.round(f(50).lab()[0])).toBe(50); diff --git a/test/scales.test.js b/test/scales.test.js index 2d262d76..19db7fa7 100644 --- a/test/scales.test.js +++ b/test/scales.test.js @@ -1,6 +1,7 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; -import scale from '../src/generator/scale.js'; +import chroma from '../dist/index.mjs'; + +const scale = chroma.scale; describe('Some tests for scale()', () => { describe('simple rgb scale (white-->black)', () => { diff --git a/test/valid.test.js b/test/valid.test.js index 96f9da13..186e88f8 100644 --- a/test/valid.test.js +++ b/test/valid.test.js @@ -1,12 +1,14 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../index.js'; +import chroma from '../dist/index.mjs'; + +const valid = chroma.valid; describe('Some tests for chroma.valid', () => { it('valid color', () => { - expect(chroma.valid('red')).toBe(true); + expect(valid('red')).toBe(true); }); it('invalid color', () => { - expect(chroma.valid('bread')).toBe(false); + expect(valid('bread')).toBe(false); }); }); From f6ff9889c24ead6f7a64e617288f7313fcfab0f3 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 2 Aug 2024 00:04:12 +0800 Subject: [PATCH 04/18] chore: update --- test/alpha.test.js | 2 +- test/analyze.test.js | 2 +- test/autodetect.test.js | 2 +- test/average.test.js | 2 +- test/bezier.test.js | 2 +- test/blend.test.js | 2 +- test/color.test.js | 2 +- test/contrast.test.js | 2 +- test/converters.test.js | 2 +- test/css2rgb.test.js | 2 +- test/cubehelix.test.js | 2 +- test/delta-e.test.js | 2 +- test/docs.test.js | 2 +- test/lch.test.js | 2 +- test/luminance.test.js | 2 +- test/manipulate.test.js | 2 +- test/misc.test.js | 2 +- test/mix.test.js | 2 +- test/num.test.js | 2 +- test/premultiply.test.js | 2 +- test/random.test.js | 2 +- test/scale.lcorrection.test.js | 2 +- test/scales.test.js | 2 +- test/valid.test.js | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/test/alpha.test.js b/test/alpha.test.js index ed8408ae..34545daa 100644 --- a/test/alpha.test.js +++ b/test/alpha.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; describe('Tests for the alpha channel', () => { it('setting & getting alpha channel', () => { diff --git a/test/analyze.test.js b/test/analyze.test.js index c25e46b8..125e0eed 100644 --- a/test/analyze.test.js +++ b/test/analyze.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const analyze = chroma.analyze; diff --git a/test/autodetect.test.js b/test/autodetect.test.js index 2d861003..d44abab3 100644 --- a/test/autodetect.test.js +++ b/test/autodetect.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; describe('autodetect color', () => { it('autodetect named color', () => { diff --git a/test/average.test.js b/test/average.test.js index e1e7a8ea..39423b20 100644 --- a/test/average.test.js +++ b/test/average.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const average = chroma.average; diff --git a/test/bezier.test.js b/test/bezier.test.js index 794c5e77..a40f9617 100644 --- a/test/bezier.test.js +++ b/test/bezier.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const bezier = chroma.bezier; diff --git a/test/blend.test.js b/test/blend.test.js index 1d202756..3173c700 100644 --- a/test/blend.test.js +++ b/test/blend.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const blend = chroma.blend; diff --git a/test/color.test.js b/test/color.test.js index 8da71ab7..b8d26a60 100644 --- a/test/color.test.js +++ b/test/color.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const Color = chroma.Color; diff --git a/test/contrast.test.js b/test/contrast.test.js index a4208da1..dbb8d346 100644 --- a/test/contrast.test.js +++ b/test/contrast.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const contrast = chroma.contrast; diff --git a/test/converters.test.js b/test/converters.test.js index 133a26b7..5d0180a1 100644 --- a/test/converters.test.js +++ b/test/converters.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; describe('Testing color conversions', () => { for (const colorName in chroma.colors) { diff --git a/test/css2rgb.test.js b/test/css2rgb.test.js index 62a87b5c..b2a897ae 100644 --- a/test/css2rgb.test.js +++ b/test/css2rgb.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const css2rgb = chroma.input.format.css; diff --git a/test/cubehelix.test.js b/test/cubehelix.test.js index 66fc1cfc..50a1d896 100644 --- a/test/cubehelix.test.js +++ b/test/cubehelix.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const cubehelix = chroma.cubehelix; diff --git a/test/delta-e.test.js b/test/delta-e.test.js index e72fdb68..7c53f4bc 100644 --- a/test/delta-e.test.js +++ b/test/delta-e.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const deltaE = chroma.deltaE; diff --git a/test/docs.test.js b/test/docs.test.js index 0292209f..02e35db4 100644 --- a/test/docs.test.js +++ b/test/docs.test.js @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest'; import fs from 'node:fs'; -import chroma_ from '../dist/index.mjs'; +import chroma_ from '../dist/index.js'; const DOCS = fs.readFileSync(__dirname + '/../docs/src/index.md', 'utf-8'); diff --git a/test/lch.test.js b/test/lch.test.js index eed1606d..2f14bb88 100644 --- a/test/lch.test.js +++ b/test/lch.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; describe('Some tests for chroma.lch()', () => { describe('lch grayscale', () => { diff --git a/test/luminance.test.js b/test/luminance.test.js index f034a379..98c00e19 100644 --- a/test/luminance.test.js +++ b/test/luminance.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const rnd = function (f, d) { d = Math.pow(10, d); diff --git a/test/manipulate.test.js b/test/manipulate.test.js index fedeb812..16bab187 100644 --- a/test/manipulate.test.js +++ b/test/manipulate.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; describe('Manipulating colors', () => { it('darken', () => { diff --git a/test/misc.test.js b/test/misc.test.js index 9b20e0c7..de026959 100644 --- a/test/misc.test.js +++ b/test/misc.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const round = function (digits) { var d; diff --git a/test/mix.test.js b/test/mix.test.js index bf6a76aa..0eb6bc5f 100644 --- a/test/mix.test.js +++ b/test/mix.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; describe('Some tests for chroma.color()', () => { it('hsv interpolation white <-> red', () => { diff --git a/test/num.test.js b/test/num.test.js index 7e489220..31ac5657 100644 --- a/test/num.test.js +++ b/test/num.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; describe('Some tests for chroma.num()', () => { it('number output', () => { diff --git a/test/premultiply.test.js b/test/premultiply.test.js index 334122e8..3d6c1c23 100644 --- a/test/premultiply.test.js +++ b/test/premultiply.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; describe('Premultiply colors', () => { it('premultiply rgba', () => { diff --git a/test/random.test.js b/test/random.test.js index 6c9510f6..a632d7cc 100644 --- a/test/random.test.js +++ b/test/random.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; describe('Some tests for random colors', () => { it('should generate valid hex codes for random colors', () => { diff --git a/test/scale.lcorrection.test.js b/test/scale.lcorrection.test.js index 9d89a573..8a8471e4 100644 --- a/test/scale.lcorrection.test.js +++ b/test/scale.lcorrection.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const scale = chroma.scale; diff --git a/test/scales.test.js b/test/scales.test.js index 19db7fa7..358bbff1 100644 --- a/test/scales.test.js +++ b/test/scales.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const scale = chroma.scale; diff --git a/test/valid.test.js b/test/valid.test.js index 186e88f8..7f4bb0f9 100644 --- a/test/valid.test.js +++ b/test/valid.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.mjs'; +import chroma from '../dist/index.js'; const valid = chroma.valid; From ef4797f251eff35d951a0792fc59d61fa024af49 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 2 Aug 2024 11:03:02 +0800 Subject: [PATCH 05/18] chore: test adjustment --- test/{ => docs}/docs.test.js | 15 +++++-- test/{ => io}/cmyk2rgb.test.js | 2 +- test/{ => io}/hcg2rgb.test.js | 2 +- test/{ => io}/hex2rgb.test.js | 78 +++++++++++++++++++++++++++++---- test/{ => io}/hsi2rgb.test.js | 2 +- test/{ => io}/hsl2rgb.test.js | 2 +- test/{ => io}/hsv2rgb.test.js | 2 +- test/{ => io}/lab2lch.test.js | 20 +++++++-- test/{ => io}/lab2rgb.test.js | 4 +- test/{ => io}/lch2lab.test.js | 20 +++++++-- test/{ => io}/lch2rgb.test.js | 4 +- test/{ => io}/num2rgb.test.js | 2 +- test/{ => io}/oklab2rgb.test.js | 4 +- test/{ => io}/oklch2rgb.test.js | 29 +++++++++--- test/{ => io}/rgb2cmyk.test.js | 2 +- test/{ => io}/rgb2css.test.js | 14 ++++-- test/{ => io}/rgb2hex.test.js | 2 +- test/{ => io}/rgb2hsi.test.js | 2 +- test/{ => io}/rgb2hsv.test.js | 2 +- test/{ => io}/rgb2lab.test.js | 2 +- test/{ => io}/rgb2lch.test.js | 2 +- test/{ => io}/rgb2oklab.test.js | 2 +- test/{ => io}/rgb2oklch.test.js | 6 ++- 23 files changed, 168 insertions(+), 52 deletions(-) rename test/{ => docs}/docs.test.js (61%) rename test/{ => io}/cmyk2rgb.test.js (97%) rename test/{ => io}/hcg2rgb.test.js (96%) rename test/{ => io}/hex2rgb.test.js (60%) rename test/{ => io}/hsi2rgb.test.js (96%) rename test/{ => io}/hsl2rgb.test.js (95%) rename test/{ => io}/hsv2rgb.test.js (94%) rename test/{ => io}/lab2lch.test.js (77%) rename test/{ => io}/lab2rgb.test.js (92%) rename test/{ => io}/lch2lab.test.js (77%) rename test/{ => io}/lch2rgb.test.js (94%) rename test/{ => io}/num2rgb.test.js (94%) rename test/{ => io}/oklab2rgb.test.js (93%) rename test/{ => io}/oklch2rgb.test.js (63%) rename test/{ => io}/rgb2cmyk.test.js (93%) rename test/{ => io}/rgb2css.test.js (80%) rename test/{ => io}/rgb2hex.test.js (96%) rename test/{ => io}/rgb2hsi.test.js (96%) rename test/{ => io}/rgb2hsv.test.js (95%) rename test/{ => io}/rgb2lab.test.js (96%) rename test/{ => io}/rgb2lch.test.js (96%) rename test/{ => io}/rgb2oklab.test.js (96%) rename test/{ => io}/rgb2oklch.test.js (92%) diff --git a/test/docs.test.js b/test/docs/docs.test.js similarity index 61% rename from test/docs.test.js rename to test/docs/docs.test.js index 02e35db4..a0f3b4c9 100644 --- a/test/docs.test.js +++ b/test/docs/docs.test.js @@ -1,13 +1,20 @@ import { describe, it, expect } from 'vitest'; import fs from 'node:fs'; -import chroma_ from '../dist/index.js'; +import path from 'node:path'; +import chroma_ from '../../dist/index.js'; -const DOCS = fs.readFileSync(__dirname + '/../docs/src/index.md', 'utf-8'); +const docsPath = path.resolve(__dirname, '../../docs/src/index.md'); +const DOCS = fs.readFileSync(docsPath, 'utf-8'); -const snippets = DOCS.match(/^```js$\n(^[^`].+$\n)+/gm).map((s) => s.split('\n').slice(1).join('\n')); +const snippets = DOCS.match(/^```js$\n(^[^`].+$\n)+/gm).map((s) => + s.split('\n').slice(1).join('\n') +); // is used in eval; -const data = [2.0, 3.5, 3.6, 3.8, 3.8, 4.1, 4.3, 4.4, 4.6, 4.9, 5.2, 5.3, 5.4, 5.7, 5.8, 5.9, 6.2, 6.5, 6.8, 7.2, 8]; +const data = [ + 2.0, 3.5, 3.6, 3.8, 3.8, 4.1, 4.3, 4.4, 4.6, 4.9, 5.2, 5.3, 5.4, 5.7, 5.8, + 5.9, 6.2, 6.5, 6.8, 7.2, 8 +]; describe('Tests all snippets in the documentation', () => { // referenced in code snippets diff --git a/test/cmyk2rgb.test.js b/test/io/cmyk2rgb.test.js similarity index 97% rename from test/cmyk2rgb.test.js rename to test/io/cmyk2rgb.test.js index cce00839..6f4016f5 100644 --- a/test/cmyk2rgb.test.js +++ b/test/io/cmyk2rgb.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import cmyk2rgb from '../src/io/cmyk/cmyk2rgb.js'; +import cmyk2rgb from '../../src/io/cmyk/cmyk2rgb.js'; const cmykColors = [ [0, 0, 0, 1], diff --git a/test/hcg2rgb.test.js b/test/io/hcg2rgb.test.js similarity index 96% rename from test/hcg2rgb.test.js rename to test/io/hcg2rgb.test.js index 885579c9..5e49baaf 100644 --- a/test/hcg2rgb.test.js +++ b/test/io/hcg2rgb.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import hcg2rgb from '../src/io/hcg/hcg2rgb.js'; +import hcg2rgb from '../../src/io/hcg/hcg2rgb.js'; describe('Testing HCG color conversions', () => { const colors = { diff --git a/test/hex2rgb.test.js b/test/io/hex2rgb.test.js similarity index 60% rename from test/hex2rgb.test.js rename to test/io/hex2rgb.test.js index a30b1c87..c93cea9d 100644 --- a/test/hex2rgb.test.js +++ b/test/io/hex2rgb.test.js @@ -1,16 +1,76 @@ import { describe, it, expect } from 'vitest'; -import hex2rgb from '../src/io/hex/hex2rgb.js'; +import hex2rgb from '../../src/io/hex/hex2rgb.js'; describe('Testing HEX2RGB color conversions', () => { const testCases = { - 'parse simple #rrggbb HEX colors': ['#000000', '#ffffff', '#ff0000', '#00ff00', '#0000ff', '#ffff00', '#00ffff', '#ff00ff'], - 'parse simple rrggbb HEX colors without #': ['000000', 'ffffff', 'ff0000', '00ff00', '0000ff', 'ffff00', '00ffff', 'ff00ff'], - 'parse simple short-hand HEX colors': ['#000', '#fff', '#f00', '#0f0', '#00f', '#ff0', '#0ff', '#f0f'], - 'parse simple short-hand HEX colors without #': ['000', 'fff', 'f00', '0f0', '00f', 'ff0', '0ff', 'f0f'], - 'parse different #rrggbbaa HEX colors': ['#00000000', '#ffffff80', '#ff000040', '#00FF00C0', '#FF00FFFF'], - 'parse different rrggbbaa HEX colors without #': ['00000000', 'ffffff80', 'ff000040', '00FF00C0', 'FF00FFFF'], - 'parse different #rgba HEX colors': ['#0000', '#fff8', '#f004', '#0F0C', '#F0FF'], - 'parse different rgba HEX colors without #': ['0000', 'fff8', 'f004', '0F0C', 'F0FF'] + 'parse simple #rrggbb HEX colors': [ + '#000000', + '#ffffff', + '#ff0000', + '#00ff00', + '#0000ff', + '#ffff00', + '#00ffff', + '#ff00ff' + ], + 'parse simple rrggbb HEX colors without #': [ + '000000', + 'ffffff', + 'ff0000', + '00ff00', + '0000ff', + 'ffff00', + '00ffff', + 'ff00ff' + ], + 'parse simple short-hand HEX colors': [ + '#000', + '#fff', + '#f00', + '#0f0', + '#00f', + '#ff0', + '#0ff', + '#f0f' + ], + 'parse simple short-hand HEX colors without #': [ + '000', + 'fff', + 'f00', + '0f0', + '00f', + 'ff0', + '0ff', + 'f0f' + ], + 'parse different #rrggbbaa HEX colors': [ + '#00000000', + '#ffffff80', + '#ff000040', + '#00FF00C0', + '#FF00FFFF' + ], + 'parse different rrggbbaa HEX colors without #': [ + '00000000', + 'ffffff80', + 'ff000040', + '00FF00C0', + 'FF00FFFF' + ], + 'parse different #rgba HEX colors': [ + '#0000', + '#fff8', + '#f004', + '#0F0C', + '#F0FF' + ], + 'parse different rgba HEX colors without #': [ + '0000', + 'fff8', + 'f004', + '0F0C', + 'F0FF' + ] }; const expectedResults = { diff --git a/test/hsi2rgb.test.js b/test/io/hsi2rgb.test.js similarity index 96% rename from test/hsi2rgb.test.js rename to test/io/hsi2rgb.test.js index c358a2f7..d92320a9 100644 --- a/test/hsi2rgb.test.js +++ b/test/io/hsi2rgb.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import hsi2rgb from '../src/io/hsi/hsi2rgb.js'; +import hsi2rgb from '../../src/io/hsi/hsi2rgb.js'; const round = (digits) => { const d = Math.pow(10, digits); diff --git a/test/hsl2rgb.test.js b/test/io/hsl2rgb.test.js similarity index 95% rename from test/hsl2rgb.test.js rename to test/io/hsl2rgb.test.js index aeaf59aa..ff80cacc 100644 --- a/test/hsl2rgb.test.js +++ b/test/io/hsl2rgb.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import hsl2rgb from '../src/io/hsl/hsl2rgb.js'; +import hsl2rgb from '../../src/io/hsl/hsl2rgb.js'; describe('Testing HSL to RGB color conversions', () => { const testCases = [ diff --git a/test/hsv2rgb.test.js b/test/io/hsv2rgb.test.js similarity index 94% rename from test/hsv2rgb.test.js rename to test/io/hsv2rgb.test.js index c0fd7154..dcacf9eb 100644 --- a/test/hsv2rgb.test.js +++ b/test/io/hsv2rgb.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import hsv2rgb from '../src/io/hsv/hsv2rgb.js'; +import hsv2rgb from '../../src/io/hsv/hsv2rgb.js'; describe('Testing HSV to RGB color conversions', () => { const testCases = [ diff --git a/test/lab2lch.test.js b/test/io/lab2lch.test.js similarity index 77% rename from test/lab2lch.test.js rename to test/io/lab2lch.test.js index a995ef81..0944747f 100644 --- a/test/lab2lch.test.js +++ b/test/io/lab2lch.test.js @@ -1,16 +1,28 @@ import { describe, it, expect } from 'vitest'; -import lab2lch from '../src/io/lch/lab2lch.js'; +import lab2lch from '../../src/io/lch/lab2lch.js'; const testCases = [ { name: 'black', lab: [0, 0, 0], lch: [0, 0, NaN] }, { name: 'white', lab: [100, 0, 0], lch: [100, 0, NaN] }, { name: 'gray', lab: [53.59, 0, 0], lch: [53.59, 0, NaN] }, { name: 'red', lab: [53.24, 80.09, 67.2], lch: [53.24, 104.55, 40] }, - { name: 'yellow', lab: [97.14, -21.55, 94.48], lch: [97.14, 96.91, 102.85] }, - { name: 'green', lab: [87.73, -86.18, 83.18], lch: [87.73, 119.77, 136.01] }, + { + name: 'yellow', + lab: [97.14, -21.55, 94.48], + lch: [97.14, 96.91, 102.85] + }, + { + name: 'green', + lab: [87.73, -86.18, 83.18], + lch: [87.73, 119.77, 136.01] + }, { name: 'cyan', lab: [91.11, -48.09, -14.13], lch: [91.11, 50.12, 196.37] }, { name: 'blue', lab: [32.3, 79.19, -107.86], lch: [32.3, 133.81, 306.29] }, - { name: 'magenta', lab: [60.32, 98.23, -60.82], lch: [60.32, 115.53, 328.24] } + { + name: 'magenta', + lab: [60.32, 98.23, -60.82], + lch: [60.32, 115.53, 328.24] + } ]; const round = (digits) => { diff --git a/test/lab2rgb.test.js b/test/io/lab2rgb.test.js similarity index 92% rename from test/lab2rgb.test.js rename to test/io/lab2rgb.test.js index 7e16c61f..13986cb3 100644 --- a/test/lab2rgb.test.js +++ b/test/io/lab2rgb.test.js @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest'; -import lab2rgb from '../src/io/lab/lab2rgb.js'; -import limit from '../src/utils/limit.js'; +import lab2rgb from '../../src/io/lab/lab2rgb.js'; +import limit from '../../src/utils/limit.js'; const round = (v) => limit(Math.round(v), +0, 255); diff --git a/test/lch2lab.test.js b/test/io/lch2lab.test.js similarity index 77% rename from test/lch2lab.test.js rename to test/io/lch2lab.test.js index 2ccd2e2d..f69b9fcb 100644 --- a/test/lch2lab.test.js +++ b/test/io/lch2lab.test.js @@ -1,16 +1,28 @@ import { describe, it, expect } from 'vitest'; -import lch2lab from '../src/io/lch/lch2lab.js'; +import lch2lab from '../../src/io/lch/lch2lab.js'; const testCases = [ { name: 'black', lab: [0, 0, 0], lch: [0, 0, NaN] }, { name: 'white', lab: [100, 0, 0], lch: [100, 0, NaN] }, { name: 'gray', lab: [53.59, 0, 0], lch: [53.59, 0, NaN] }, { name: 'red', lab: [53.24, 80.09, 67.2], lch: [53.24, 104.55, 40] }, - { name: 'yellow', lab: [97.14, -21.55, 94.48], lch: [97.14, 96.91, 102.85] }, - { name: 'green', lab: [87.73, -86.17, 83.18], lch: [87.73, 119.77, 136.01] }, + { + name: 'yellow', + lab: [97.14, -21.55, 94.48], + lch: [97.14, 96.91, 102.85] + }, + { + name: 'green', + lab: [87.73, -86.17, 83.18], + lch: [87.73, 119.77, 136.01] + }, { name: 'cyan', lab: [91.11, -48.09, -14.13], lch: [91.11, 50.12, 196.37] }, { name: 'blue', lab: [32.3, 79.2, -107.86], lch: [32.3, 133.81, 306.29] }, - { name: 'magenta', lab: [60.32, 98.23, -60.81], lch: [60.32, 115.53, 328.24] } + { + name: 'magenta', + lab: [60.32, 98.23, -60.81], + lch: [60.32, 115.53, 328.24] + } ]; const round = (digits) => { diff --git a/test/lch2rgb.test.js b/test/io/lch2rgb.test.js similarity index 94% rename from test/lch2rgb.test.js rename to test/io/lch2rgb.test.js index cb5b297c..964736b4 100644 --- a/test/lch2rgb.test.js +++ b/test/io/lch2rgb.test.js @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest'; -import limit from '../src/utils/limit.js'; -import lch2rgb from '../src/io/lch/lch2rgb.js'; +import limit from '../../src/utils/limit.js'; +import lch2rgb from '../../src/io/lch/lch2rgb.js'; const testCases = [ { name: 'black', in: [0, 0, NaN], out: [0, 0, 0, 1] }, diff --git a/test/num2rgb.test.js b/test/io/num2rgb.test.js similarity index 94% rename from test/num2rgb.test.js rename to test/io/num2rgb.test.js index 1c1124b4..290ffc5b 100644 --- a/test/num2rgb.test.js +++ b/test/io/num2rgb.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import num2rgb from '../src/io/num/num2rgb.js'; +import num2rgb from '../../src/io/num/num2rgb.js'; describe('Testing num2rgb color conversions', () => { const testCases = { diff --git a/test/oklab2rgb.test.js b/test/io/oklab2rgb.test.js similarity index 93% rename from test/oklab2rgb.test.js rename to test/io/oklab2rgb.test.js index 07402d2c..92684d8a 100644 --- a/test/oklab2rgb.test.js +++ b/test/io/oklab2rgb.test.js @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest'; -import limit from '../src/utils/limit.js'; -import oklab2rgb from '../src/io/oklab/oklab2rgb.js'; +import limit from '../../src/utils/limit.js'; +import oklab2rgb from '../../src/io/oklab/oklab2rgb.js'; const round = (v) => limit(Math.round(v), 0, 255); diff --git a/test/oklch2rgb.test.js b/test/io/oklch2rgb.test.js similarity index 63% rename from test/oklch2rgb.test.js rename to test/io/oklch2rgb.test.js index 734b789a..f0de157d 100644 --- a/test/oklch2rgb.test.js +++ b/test/io/oklch2rgb.test.js @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest'; -import limit from '../src/utils/limit.js'; -import oklch2rgb from '../src/io/oklch/oklch2rgb.js'; +import limit from '../../src/utils/limit.js'; +import oklch2rgb from '../../src/io/oklch/oklch2rgb.js'; const round = (v) => limit(Math.round(v), 0, 255); @@ -9,12 +9,27 @@ describe('Testing LCH conversions', () => { black: { in: [0.0, 0.0, NaN], out: [0, 0, 0, 1] }, white: { in: [1.0, 0.0, NaN], out: [255, 255, 255, 1] }, gray: { in: [0.59987, 0.0, NaN], out: [128, 128, 128, 1] }, - red: { in: [0.62796, 0.25768, 29.233885192342633], out: [255, 0, 0, 1] }, - yellow: { in: [0.96798, 0.21101, 109.76923207652125], out: [255, 255, 0, 1] }, - green: { in: [0.51975, 0.17686, 142.49533888780996], out: [0, 128, 0, 1] }, - cyan: { in: [0.9054, 0.15455, 194.76894793196382], out: [0, 255, 255, 1] }, + red: { + in: [0.62796, 0.25768, 29.233885192342633], + out: [255, 0, 0, 1] + }, + yellow: { + in: [0.96798, 0.21101, 109.76923207652125], + out: [255, 255, 0, 1] + }, + green: { + in: [0.51975, 0.17686, 142.49533888780996], + out: [0, 128, 0, 1] + }, + cyan: { + in: [0.9054, 0.15455, 194.76894793196382], + out: [0, 255, 255, 1] + }, blue: { in: [0.45201, 0.31321, 264.052020638055], out: [0, 0, 255, 1] }, - magenta: { in: [0.70167, 0.32249, 328.36341792345144], out: [255, 0, 255, 1] } + magenta: { + in: [0.70167, 0.32249, 328.36341792345144], + out: [255, 0, 255, 1] + } }; Object.keys(testCases).forEach((key) => { diff --git a/test/rgb2cmyk.test.js b/test/io/rgb2cmyk.test.js similarity index 93% rename from test/rgb2cmyk.test.js rename to test/io/rgb2cmyk.test.js index 6e99ef55..7c12f5ab 100644 --- a/test/rgb2cmyk.test.js +++ b/test/io/rgb2cmyk.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import rgb2cmyk from '../src/io/cmyk/rgb2cmyk.js'; +import rgb2cmyk from '../../src/io/cmyk/rgb2cmyk.js'; const tests = { black: { cmyk: [0, 0, 0, 1], rgb: [0, 0, 0, 1] }, diff --git a/test/rgb2css.test.js b/test/io/rgb2css.test.js similarity index 80% rename from test/rgb2css.test.js rename to test/io/rgb2css.test.js index 9e852cef..b1dcbeaf 100644 --- a/test/rgb2css.test.js +++ b/test/io/rgb2css.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import rgb2css from '../src/io/css/rgb2css.js'; +import rgb2css from '../../src/io/css/rgb2css.js'; const tests = { black: { rgb: [0, 0, 0], css: 'rgb(0,0,0)' }, @@ -7,8 +7,16 @@ const tests = { auto_rgba: { rgb: [255, 0, 0, 0.25], css: 'rgba(255,0,0,0.25)' }, force_rgba: { rgb: [255, 0, 0], mode: 'rgba', css: 'rgba(255,0,0,1)' }, hsl: { rgb: [255, 0, 0], mode: 'hsl', css: 'hsl(0,100%,50%)' }, - auto_hsla: { rgb: [255, 0, 0, 0.5], mode: 'hsl', css: 'hsla(0,100%,50%,0.5)' }, - force_hsla: { rgb: [255, 255, 0, 0.75], mode: 'hsl', css: 'hsla(60,100%,50%,0.75)' } + auto_hsla: { + rgb: [255, 0, 0, 0.5], + mode: 'hsl', + css: 'hsla(0,100%,50%,0.5)' + }, + force_hsla: { + rgb: [255, 255, 0, 0.75], + mode: 'hsl', + css: 'hsla(60,100%,50%,0.75)' + } }; describe('Testing rgb2css color conversions', () => { diff --git a/test/rgb2hex.test.js b/test/io/rgb2hex.test.js similarity index 96% rename from test/rgb2hex.test.js rename to test/io/rgb2hex.test.js index 771a7443..4d637719 100644 --- a/test/rgb2hex.test.js +++ b/test/io/rgb2hex.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import rgb2hex from '../src/io/hex/rgb2hex.js'; +import rgb2hex from '../../src/io/hex/rgb2hex.js'; const tests = { black: { rgb: [0, 0, 0, 1], mode: 'auto', hex: '#000000' }, diff --git a/test/rgb2hsi.test.js b/test/io/rgb2hsi.test.js similarity index 96% rename from test/rgb2hsi.test.js rename to test/io/rgb2hsi.test.js index e44d890d..1edfc463 100644 --- a/test/rgb2hsi.test.js +++ b/test/io/rgb2hsi.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import rgb2hsi from '../src/io/hsi/rgb2hsi.js'; +import rgb2hsi from '../../src/io/hsi/rgb2hsi.js'; const tests = { black2: { hsi: [NaN, 0, 0], rgb: [0, 0, 0, 1] }, diff --git a/test/rgb2hsv.test.js b/test/io/rgb2hsv.test.js similarity index 95% rename from test/rgb2hsv.test.js rename to test/io/rgb2hsv.test.js index 098a60b3..83b55451 100644 --- a/test/rgb2hsv.test.js +++ b/test/io/rgb2hsv.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import rgb2hsv from '../src/io/hsv/rgb2hsv.js'; +import rgb2hsv from '../../src/io/hsv/rgb2hsv.js'; const tests = { black: { hsv: [NaN, 0, 0], rgb: [0, 0, 0, 1] }, diff --git a/test/rgb2lab.test.js b/test/io/rgb2lab.test.js similarity index 96% rename from test/rgb2lab.test.js rename to test/io/rgb2lab.test.js index 5f18e654..08d08ef0 100644 --- a/test/rgb2lab.test.js +++ b/test/io/rgb2lab.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import rgb2lab from '../src/io/lab/rgb2lab.js'; +import rgb2lab from '../../src/io/lab/rgb2lab.js'; const round = (digits) => { const d = Math.pow(10, digits); diff --git a/test/rgb2lch.test.js b/test/io/rgb2lch.test.js similarity index 96% rename from test/rgb2lch.test.js rename to test/io/rgb2lch.test.js index 74a09bbb..ec6e9c14 100644 --- a/test/rgb2lch.test.js +++ b/test/io/rgb2lch.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import rgb2lch from '../src/io/lch/rgb2lch.js'; +import rgb2lch from '../../src/io/lch/rgb2lch.js'; const round = (digits) => { const d = Math.pow(10, digits); diff --git a/test/rgb2oklab.test.js b/test/io/rgb2oklab.test.js similarity index 96% rename from test/rgb2oklab.test.js rename to test/io/rgb2oklab.test.js index afaceddf..d2736d30 100644 --- a/test/rgb2oklab.test.js +++ b/test/io/rgb2oklab.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import rgb2oklab from '../src/io/oklab/rgb2oklab.js'; +import rgb2oklab from '../../src/io/oklab/rgb2oklab.js'; const round = (digits) => { const d = Math.pow(10, digits); diff --git a/test/rgb2oklch.test.js b/test/io/rgb2oklch.test.js similarity index 92% rename from test/rgb2oklch.test.js rename to test/io/rgb2oklch.test.js index 07725f8d..09e8f795 100644 --- a/test/rgb2oklch.test.js +++ b/test/io/rgb2oklch.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import rgb2oklch from '../src/io/oklch/rgb2oklch.js'; +import rgb2oklch from '../../src/io/oklch/rgb2oklch.js'; const tests = { black: { oklch: [0.0, 0.0, NaN], rgb: [0, 0, 0, 1] }, @@ -37,7 +37,9 @@ describe('Test rgb2oklch color conversions', () => { }); it('converts arguments', () => { - expect(rgb2oklch.apply(null, test.rgb).map(rnd)).toEqual(test.oklch); + expect(rgb2oklch.apply(null, test.rgb).map(rnd)).toEqual( + test.oklch + ); }); }); }); From ba591c54a4404f8f043b3f6fdef85b4507196d11 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 2 Aug 2024 11:09:39 +0800 Subject: [PATCH 06/18] test: alias chroma-js --- test/alpha.test.js | 2 +- test/analyze.test.js | 2 +- test/autodetect.test.js | 2 +- test/average.test.js | 2 +- test/bezier.test.js | 2 +- test/blend.test.js | 2 +- test/color.test.js | 2 +- test/contrast.test.js | 2 +- test/converters.test.js | 2 +- test/css2rgb.test.js | 2 +- test/cubehelix.test.js | 2 +- test/delta-e.test.js | 2 +- test/lch.test.js | 2 +- test/luminance.test.js | 2 +- test/manipulate.test.js | 2 +- test/misc.test.js | 2 +- test/mix.test.js | 2 +- test/num.test.js | 2 +- test/premultiply.test.js | 2 +- test/random.test.js | 2 +- test/scale.lcorrection.test.js | 2 +- test/scales.test.js | 2 +- test/valid.test.js | 2 +- vitest.config.mjs | 13 +++++++++++++ 24 files changed, 36 insertions(+), 23 deletions(-) create mode 100644 vitest.config.mjs diff --git a/test/alpha.test.js b/test/alpha.test.js index 34545daa..7e4abee6 100644 --- a/test/alpha.test.js +++ b/test/alpha.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; describe('Tests for the alpha channel', () => { it('setting & getting alpha channel', () => { diff --git a/test/analyze.test.js b/test/analyze.test.js index 125e0eed..bf26b28d 100644 --- a/test/analyze.test.js +++ b/test/analyze.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const analyze = chroma.analyze; diff --git a/test/autodetect.test.js b/test/autodetect.test.js index d44abab3..f0d4b14f 100644 --- a/test/autodetect.test.js +++ b/test/autodetect.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; describe('autodetect color', () => { it('autodetect named color', () => { diff --git a/test/average.test.js b/test/average.test.js index 39423b20..fd67f215 100644 --- a/test/average.test.js +++ b/test/average.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const average = chroma.average; diff --git a/test/bezier.test.js b/test/bezier.test.js index a40f9617..6122123b 100644 --- a/test/bezier.test.js +++ b/test/bezier.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const bezier = chroma.bezier; diff --git a/test/blend.test.js b/test/blend.test.js index 3173c700..6263f0d9 100644 --- a/test/blend.test.js +++ b/test/blend.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const blend = chroma.blend; diff --git a/test/color.test.js b/test/color.test.js index b8d26a60..8eb48b5c 100644 --- a/test/color.test.js +++ b/test/color.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const Color = chroma.Color; diff --git a/test/contrast.test.js b/test/contrast.test.js index dbb8d346..7ed5eaeb 100644 --- a/test/contrast.test.js +++ b/test/contrast.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const contrast = chroma.contrast; diff --git a/test/converters.test.js b/test/converters.test.js index 5d0180a1..e3149e95 100644 --- a/test/converters.test.js +++ b/test/converters.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; describe('Testing color conversions', () => { for (const colorName in chroma.colors) { diff --git a/test/css2rgb.test.js b/test/css2rgb.test.js index b2a897ae..619aa0ed 100644 --- a/test/css2rgb.test.js +++ b/test/css2rgb.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const css2rgb = chroma.input.format.css; diff --git a/test/cubehelix.test.js b/test/cubehelix.test.js index 50a1d896..5a3c3908 100644 --- a/test/cubehelix.test.js +++ b/test/cubehelix.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const cubehelix = chroma.cubehelix; diff --git a/test/delta-e.test.js b/test/delta-e.test.js index 7c53f4bc..c29100b4 100644 --- a/test/delta-e.test.js +++ b/test/delta-e.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const deltaE = chroma.deltaE; diff --git a/test/lch.test.js b/test/lch.test.js index 2f14bb88..48c9b363 100644 --- a/test/lch.test.js +++ b/test/lch.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; describe('Some tests for chroma.lch()', () => { describe('lch grayscale', () => { diff --git a/test/luminance.test.js b/test/luminance.test.js index 98c00e19..ea12a5ba 100644 --- a/test/luminance.test.js +++ b/test/luminance.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const rnd = function (f, d) { d = Math.pow(10, d); diff --git a/test/manipulate.test.js b/test/manipulate.test.js index 16bab187..9edebcc8 100644 --- a/test/manipulate.test.js +++ b/test/manipulate.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; describe('Manipulating colors', () => { it('darken', () => { diff --git a/test/misc.test.js b/test/misc.test.js index de026959..ac5fe7a1 100644 --- a/test/misc.test.js +++ b/test/misc.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const round = function (digits) { var d; diff --git a/test/mix.test.js b/test/mix.test.js index 0eb6bc5f..a5abe4dc 100644 --- a/test/mix.test.js +++ b/test/mix.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; describe('Some tests for chroma.color()', () => { it('hsv interpolation white <-> red', () => { diff --git a/test/num.test.js b/test/num.test.js index 31ac5657..76e76ae7 100644 --- a/test/num.test.js +++ b/test/num.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; describe('Some tests for chroma.num()', () => { it('number output', () => { diff --git a/test/premultiply.test.js b/test/premultiply.test.js index 3d6c1c23..f22c6c0f 100644 --- a/test/premultiply.test.js +++ b/test/premultiply.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; describe('Premultiply colors', () => { it('premultiply rgba', () => { diff --git a/test/random.test.js b/test/random.test.js index a632d7cc..8e65dd51 100644 --- a/test/random.test.js +++ b/test/random.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; describe('Some tests for random colors', () => { it('should generate valid hex codes for random colors', () => { diff --git a/test/scale.lcorrection.test.js b/test/scale.lcorrection.test.js index 8a8471e4..76fcb76d 100644 --- a/test/scale.lcorrection.test.js +++ b/test/scale.lcorrection.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const scale = chroma.scale; diff --git a/test/scales.test.js b/test/scales.test.js index 358bbff1..4fe5e589 100644 --- a/test/scales.test.js +++ b/test/scales.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const scale = chroma.scale; diff --git a/test/valid.test.js b/test/valid.test.js index 7f4bb0f9..4798c15a 100644 --- a/test/valid.test.js +++ b/test/valid.test.js @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import chroma from '../dist/index.js'; +import chroma from 'chroma-js'; const valid = chroma.valid; diff --git a/vitest.config.mjs b/vitest.config.mjs new file mode 100644 index 00000000..fb89f2b7 --- /dev/null +++ b/vitest.config.mjs @@ -0,0 +1,13 @@ +import { resolve } from 'node:path' +import { defineConfig } from 'vitest/config' +import { name } from './package.json' + +const r = (p) => resolve(__dirname, p) + +export default defineConfig({ + resolve: { + alias: { + [name]: r('./dist/index.js'), + }, + }, +}) From 237de47870cd82d4930091ff8faecc315c114483 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 2 Aug 2024 11:32:23 +0800 Subject: [PATCH 07/18] chore: lint update --- eslint.config.mjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 05f71899..a5dffebf 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -18,6 +18,7 @@ export default [...compat.extends("eslint:recommended"), { globals: { ...globals.browser, ...globals.commonjs, + '__dirname': 'readonly', }, parser: babelParser, @@ -32,4 +33,4 @@ export default [...compat.extends("eslint:recommended"), { rules: { "no-sequences": "error", }, -}]; \ No newline at end of file +}]; From 0a33892df69f40dedf129e7c73f4f3243d6e8be7 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 2 Aug 2024 11:39:28 +0800 Subject: [PATCH 08/18] chore: update --- rollup.config.js | 49 ------------------------------------------------ 1 file changed, 49 deletions(-) delete mode 100644 rollup.config.js diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index 0cdc12f6..00000000 --- a/rollup.config.js +++ /dev/null @@ -1,49 +0,0 @@ -import buble from '@rollup/plugin-buble'; -import license from 'rollup-plugin-license'; -import path from 'path'; -import terser from '@rollup/plugin-terser'; -import { fileURLToPath } from 'url'; -import { dirname } from 'path'; - -const minify = !process.env.ROLLUP_WATCH && !process.env.DEV; -/** globals process, __dirname **/ - -const __filename = fileURLToPath(import.meta.url); -const __dirname = dirname(__filename); - -export default [ - bundle('index.js', 'chroma'), - bundle('index-light.js', 'chroma-light') -]; - -function bundle(input, target) { - return { - input, - output: { - file: `dist/${target}${minify ? '.min' : ''}.cjs`, - format: 'umd', - name: 'chroma' - }, - plugins: [ - // If we're building for production (npm run build - // instead of npm run dev), transpile and minify - buble({ - transforms: { dangerousForOf: true } - }), - minify && - terser({ - mangle: true - }), - license({ - sourcemap: true, - //cwd: '.', // Default is process.cwd() - - banner: { - content: { - file: path.join(__dirname, 'LICENSE') - } - } - }) - ] - }; -} From eb2e3fe31a2baa80d97d4333817adb35979b1667 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 2 Aug 2024 13:55:07 +0800 Subject: [PATCH 09/18] ci: add test ci --- .github/workflows/ci.yml | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..69af4b38 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,42 @@ +name: CI + +on: + push: + branches: + - main + + pull_request: + branches: + - main + +jobs: + test: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + node: [lts/*] + os: [ubuntu-latest, windows-latest, macos-latest] + fail-fast: false + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install pnpm + uses: pnpm/action-setup@v4 + + - name: Set node ${{ matrix.node }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + cache: pnpm + + - name: Install Dependencies + run: pnpm i + + - name: Build + run: pnpm build + + - name: Test + run: pnpm test From 4b9d962e96abbdfadfb325d90e9d8dad36470079 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 2 Aug 2024 13:57:13 +0800 Subject: [PATCH 10/18] chore: update --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 4598640d..11691592 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "chroma-js", "description": "JavaScript library for color conversions", "version": "2.6.0", + "packageManager": "pnpm@9.6.0", "author": "Gregor Aisch", "type": "module", "homepage": "https://github.com/gka/chroma.js", From 4708fdcad78cd263113741aa07aae5a0c5485301 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 2 Aug 2024 14:05:38 +0800 Subject: [PATCH 11/18] ci: test windows different --- test/docs/docs.test.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/docs/docs.test.js b/test/docs/docs.test.js index a0f3b4c9..0c8c2b0f 100644 --- a/test/docs/docs.test.js +++ b/test/docs/docs.test.js @@ -6,6 +6,9 @@ import chroma_ from '../../dist/index.js'; const docsPath = path.resolve(__dirname, '../../docs/src/index.md'); const DOCS = fs.readFileSync(docsPath, 'utf-8'); +console.log('DOCS', DOCS); +console.log('regex', /^```js$\n(^[^`].+$\n)+/gm); + const snippets = DOCS.match(/^```js$\n(^[^`].+$\n)+/gm).map((s) => s.split('\n').slice(1).join('\n') ); From 7eefcb4a1834781a0cb0b8519035cd783fb67c7b Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 2 Aug 2024 14:14:11 +0800 Subject: [PATCH 12/18] ci: patch windows --- test/docs/docs.test.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/test/docs/docs.test.js b/test/docs/docs.test.js index 0c8c2b0f..0dfaadfa 100644 --- a/test/docs/docs.test.js +++ b/test/docs/docs.test.js @@ -6,10 +6,7 @@ import chroma_ from '../../dist/index.js'; const docsPath = path.resolve(__dirname, '../../docs/src/index.md'); const DOCS = fs.readFileSync(docsPath, 'utf-8'); -console.log('DOCS', DOCS); -console.log('regex', /^```js$\n(^[^`].+$\n)+/gm); - -const snippets = DOCS.match(/^```js$\n(^[^`].+$\n)+/gm).map((s) => +const snippets = DOCS.match(/^```js$[\r\n](^[^`].+$[\r\n])+/gm).map((s) => s.split('\n').slice(1).join('\n') ); From babaf3eb172bff5959865395eeb24fb809b1e920 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 2 Aug 2024 22:52:20 +0800 Subject: [PATCH 13/18] chore: update regex --- test/docs/docs.test.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/docs/docs.test.js b/test/docs/docs.test.js index 0dfaadfa..3ea83689 100644 --- a/test/docs/docs.test.js +++ b/test/docs/docs.test.js @@ -1,3 +1,4 @@ +/* eslint-disable no-unused-vars */ import { describe, it, expect } from 'vitest'; import fs from 'node:fs'; import path from 'node:path'; @@ -6,8 +7,8 @@ import chroma_ from '../../dist/index.js'; const docsPath = path.resolve(__dirname, '../../docs/src/index.md'); const DOCS = fs.readFileSync(docsPath, 'utf-8'); -const snippets = DOCS.match(/^```js$[\r\n](^[^`].+$[\r\n])+/gm).map((s) => - s.split('\n').slice(1).join('\n') +const snippets = Array.from(DOCS.matchAll(/```js([\s\S]+?)```/g)).map( + (m) => m[1] ); // is used in eval; From 4aa4097496a8deb5085cd10f36902ed68e4a7166 Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 6 Aug 2024 21:16:17 +0800 Subject: [PATCH 14/18] chore: abandon tsup --- package.json | 20 +- pnpm-lock.yaml | 919 +++++++--------------- rollup.config.js | 49 ++ test/docs/{docs.test.js => index.test.js} | 2 +- vitest.config.mjs | 2 +- 5 files changed, 357 insertions(+), 635 deletions(-) create mode 100644 rollup.config.js rename test/docs/{docs.test.js => index.test.js} (95%) diff --git a/package.json b/package.json index 11691592..6eda466e 100644 --- a/package.json +++ b/package.json @@ -23,21 +23,14 @@ }, "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist/index.cjs" - }, - "./index-light": { - "import": "./dist/index-light.js", - "require": "./dist/index-light.cjs" + "import": "./index.js", + "require": "./dist/chroma.cjs" } }, - "main": "./dist/index.js", - "files": [ - "dist" - ], + "main": "./index.js", "scripts": { "prepublishOnly": "npm test -- --run && node .bin/update-version.cjs && npm run build", - "build": "tsup", + "build": "rollup -c && cross-env DEV=1 rollup -c ", "docs": "cd docs && make", "docs-preview": "cd docs && make && make preview", "test": "vitest", @@ -50,6 +43,8 @@ "@babel/eslint-parser": "^7.25.0", "@eslint/eslintrc": "^3.1.0", "@eslint/js": "^9.8.0", + "@rollup/plugin-buble": "^1.0.3", + "@rollup/plugin-terser": "^0.4.4", "cross-env": "^7.0.3", "esbuild-plugin-license": "^1.2.3", "eslint": "^9.8.0", @@ -59,7 +54,8 @@ "markdown-to-html": "0.0.13", "minimatch": "^10.0.1", "prettier": "^3.3.3", - "tsup": "^8.2.3", + "rollup": "^4.19.1", + "rollup-plugin-license": "^3.5.2", "vitest": "^2.0.4" }, "license": "(BSD-3-Clause AND Apache-2.0)", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fcc89523..9a0e2b8e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,12 @@ importers: '@eslint/js': specifier: ^9.8.0 version: 9.8.0 + '@rollup/plugin-buble': + specifier: ^1.0.3 + version: 1.0.3(rollup@4.19.1) + '@rollup/plugin-terser': + specifier: ^0.4.4 + version: 0.4.4(rollup@4.19.1) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -44,9 +50,12 @@ importers: prettier: specifier: ^3.3.3 version: 3.3.3 - tsup: - specifier: ^8.2.3 - version: 8.2.3(jiti@1.21.6)(postcss@8.4.40)(typescript@5.5.4) + rollup: + specifier: ^4.19.1 + version: 4.19.1 + rollup-plugin-license: + specifier: ^3.5.2 + version: 3.5.2(rollup@4.19.1) vitest: specifier: ^2.0.4 version: 2.0.4(terser@5.31.3) @@ -451,10 +460,6 @@ packages: resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} engines: {node: '>=18.18'} - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -491,9 +496,32 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} + '@rollup/plugin-buble@1.0.3': + resolution: {integrity: sha512-QYD9BKkJoof0FdCFeSYYhF6/Y8e0Mnf+098xGgmWOFJ4UPHlWujjqOYeVwEm2hJPOmlR5k7HPUdAjqtOWhN64Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-terser@0.4.4': + resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true '@rollup/rollup-android-arm-eabi@4.19.1': resolution: {integrity: sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww==} @@ -584,6 +612,9 @@ packages: cpu: [x64] os: [win32] + '@types/buble@0.19.2': + resolution: {integrity: sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q==} + '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -605,11 +636,22 @@ packages: '@vitest/utils@2.0.4': resolution: {integrity: sha512-Zc75QuuoJhOBnlo99ZVUkJIuq4Oj0zAkrQ2VzCqNCx6wAwViHEh5Fnp4fiJTE9rA+sAoXRf00Z9xGgfEzV6fzQ==} + acorn-dynamic-import@4.0.0: + resolution: {integrity: sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==} + deprecated: This is probably built in to whatever tool you're using. If you still need it... idk + peerDependencies: + acorn: ^6.0.0 + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn@6.4.2: + resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} + engines: {node: '>=0.4.0'} + hasBin: true + acorn@8.12.1: resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} @@ -622,10 +664,6 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -634,23 +672,12 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} + array-find-index@1.0.2: + resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} + engines: {node: '>=0.10.0'} asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} @@ -685,10 +712,6 @@ packages: bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - bl@0.4.2: resolution: {integrity: sha512-/Jhsskdr/kVmqiA+zn6A1h0Z9pRLXrx/yxOlhKVgwaiCMtb+/UhZOHlefRAqArQVRRuOxOu+MvzQh/yIvFMZlQ==} @@ -698,24 +721,18 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - browserslist@4.23.2: resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + buble@0.20.0: + resolution: {integrity: sha512-/1gnaMQE8xvd5qsNBl+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4BguN0sH0tVTKrOw==} + hasBin: true + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - bundle-require@5.0.0: - resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.18' - cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -750,10 +767,6 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -774,17 +787,12 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} + commenting@1.1.0: + resolution: {integrity: sha512-YeNK4tavZwtH7jEgK1ZINXzLKm6DZdEMfsaaieOsCAN0S8vsY7UeuO3Q7d/M018EFgE+IeUAuBOKkFccBZsUZA==} concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} - convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -843,25 +851,12 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} electron-to-chromium@1.5.4: resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -942,6 +937,9 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -952,10 +950,6 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -970,10 +964,6 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -983,14 +973,18 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fdir@6.1.1: + resolution: {integrity: sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg==} + peerDependencies: + picomatch: 3.x + peerDependenciesMeta: + picomatch: + optional: true + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -1011,10 +1005,6 @@ packages: debug: optional: true - foreground-child@3.2.1: - resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} - engines: {node: '>=14'} - forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} @@ -1041,10 +1031,6 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -1055,18 +1041,10 @@ packages: gfm-linkify@0.1.0: resolution: {integrity: sha512-IBlmOdGcoXoVvpfy+21KghIRSZaph3r+HuQkFjyga5oBoHnhkOgS2LP0/zc3OgnnPxrsU/JrjshF10+KTD+T3g==} - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -1079,10 +1057,6 @@ packages: resolution: {integrity: sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==} engines: {node: '>=18'} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -1139,10 +1113,6 @@ packages: resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} engines: {node: '>=0.8', npm: '>=1.3.7'} - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -1171,34 +1141,18 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1215,17 +1169,6 @@ packages: isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} - hasBin: true - - joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1236,6 +1179,10 @@ packages: jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -1272,17 +1219,6 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -1290,21 +1226,18 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} loupe@3.1.1: resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} @@ -1320,14 +1253,6 @@ packages: merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} - mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -1341,10 +1266,6 @@ packages: engines: {node: '>=4'} hasBin: true - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -1356,30 +1277,22 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true + moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1391,14 +1304,6 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1406,10 +1311,6 @@ packages: oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - object-inspect@1.13.2: resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} engines: {node: '>= 0.4'} @@ -1417,10 +1318,6 @@ packages: object-keys@0.4.0: resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -1445,8 +1342,9 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-name-regex@2.0.6: + resolution: {integrity: sha512-gFL35q7kbE/zBaPA3UKhp2vSzcPYx2ecbYuwv1ucE9Il6IIgBDweBlH8D68UFGZic2MkllKa2KHCfC1IQBQUYA==} + engines: {node: '>=12'} parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -1464,14 +1362,6 @@ packages: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -1489,32 +1379,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - portfinder@1.0.32: resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} engines: {node: '>= 0.12.0'} - postcss-load-config@6.0.1: - resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} - engines: {node: '>= 18'} - peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - jiti: - optional: true - postcss: - optional: true - tsx: - optional: true - yaml: - optional: true - postcss@8.4.40: resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} engines: {node: ^10 || ^12 || >=14} @@ -1550,15 +1418,32 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + readable-stream@1.0.34: resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} readable-stream@1.1.14: resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + regenerate-unicode-properties@8.2.0: + resolution: {integrity: sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regexpu-core@4.5.4: + resolution: {integrity: sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==} + engines: {node: '>=4'} + + regjsgen@0.5.2: + resolution: {integrity: sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==} + + regjsparser@0.6.9: + resolution: {integrity: sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==} + hasBin: true request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} @@ -1572,14 +1457,16 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rollup-plugin-license@3.5.2: + resolution: {integrity: sha512-NNeXBcE6RyQdZdSC8Vxe8Cheax2aUa/K0Ok6JDZwr9isjkSDer4aMg0sovas1Ua76ojLZX1BrNQ6ZFspztKkZQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + rollup@4.19.1: resolution: {integrity: sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -1604,6 +1491,9 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -1623,16 +1513,12 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} + smob@1.5.0: + resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} @@ -1645,9 +1531,30 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + spdx-compare@1.0.0: + resolution: {integrity: sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-expression-validate@2.0.0: + resolution: {integrity: sha512-b3wydZLM+Tc6CFvaRDBOF9d76oGIHNCLYFeHbftFXUWjnfZWganmDmvtM5sm1cRwJc/VDBMLyGGrsLFd1vOxbg==} + + spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} + + spdx-ranges@2.1.1: + resolution: {integrity: sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==} + + spdx-satisfies@5.0.1: + resolution: {integrity: sha512-Nwor6W6gzFp8XX4neaKQ7ChV4wmpSh2sSDemMFSzHxpTw460jxFYeOn+jq4ybnSSw/5sc3pjka9MQPouksQNpw==} sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} @@ -1660,14 +1567,6 @@ packages: std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} @@ -1675,14 +1574,6 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -1691,11 +1582,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -1712,13 +1598,6 @@ packages: text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - through2@0.2.3: resolution: {integrity: sha512-mLa8Bn2mZurjyomGKWRu3Bo2mvoQojFks9NvOK8H+k4kDJNkdEqG522KFZsEFBEl6rKkxTgFbE5+OPcgfvPEHA==} @@ -1745,43 +1624,10 @@ packages: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - tough-cookie@2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} engines: {node: '>=0.8'} - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - tsup@8.2.3: - resolution: {integrity: sha512-6YNT44oUfXRbZuSMNmN36GzwPPIlD2wBccY7looM2fkTcxkf2NEmwr3OZuDZoySklnrIG4hoEtzy8yUXYOqNcg==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@microsoft/api-extractor': ^7.36.0 - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.5.0' - peerDependenciesMeta: - '@microsoft/api-extractor': - optional: true - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -1792,10 +1638,21 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} - engines: {node: '>=14.17'} - hasBin: true + unicode-canonical-property-names-ecmascript@1.0.4: + resolution: {integrity: sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@1.0.4: + resolution: {integrity: sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@1.2.0: + resolution: {integrity: sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@1.1.0: + resolution: {integrity: sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==} + engines: {node: '>=4'} union@0.5.0: resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} @@ -1880,16 +1737,10 @@ packages: jsdom: optional: true - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -1904,14 +1755,6 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - xtend@2.1.2: resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} engines: {node: '>=0.4'} @@ -2231,15 +2074,6 @@ snapshots: '@humanwhocodes/retry@0.3.0': {} - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -2254,7 +2088,6 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - optional: true '@jridgewell/sourcemap-codec@1.5.0': {} @@ -2279,8 +2112,29 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@pkgjs/parseargs@0.11.0': - optional: true + '@rollup/plugin-buble@1.0.3(rollup@4.19.1)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.19.1) + '@types/buble': 0.19.2 + buble: 0.20.0 + optionalDependencies: + rollup: 4.19.1 + + '@rollup/plugin-terser@0.4.4(rollup@4.19.1)': + dependencies: + serialize-javascript: 6.0.2 + smob: 1.5.0 + terser: 5.31.3 + optionalDependencies: + rollup: 4.19.1 + + '@rollup/pluginutils@5.1.0(rollup@4.19.1)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.19.1 '@rollup/rollup-android-arm-eabi@4.19.1': optional: true @@ -2330,6 +2184,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.19.1': optional: true + '@types/buble@0.19.2': + dependencies: + magic-string: 0.25.9 + '@types/estree@1.0.5': {} '@vitest/expect@2.0.4': @@ -2365,10 +2223,20 @@ snapshots: loupe: 3.1.1 tinyrainbow: 1.2.0 + acorn-dynamic-import@4.0.0(acorn@6.4.2): + dependencies: + acorn: 6.4.2 + + acorn-jsx@5.3.2(acorn@6.4.2): + dependencies: + acorn: 6.4.2 + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 + acorn@6.4.2: {} + acorn@8.12.1: {} ajv@6.12.6: @@ -2380,8 +2248,6 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} - ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 @@ -2390,18 +2256,9 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} - - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - argparse@2.0.1: {} - array-union@2.1.0: {} + array-find-index@1.0.2: {} asn1@0.2.6: dependencies: @@ -2431,8 +2288,6 @@ snapshots: dependencies: tweetnacl: 0.14.5 - binary-extensions@2.3.0: {} - bl@0.4.2: dependencies: readable-stream: 1.0.34 @@ -2446,10 +2301,6 @@ snapshots: dependencies: balanced-match: 1.0.2 - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - browserslist@4.23.2: dependencies: caniuse-lite: 1.0.30001646 @@ -2457,13 +2308,17 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.2) - buffer-from@1.1.2: - optional: true - - bundle-require@5.0.0(esbuild@0.23.0): + buble@0.20.0: dependencies: - esbuild: 0.23.0 - load-tsconfig: 0.2.5 + acorn: 6.4.2 + acorn-dynamic-import: 4.0.0(acorn@6.4.2) + acorn-jsx: 5.3.2(acorn@6.4.2) + chalk: 2.4.2 + magic-string: 0.25.9 + minimist: 1.2.8 + regexpu-core: 4.5.4 + + buffer-from@1.1.2: {} cac@6.7.14: {} @@ -2502,18 +2357,6 @@ snapshots: check-error@2.1.1: {} - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -2530,15 +2373,12 @@ snapshots: dependencies: delayed-stream: 1.0.0 - commander@2.20.3: - optional: true + commander@2.20.3: {} - commander@4.1.1: {} + commenting@1.1.0: {} concat-map@0.0.1: {} - consola@3.2.3: {} - convert-source-map@2.0.0: {} core-util-is@1.0.2: {} @@ -2581,12 +2421,6 @@ snapshots: delayed-stream@1.0.0: {} - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - eastasianwidth@0.2.0: {} - ecc-jsbn@0.1.2: dependencies: jsbn: 0.1.1 @@ -2594,10 +2428,6 @@ snapshots: electron-to-chromium@1.5.4: {} - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 @@ -2740,6 +2570,8 @@ snapshots: estraverse@5.3.0: {} + estree-walker@2.0.2: {} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.5 @@ -2748,18 +2580,6 @@ snapshots: eventemitter3@4.0.7: {} - execa@5.1.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - execa@8.0.1: dependencies: cross-spawn: 7.0.3 @@ -2778,14 +2598,6 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.7 - fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} @@ -2794,14 +2606,12 @@ snapshots: dependencies: reusify: 1.0.4 + fdir@6.1.1: {} + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -2816,11 +2626,6 @@ snapshots: follow-redirects@1.15.6: {} - foreground-child@3.2.1: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - forever-agent@0.6.1: {} form-data@2.3.3: @@ -2846,8 +2651,6 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 - get-stream@6.0.1: {} - get-stream@8.0.1: {} getpass@0.1.7: @@ -2856,38 +2659,16 @@ snapshots: gfm-linkify@0.1.0: {} - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - glob@10.4.5: - dependencies: - foreground-child: 3.2.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.0 - path-scurry: 1.11.1 - globals@11.12.0: {} globals@14.0.0: {} globals@15.8.0: {} - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 @@ -2954,8 +2735,6 @@ snapshots: jsprim: 1.4.2 sshpk: 1.18.0 - human-signals@2.1.0: {} - human-signals@5.0.0: {} husky@9.1.3: {} @@ -2975,24 +2754,14 @@ snapshots: inherits@2.0.4: {} - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - is-extglob@2.1.1: {} - is-fullwidth-code-point@3.0.0: {} - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-number@7.0.0: {} - is-path-inside@3.0.3: {} - is-stream@2.0.1: {} - is-stream@3.0.0: {} is-typedarray@1.0.0: {} @@ -3003,17 +2772,6 @@ snapshots: isstream@0.1.2: {} - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jiti@1.21.6: - optional: true - - joycon@3.1.1: {} - js-tokens@4.0.0: {} js-yaml@4.1.0: @@ -3022,6 +2780,8 @@ snapshots: jsbn@0.1.1: {} + jsesc@0.5.0: {} + jsesc@2.5.2: {} json-buffer@3.0.1: {} @@ -3052,32 +2812,26 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lilconfig@3.1.2: {} - - lines-and-columns@1.2.4: {} - - load-tsconfig@0.2.5: {} - locate-path@6.0.0: dependencies: p-locate: 5.0.0 lodash.merge@4.6.2: {} - lodash.sortby@4.7.0: {} - lodash@4.17.21: {} loupe@3.1.1: dependencies: get-func-name: 2.0.2 - lru-cache@10.4.3: {} - lru-cache@5.1.1: dependencies: yallist: 3.1.1 + magic-string@0.25.9: + dependencies: + sourcemap-codec: 1.4.8 + magic-string@0.30.10: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -3096,13 +2850,6 @@ snapshots: merge-stream@2.0.0: {} - merge2@1.4.1: {} - - micromatch@4.0.7: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - mime-db@1.52.0: {} mime-types@2.1.35: @@ -3111,8 +2858,6 @@ snapshots: mime@1.6.0: {} - mimic-fn@2.1.0: {} - mimic-fn@4.0.0: {} minimatch@10.0.1: @@ -3123,56 +2868,34 @@ snapshots: dependencies: brace-expansion: 1.1.11 - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - minimist@1.2.8: {} - minipass@7.1.2: {} - mkdirp@0.5.6: dependencies: minimist: 1.2.8 + moment@2.30.1: {} + ms@2.1.2: {} ms@2.1.3: {} - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - nanoid@3.3.7: {} natural-compare@1.4.0: {} node-releases@2.0.18: {} - normalize-path@3.0.0: {} - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - npm-run-path@5.3.0: dependencies: path-key: 4.0.0 oauth-sign@0.9.0: {} - object-assign@4.1.1: {} - object-inspect@1.13.2: {} object-keys@0.4.0: {} - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - onetime@6.0.0: dependencies: mimic-fn: 4.0.0 @@ -3198,7 +2921,7 @@ snapshots: dependencies: p-limit: 3.1.0 - package-json-from-dist@1.0.0: {} + package-name-regex@2.0.6: {} parent-module@1.0.1: dependencies: @@ -3210,13 +2933,6 @@ snapshots: path-key@4.0.0: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-type@4.0.0: {} - pathe@1.1.2: {} pathval@2.0.0: {} @@ -3227,8 +2943,6 @@ snapshots: picomatch@2.3.1: {} - pirates@4.0.6: {} - portfinder@1.0.32: dependencies: async: 2.6.4 @@ -3237,13 +2951,6 @@ snapshots: transitivePeerDependencies: - supports-color - postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.40): - dependencies: - lilconfig: 3.1.2 - optionalDependencies: - jiti: 1.21.6 - postcss: 8.4.40 - postcss@8.4.40: dependencies: nanoid: 3.3.7 @@ -3271,6 +2978,10 @@ snapshots: queue-microtask@1.2.3: {} + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + readable-stream@1.0.34: dependencies: core-util-is: 1.0.3 @@ -3285,9 +2996,26 @@ snapshots: isarray: 0.0.1 string_decoder: 0.10.31 - readdirp@3.6.0: + regenerate-unicode-properties@8.2.0: dependencies: - picomatch: 2.3.1 + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regexpu-core@4.5.4: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 8.2.0 + regjsgen: 0.5.2 + regjsparser: 0.6.9 + unicode-match-property-ecmascript: 1.0.4 + unicode-match-property-value-ecmascript: 1.2.0 + + regjsgen@0.5.2: {} + + regjsparser@0.6.9: + dependencies: + jsesc: 0.5.0 request@2.88.2: dependencies: @@ -3316,10 +3044,22 @@ snapshots: resolve-from@4.0.0: {} - resolve-from@5.0.0: {} - reusify@1.0.4: {} + rollup-plugin-license@3.5.2(rollup@4.19.1): + dependencies: + commenting: 1.1.0 + fdir: 6.1.1 + lodash: 4.17.21 + magic-string: 0.30.10 + moment: 2.30.1 + package-name-regex: 2.0.6 + rollup: 4.19.1 + spdx-expression-validate: 2.0.0 + spdx-satisfies: 5.0.1 + transitivePeerDependencies: + - picomatch + rollup@4.19.1: dependencies: '@types/estree': 1.0.5 @@ -3356,6 +3096,10 @@ snapshots: semver@6.3.1: {} + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -3380,11 +3124,9 @@ snapshots: siginfo@2.0.0: {} - signal-exit@3.0.7: {} - signal-exit@4.1.0: {} - slash@3.0.0: {} + smob@1.5.0: {} source-map-js@1.2.0: {} @@ -3392,14 +3134,37 @@ snapshots: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - optional: true - source-map@0.6.1: - optional: true + source-map@0.6.1: {} + + sourcemap-codec@1.4.8: {} + + spdx-compare@1.0.0: + dependencies: + array-find-index: 1.0.2 + spdx-expression-parse: 3.0.1 + spdx-ranges: 2.1.1 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.18 + + spdx-expression-validate@2.0.0: + dependencies: + spdx-expression-parse: 3.0.1 + + spdx-license-ids@3.0.18: {} - source-map@0.8.0-beta.0: + spdx-ranges@2.1.1: {} + + spdx-satisfies@5.0.1: dependencies: - whatwg-url: 7.1.0 + spdx-compare: 1.0.0 + spdx-expression-parse: 3.0.1 + spdx-ranges: 2.1.1 sshpk@1.18.0: dependencies: @@ -3417,44 +3182,16 @@ snapshots: std-env@3.7.0: {} - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - string_decoder@0.10.31: {} strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 - - strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} strip-json-comments@3.1.1: {} - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -3469,18 +3206,9 @@ snapshots: acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 - optional: true text-table@0.2.0: {} - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - through2@0.2.3: dependencies: readable-stream: 1.1.14 @@ -3498,50 +3226,11 @@ snapshots: to-fast-properties@2.0.0: {} - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - tough-cookie@2.5.0: dependencies: psl: 1.9.0 punycode: 2.3.1 - tr46@1.0.1: - dependencies: - punycode: 2.3.1 - - tree-kill@1.2.2: {} - - ts-interface-checker@0.1.13: {} - - tsup@8.2.3(jiti@1.21.6)(postcss@8.4.40)(typescript@5.5.4): - dependencies: - bundle-require: 5.0.0(esbuild@0.23.0) - cac: 6.7.14 - chokidar: 3.6.0 - consola: 3.2.3 - debug: 4.3.6 - esbuild: 0.23.0 - execa: 5.1.1 - globby: 11.1.0 - joycon: 3.1.1 - picocolors: 1.0.1 - postcss-load-config: 6.0.1(jiti@1.21.6)(postcss@8.4.40) - resolve-from: 5.0.0 - rollup: 4.19.1 - source-map: 0.8.0-beta.0 - sucrase: 3.35.0 - tree-kill: 1.2.2 - optionalDependencies: - postcss: 8.4.40 - typescript: 5.5.4 - transitivePeerDependencies: - - jiti - - supports-color - - tsx - - yaml - tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 @@ -3552,8 +3241,16 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript@5.5.4: - optional: true + unicode-canonical-property-names-ecmascript@1.0.4: {} + + unicode-match-property-ecmascript@1.0.4: + dependencies: + unicode-canonical-property-names-ecmascript: 1.0.4 + unicode-property-aliases-ecmascript: 1.1.0 + + unicode-match-property-value-ecmascript@1.2.0: {} + + unicode-property-aliases-ecmascript@1.1.0: {} union@0.5.0: dependencies: @@ -3635,18 +3332,10 @@ snapshots: - supports-color - terser - webidl-conversions@4.0.2: {} - whatwg-encoding@2.0.0: dependencies: iconv-lite: 0.6.3 - whatwg-url@7.1.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - which@2.0.2: dependencies: isexe: 2.0.0 @@ -3658,18 +3347,6 @@ snapshots: word-wrap@1.2.5: {} - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - xtend@2.1.2: dependencies: object-keys: 0.4.0 diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 00000000..0cdc12f6 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,49 @@ +import buble from '@rollup/plugin-buble'; +import license from 'rollup-plugin-license'; +import path from 'path'; +import terser from '@rollup/plugin-terser'; +import { fileURLToPath } from 'url'; +import { dirname } from 'path'; + +const minify = !process.env.ROLLUP_WATCH && !process.env.DEV; +/** globals process, __dirname **/ + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +export default [ + bundle('index.js', 'chroma'), + bundle('index-light.js', 'chroma-light') +]; + +function bundle(input, target) { + return { + input, + output: { + file: `dist/${target}${minify ? '.min' : ''}.cjs`, + format: 'umd', + name: 'chroma' + }, + plugins: [ + // If we're building for production (npm run build + // instead of npm run dev), transpile and minify + buble({ + transforms: { dangerousForOf: true } + }), + minify && + terser({ + mangle: true + }), + license({ + sourcemap: true, + //cwd: '.', // Default is process.cwd() + + banner: { + content: { + file: path.join(__dirname, 'LICENSE') + } + } + }) + ] + }; +} diff --git a/test/docs/docs.test.js b/test/docs/index.test.js similarity index 95% rename from test/docs/docs.test.js rename to test/docs/index.test.js index 3ea83689..9254abfe 100644 --- a/test/docs/docs.test.js +++ b/test/docs/index.test.js @@ -2,7 +2,7 @@ import { describe, it, expect } from 'vitest'; import fs from 'node:fs'; import path from 'node:path'; -import chroma_ from '../../dist/index.js'; +import chroma_ from '../../index.js'; const docsPath = path.resolve(__dirname, '../../docs/src/index.md'); const DOCS = fs.readFileSync(docsPath, 'utf-8'); diff --git a/vitest.config.mjs b/vitest.config.mjs index fb89f2b7..6044d929 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -7,7 +7,7 @@ const r = (p) => resolve(__dirname, p) export default defineConfig({ resolve: { alias: { - [name]: r('./dist/index.js'), + [name]: r('./index.js'), }, }, }) From 3065735d511244b7e6348114b03db4f677d4e461 Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 6 Aug 2024 21:17:29 +0800 Subject: [PATCH 15/18] chore: update --- .gitignore | 1 - dist/chroma-light.cjs | 1084 ++++++++++++ dist/chroma-light.min.cjs | 58 + dist/chroma.cjs | 3387 +++++++++++++++++++++++++++++++++++++ dist/chroma.min.cjs | 58 + 5 files changed, 4587 insertions(+), 1 deletion(-) create mode 100644 dist/chroma-light.cjs create mode 100644 dist/chroma-light.min.cjs create mode 100644 dist/chroma.cjs create mode 100644 dist/chroma.min.cjs diff --git a/.gitignore b/.gitignore index 4feafa7b..04d3d9ed 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,3 @@ m.txt .DS_Store license.coffee node_modules -dist diff --git a/dist/chroma-light.cjs b/dist/chroma-light.cjs new file mode 100644 index 00000000..cafb3000 --- /dev/null +++ b/dist/chroma-light.cjs @@ -0,0 +1,1084 @@ +/** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2024, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.chroma = factory()); +})(this, (function () { 'use strict'; + + function limit (x, low, high) { + if ( high === void 0 ) high = 1; + + return min(max(low, x), high); + } + + function clip_rgb (rgb) { + rgb._clipped = false; + rgb._unclipped = rgb.slice(0); + for (var i = 0; i <= 3; i++) { + if (i < 3) { + if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; } + rgb[i] = limit(rgb[i], 0, 255); + } else if (i === 3) { + rgb[i] = limit(rgb[i], 0, 1); + } + } + return rgb; + } + + // ported from jQuery's $.type + var classToType = {}; + for (var i = 0, list = [ + 'Boolean', + 'Number', + 'String', + 'Function', + 'Array', + 'Date', + 'RegExp', + 'Undefined', + 'Null' + ]; i < list.length; i += 1) { + var name = list[i]; + + classToType[("[object " + name + "]")] = name.toLowerCase(); + } + function type (obj) { + return classToType[Object.prototype.toString.call(obj)] || 'object'; + } + + function unpack (args, keyOrder) { + if ( keyOrder === void 0 ) keyOrder = null; + + // if called with more than 3 arguments, we return the arguments + if (args.length >= 3) { return Array.prototype.slice.call(args); } + // with less than 3 args we check if first arg is object + // and use the keyOrder string to extract and sort properties + if (type(args[0]) == 'object' && keyOrder) { + return keyOrder + .split('') + .filter(function (k) { return args[0][k] !== undefined; }) + .map(function (k) { return args[0][k]; }); + } + // otherwise we just return the first argument + // (which we suppose is an array of args) + return args[0]; + } + + function last (args) { + if (args.length < 2) { return null; } + var l = args.length - 1; + if (type(args[l]) == 'string') { return args[l].toLowerCase(); } + return null; + } + + var min = Math.min; + var max = Math.max; + + var input = { + format: {}, + autodetect: [] + }; + + var Color = function Color() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var me = this; + if ( + type(args[0]) === 'object' && + args[0].constructor && + args[0].constructor === this.constructor + ) { + // the argument is already a Color instance + return args[0]; + } + // last argument could be the mode + var mode = last(args); + var autodetect = false; + if (!mode) { + autodetect = true; + if (!input.sorted) { + input.autodetect = input.autodetect.sort(function (a, b) { return b.p - a.p; }); + input.sorted = true; + } + // auto-detect format + for (var i = 0, list = input.autodetect; i < list.length; i += 1) { + var chk = list[i]; + + mode = chk.test.apply(chk, args); + if (mode) { break; } + } + } + if (input.format[mode]) { + var rgb = input.format[mode].apply( + null, + autodetect ? args : args.slice(0, -1) + ); + me._rgb = clip_rgb(rgb); + } else { + throw new Error('unknown format: ' + args); + } + // add alpha channel + if (me._rgb.length === 3) { me._rgb.push(1); } + }; + Color.prototype.toString = function toString () { + if (type(this.hex) == 'function') { return this.hex(); } + return ("[" + (this._rgb.join(',')) + "]"); + }; + + // this gets updated automatically + var version = '2.6.0'; + + var chroma = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) )); + }; + + chroma.Color = Color; + chroma.version = version; + + var rnd = function (a) { return Math.round(a * 100) / 100; }; + + /* + * supported arguments: + * - hsl2css(h,s,l) + * - hsl2css(h,s,l,a) + * - hsl2css([h,s,l], mode) + * - hsl2css([h,s,l,a], mode) + * - hsl2css({h,s,l,a}, mode) + */ + var hsl2css = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var hsla = unpack(args, 'hsla'); + var mode = last(args) || 'lsa'; + hsla[0] = rnd(hsla[0] || 0); + hsla[1] = rnd(hsla[1] * 100) + '%'; + hsla[2] = rnd(hsla[2] * 100) + '%'; + if (mode === 'hsla' || (hsla.length > 3 && hsla[3] < 1)) { + hsla[3] = hsla.length > 3 ? hsla[3] : 1; + mode = 'hsla'; + } else { + hsla.length = 3; + } + return (mode + "(" + (hsla.join(',')) + ")"); + }; + + /* + * supported arguments: + * - rgb2hsl(r,g,b) + * - rgb2hsl(r,g,b,a) + * - rgb2hsl([r,g,b]) + * - rgb2hsl([r,g,b,a]) + * - rgb2hsl({r,g,b,a}) + */ + var rgb2hsl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'rgba'); + var r = args[0]; + var g = args[1]; + var b = args[2]; + + r /= 255; + g /= 255; + b /= 255; + + var minRgb = min(r, g, b); + var maxRgb = max(r, g, b); + + var l = (maxRgb + minRgb) / 2; + var s, h; + + if (maxRgb === minRgb) { + s = 0; + h = Number.NaN; + } else { + s = + l < 0.5 + ? (maxRgb - minRgb) / (maxRgb + minRgb) + : (maxRgb - minRgb) / (2 - maxRgb - minRgb); + } + + if (r == maxRgb) { h = (g - b) / (maxRgb - minRgb); } + else if (g == maxRgb) { h = 2 + (b - r) / (maxRgb - minRgb); } + else if (b == maxRgb) { h = 4 + (r - g) / (maxRgb - minRgb); } + + h *= 60; + if (h < 0) { h += 360; } + if (args.length > 3 && args[3] !== undefined) { return [h, s, l, args[3]]; } + return [h, s, l]; + }; + + var round$4 = Math.round; + + /* + * supported arguments: + * - rgb2css(r,g,b) + * - rgb2css(r,g,b,a) + * - rgb2css([r,g,b], mode) + * - rgb2css([r,g,b,a], mode) + * - rgb2css({r,g,b,a}, mode) + */ + var rgb2css = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgba = unpack(args, 'rgba'); + var mode = last(args) || 'rgb'; + if (mode.substr(0, 3) == 'hsl') { + return hsl2css(rgb2hsl(rgba), mode); + } + rgba[0] = round$4(rgba[0]); + rgba[1] = round$4(rgba[1]); + rgba[2] = round$4(rgba[2]); + if (mode === 'rgba' || (rgba.length > 3 && rgba[3] < 1)) { + rgba[3] = rgba.length > 3 ? rgba[3] : 1; + mode = 'rgba'; + } + return (mode + "(" + (rgba.slice(0, mode === 'rgb' ? 3 : 4).join(',')) + ")"); + }; + + var round$3 = Math.round; + + var hsl2rgb = function () { + var assign; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + args = unpack(args, 'hsl'); + var h = args[0]; + var s = args[1]; + var l = args[2]; + var r, g, b; + if (s === 0) { + r = g = b = l * 255; + } else { + var t3 = [0, 0, 0]; + var c = [0, 0, 0]; + var t2 = l < 0.5 ? l * (1 + s) : l + s - l * s; + var t1 = 2 * l - t2; + var h_ = h / 360; + t3[0] = h_ + 1 / 3; + t3[1] = h_; + t3[2] = h_ - 1 / 3; + for (var i = 0; i < 3; i++) { + if (t3[i] < 0) { t3[i] += 1; } + if (t3[i] > 1) { t3[i] -= 1; } + if (6 * t3[i] < 1) { c[i] = t1 + (t2 - t1) * 6 * t3[i]; } + else if (2 * t3[i] < 1) { c[i] = t2; } + else if (3 * t3[i] < 2) { c[i] = t1 + (t2 - t1) * (2 / 3 - t3[i]) * 6; } + else { c[i] = t1; } + } + (assign = [round$3(c[0] * 255), round$3(c[1] * 255), round$3(c[2] * 255)], r = assign[0], g = assign[1], b = assign[2]); + } + if (args.length > 3) { + // keep alpha channel + return [r, g, b, args[3]]; + } + return [r, g, b, 1]; + }; + + var RE_RGB = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/; + var RE_RGBA = + /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/; + var RE_RGB_PCT = + /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; + var RE_RGBA_PCT = + /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; + var RE_HSL = + /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; + var RE_HSLA = + /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; + + var round$2 = Math.round; + + var css2rgb = function (css) { + css = css.toLowerCase().trim(); + var m; + + if (input.format.named) { + try { + return input.format.named(css); + // eslint-disable-next-line + } catch (e) {} + } + + // rgb(250,20,0) + if ((m = css.match(RE_RGB))) { + var rgb = m.slice(1, 4); + for (var i = 0; i < 3; i++) { + rgb[i] = +rgb[i]; + } + rgb[3] = 1; // default alpha + return rgb; + } + + // rgba(250,20,0,0.4) + if ((m = css.match(RE_RGBA))) { + var rgb$1 = m.slice(1, 5); + for (var i$1 = 0; i$1 < 4; i$1++) { + rgb$1[i$1] = +rgb$1[i$1]; + } + return rgb$1; + } + + // rgb(100%,0%,0%) + if ((m = css.match(RE_RGB_PCT))) { + var rgb$2 = m.slice(1, 4); + for (var i$2 = 0; i$2 < 3; i$2++) { + rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55); + } + rgb$2[3] = 1; // default alpha + return rgb$2; + } + + // rgba(100%,0%,0%,0.4) + if ((m = css.match(RE_RGBA_PCT))) { + var rgb$3 = m.slice(1, 5); + for (var i$3 = 0; i$3 < 3; i$3++) { + rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55); + } + rgb$3[3] = +rgb$3[3]; + return rgb$3; + } + + // hsl(0,100%,50%) + if ((m = css.match(RE_HSL))) { + var hsl = m.slice(1, 4); + hsl[1] *= 0.01; + hsl[2] *= 0.01; + var rgb$4 = hsl2rgb(hsl); + rgb$4[3] = 1; + return rgb$4; + } + + // hsla(0,100%,50%,0.5) + if ((m = css.match(RE_HSLA))) { + var hsl$1 = m.slice(1, 4); + hsl$1[1] *= 0.01; + hsl$1[2] *= 0.01; + var rgb$5 = hsl2rgb(hsl$1); + rgb$5[3] = +m[4]; // default alpha = 1 + return rgb$5; + } + }; + + css2rgb.test = function (s) { + return ( + RE_RGB.test(s) || + RE_RGBA.test(s) || + RE_RGB_PCT.test(s) || + RE_RGBA_PCT.test(s) || + RE_HSL.test(s) || + RE_HSLA.test(s) + ); + }; + + Color.prototype.css = function (mode) { + return rgb2css(this._rgb, mode); + }; + + chroma.css = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['css']) )); + }; + + input.format.css = css2rgb; + + input.autodetect.push({ + p: 5, + test: function (h) { + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + if (!rest.length && type(h) === 'string' && css2rgb.test(h)) { + return 'css'; + } + } + }); + + var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; + var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/; + + var hex2rgb = function (hex) { + if (hex.match(RE_HEX)) { + // remove optional leading # + if (hex.length === 4 || hex.length === 7) { + hex = hex.substr(1); + } + // expand short-notation to full six-digit + if (hex.length === 3) { + hex = hex.split(''); + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; + } + var u = parseInt(hex, 16); + var r = u >> 16; + var g = (u >> 8) & 0xff; + var b = u & 0xff; + return [r, g, b, 1]; + } + + // match rgba hex format, eg #FF000077 + if (hex.match(RE_HEXA)) { + if (hex.length === 5 || hex.length === 9) { + // remove optional leading # + hex = hex.substr(1); + } + // expand short-notation to full eight-digit + if (hex.length === 4) { + hex = hex.split(''); + hex = + hex[0] + + hex[0] + + hex[1] + + hex[1] + + hex[2] + + hex[2] + + hex[3] + + hex[3]; + } + var u$1 = parseInt(hex, 16); + var r$1 = (u$1 >> 24) & 0xff; + var g$1 = (u$1 >> 16) & 0xff; + var b$1 = (u$1 >> 8) & 0xff; + var a = Math.round(((u$1 & 0xff) / 0xff) * 100) / 100; + return [r$1, g$1, b$1, a]; + } + + // we used to check for css colors here + // if _input.css? and rgb = _input.css hex + // return rgb + + throw new Error(("unknown hex color: " + hex)); + }; + + var round$1 = Math.round; + + var rgb2hex = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack(args, 'rgba'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var a = ref[3]; + var mode = last(args) || 'auto'; + if (a === undefined) { a = 1; } + if (mode === 'auto') { + mode = a < 1 ? 'rgba' : 'rgb'; + } + r = round$1(r); + g = round$1(g); + b = round$1(b); + var u = (r << 16) | (g << 8) | b; + var str = '000000' + u.toString(16); //#.toUpperCase(); + str = str.substr(str.length - 6); + var hxa = '0' + round$1(a * 255).toString(16); + hxa = hxa.substr(hxa.length - 2); + switch (mode.toLowerCase()) { + case 'rgba': + return ("#" + str + hxa); + case 'argb': + return ("#" + hxa + str); + default: + return ("#" + str); + } + }; + + Color.prototype.hex = function (mode) { + return rgb2hex(this._rgb, mode); + }; + + chroma.hex = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hex']) )); + }; + + input.format.hex = hex2rgb; + input.autodetect.push({ + p: 4, + test: function (h) { + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + if ( + !rest.length && + type(h) === 'string' && + [3, 4, 5, 6, 7, 8, 9].indexOf(h.length) >= 0 + ) { + return 'hex'; + } + } + }); + + Color.prototype.hsl = function () { + return rgb2hsl(this._rgb); + }; + + chroma.hsl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hsl']) )); + }; + + input.format.hsl = hsl2rgb; + + input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'hsl'); + if (type(args) === 'array' && args.length === 3) { + return 'hsl'; + } + } + }); + + var LAB_CONSTANTS = { + // Corresponds roughly to RGB brighter/darker + Kn: 18, + + // D65 standard referent + Xn: 0.95047, + Yn: 1, + Zn: 1.08883, + + t0: 0.137931034, // 4 / 29 + t1: 0.206896552, // 6 / 29 + t2: 0.12841855, // 3 * t1 * t1 + t3: 0.008856452 // t1 * t1 * t1 + }; + + var pow$4 = Math.pow; + + /* + * L* [0..100] + * a [-100..100] + * b [-100..100] + */ + var lab2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'lab'); + var l = args[0]; + var a = args[1]; + var b = args[2]; + var x, y, z, r, g, b_; + + y = (l + 16) / 116; + x = isNaN(a) ? y : y + a / 500; + z = isNaN(b) ? y : y - b / 200; + + y = LAB_CONSTANTS.Yn * lab_xyz(y); + x = LAB_CONSTANTS.Xn * lab_xyz(x); + z = LAB_CONSTANTS.Zn * lab_xyz(z); + + r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB + g = xyz_rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z); + b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z); + + return [r, g, b_, args.length > 3 ? args[3] : 1]; + }; + + var xyz_rgb = function (r) { + return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$4(r, 1 / 2.4) - 0.055); + }; + + var lab_xyz = function (t) { + return t > LAB_CONSTANTS.t1 + ? t * t * t + : LAB_CONSTANTS.t2 * (t - LAB_CONSTANTS.t0); + }; + + var pow$3 = Math.pow; + + var rgb2lab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = rgb2xyz(r, g, b); + var x = ref$1[0]; + var y = ref$1[1]; + var z = ref$1[2]; + var l = 116 * y - 16; + return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)]; + }; + + var rgb_xyz = function (r) { + if ((r /= 255) <= 0.04045) { return r / 12.92; } + return pow$3((r + 0.055) / 1.055, 2.4); + }; + + var xyz_lab = function (t) { + if (t > LAB_CONSTANTS.t3) { return pow$3(t, 1 / 3); } + return t / LAB_CONSTANTS.t2 + LAB_CONSTANTS.t0; + }; + + var rgb2xyz = function (r, g, b) { + r = rgb_xyz(r); + g = rgb_xyz(g); + b = rgb_xyz(b); + var x = xyz_lab( + (0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS.Xn + ); + var y = xyz_lab( + (0.2126729 * r + 0.7151522 * g + 0.072175 * b) / LAB_CONSTANTS.Yn + ); + var z = xyz_lab( + (0.0193339 * r + 0.119192 * g + 0.9503041 * b) / LAB_CONSTANTS.Zn + ); + return [x, y, z]; + }; + + Color.prototype.lab = function () { + return rgb2lab(this._rgb); + }; + + chroma.lab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['lab']) )); + }; + + input.format.lab = lab2rgb; + + input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'lab'); + if (type(args) === 'array' && args.length === 3) { + return 'lab'; + } + } + }); + + var pow$2 = Math.pow; + var sign$1 = Math.sign; + + /* + * L* [0..100] + * a [-100..100] + * b [-100..100] + */ + var oklab2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'lab'); + var L = args[0]; + var a = args[1]; + var b = args[2]; + + var l = pow$2(L + 0.3963377774 * a + 0.2158037573 * b, 3); + var m = pow$2(L - 0.1055613458 * a - 0.0638541728 * b, 3); + var s = pow$2(L - 0.0894841775 * a - 1.291485548 * b, 3); + + return [ + 255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s), + 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s), + 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s), + args.length > 3 ? args[3] : 1 + ]; + }; + + function lrgb2rgb(c) { + var abs = Math.abs(c); + if (abs > 0.0031308) { + return (sign$1(c) || 1) * (1.055 * pow$2(abs, 1 / 2.4) - 0.055); + } + return c * 12.92; + } + + var cbrt = Math.cbrt; + var pow$1 = Math.pow; + var sign = Math.sign; + + var rgb2oklab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + // OKLab color space implementation taken from + // https://bottosson.github.io/posts/oklab/ + var ref = unpack(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = [ + rgb2lrgb(r / 255), + rgb2lrgb(g / 255), + rgb2lrgb(b / 255) + ]; + var lr = ref$1[0]; + var lg = ref$1[1]; + var lb = ref$1[2]; + var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb); + var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb); + var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb); + + return [ + 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s, + 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s, + 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s + ]; + }; + + function rgb2lrgb(c) { + var abs = Math.abs(c); + if (abs < 0.04045) { + return c / 12.92; + } + return (sign(c) || 1) * pow$1((abs + 0.055) / 1.055, 2.4); + } + + Color.prototype.oklab = function () { + return rgb2oklab(this._rgb); + }; + + chroma.oklab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['oklab']) )); + }; + + input.format.oklab = oklab2rgb; + + input.autodetect.push({ + p: 3, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'oklab'); + if (type(args) === 'array' && args.length === 3) { + return 'oklab'; + } + } + }); + + var round = Math.round; + + Color.prototype.rgb = function (rnd) { + if ( rnd === void 0 ) rnd = true; + + if (rnd === false) { return this._rgb.slice(0, 3); } + return this._rgb.slice(0, 3).map(round); + }; + + Color.prototype.rgba = function (rnd) { + if ( rnd === void 0 ) rnd = true; + + return this._rgb.slice(0, 4).map(function (v, i) { + return i < 3 ? (rnd === false ? v : round(v)) : v; + }); + }; + + chroma.rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['rgb']) )); + }; + + input.format.rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgba = unpack(args, 'rgba'); + if (rgba[3] === undefined) { rgba[3] = 1; } + return rgba; + }; + + input.autodetect.push({ + p: 3, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'rgba'); + if ( + type(args) === 'array' && + (args.length === 3 || + (args.length === 4 && + type(args[3]) == 'number' && + args[3] >= 0 && + args[3] <= 1)) + ) { + return 'rgb'; + } + } + }); + + Color.prototype.alpha = function (a, mutate) { + if ( mutate === void 0 ) mutate = false; + + if (a !== undefined && type(a) === 'number') { + if (mutate) { + this._rgb[3] = a; + return this; + } + return new Color([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb'); + } + return this._rgb[3]; + }; + + Color.prototype.darken = function (amount) { + if ( amount === void 0 ) amount = 1; + + var me = this; + var lab = me.lab(); + lab[0] -= LAB_CONSTANTS.Kn * amount; + return new Color(lab, 'lab').alpha(me.alpha(), true); + }; + + Color.prototype.brighten = function (amount) { + if ( amount === void 0 ) amount = 1; + + return this.darken(-amount); + }; + + Color.prototype.darker = Color.prototype.darken; + Color.prototype.brighter = Color.prototype.brighten; + + Color.prototype.get = function (mc) { + var ref = mc.split('.'); + var mode = ref[0]; + var channel = ref[1]; + var src = this[mode](); + if (channel) { + var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); + if (i > -1) { return src[i]; } + throw new Error(("unknown channel " + channel + " in mode " + mode)); + } else { + return src; + } + }; + + var index = {}; + + function mix (col1, col2, f) { + if ( f === void 0 ) f = 0.5; + var rest = [], len = arguments.length - 3; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ]; + + var mode = rest[0] || 'lrgb'; + if (!index[mode] && !rest.length) { + // fall back to the first supported mode + mode = Object.keys(index)[0]; + } + if (!index[mode]) { + throw new Error(("interpolation mode " + mode + " is not defined")); + } + if (type(col1) !== 'object') { col1 = new Color(col1); } + if (type(col2) !== 'object') { col2 = new Color(col2); } + return index[mode](col1, col2, f).alpha( + col1.alpha() + f * (col2.alpha() - col1.alpha()) + ); + } + + Color.prototype.mix = Color.prototype.interpolate = function ( + col2, + f + ) { + if ( f === void 0 ) f = 0.5; + var rest = [], len = arguments.length - 2; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ]; + + return mix.apply(void 0, [ this, col2, f ].concat( rest )); + }; + + Color.prototype.set = function (mc, value, mutate) { + if ( mutate === void 0 ) mutate = false; + + var ref = mc.split('.'); + var mode = ref[0]; + var channel = ref[1]; + var src = this[mode](); + if (channel) { + var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); + if (i > -1) { + if (type(value) == 'string') { + switch (value.charAt(0)) { + case '+': + src[i] += +value; + break; + case '-': + src[i] += +value; + break; + case '*': + src[i] *= +value.substr(1); + break; + case '/': + src[i] /= +value.substr(1); + break; + default: + src[i] = +value; + } + } else if (type(value) === 'number') { + src[i] = value; + } else { + throw new Error("unsupported value for Color.set"); + } + var out = new Color(src, mode); + if (mutate) { + this._rgb = out._rgb; + return this; + } + return out; + } + throw new Error(("unknown channel " + channel + " in mode " + mode)); + } else { + return src; + } + }; + + Color.prototype.tint = function (f) { + if ( f === void 0 ) f = 0.5; + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + return mix.apply(void 0, [ this, 'white', f ].concat( rest )); + }; + + Color.prototype.shade = function (f) { + if ( f === void 0 ) f = 0.5; + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + return mix.apply(void 0, [ this, 'black', f ].concat( rest )); + }; + + var sqrt = Math.sqrt; + var pow = Math.pow; + + var lrgb = function (col1, col2, f) { + var ref = col1._rgb; + var x1 = ref[0]; + var y1 = ref[1]; + var z1 = ref[2]; + var ref$1 = col2._rgb; + var x2 = ref$1[0]; + var y2 = ref$1[1]; + var z2 = ref$1[2]; + return new Color( + sqrt(pow(x1, 2) * (1 - f) + pow(x2, 2) * f), + sqrt(pow(y1, 2) * (1 - f) + pow(y2, 2) * f), + sqrt(pow(z1, 2) * (1 - f) + pow(z2, 2) * f), + 'rgb' + ); + }; + + // register interpolator + index.lrgb = lrgb; + + var oklab = function (col1, col2, f) { + var xyz0 = col1.oklab(); + var xyz1 = col2.oklab(); + return new Color( + xyz0[0] + f * (xyz1[0] - xyz0[0]), + xyz0[1] + f * (xyz1[1] - xyz0[1]), + xyz0[2] + f * (xyz1[2] - xyz0[2]), + 'oklab' + ); + }; + + // register interpolator + index.oklab = oklab; + + function valid () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + try { + new (Function.prototype.bind.apply( Color, [ null ].concat( args) )); + return true; + // eslint-disable-next-line + } catch (e) { + return false; + } + } + + chroma.mix = chroma.interpolate = mix; + chroma.valid = valid; + + return chroma; + +})); diff --git a/dist/chroma-light.min.cjs b/dist/chroma-light.min.cjs new file mode 100644 index 00000000..90bed88d --- /dev/null +++ b/dist/chroma-light.min.cjs @@ -0,0 +1,58 @@ +/** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2024, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */ + +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(t="undefined"!=typeof globalThis?globalThis:t||self).chroma=r()}(this,(function(){"use strict";function t(t,r,n){return void 0===n&&(n=1),l(s(r,t),n)}for(var r={},n=0,e=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n=3?Array.prototype.slice.call(t):"object"==a(t[0])&&r?r.split("").filter((function(r){return void 0!==t[0][r]})).map((function(r){return t[0][r]})):t[0]}function u(t){if(t.length<2)return null;var r=t.length-1;return"string"==a(t[r])?t[r].toLowerCase():null}var l=Math.min,s=Math.max,c={format:{},autodetect:[]},h=function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var e=this;if("object"===a(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var o=u(r),i=!1;if(!o){i=!0,c.sorted||(c.autodetect=c.autodetect.sort((function(t,r){return r.p-t.p})),c.sorted=!0);for(var l=0,s=c.autodetect;l255)&&(r._clipped=!0),r[n]=t(r[n],0,255)):3===n&&(r[n]=t(r[n],0,1));return r}(f),3===e._rgb.length&&e._rgb.push(1)};h.prototype.toString=function(){return"function"==a(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var f=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(f.Color,[null].concat(t)))};f.Color=h,f.version="2.6.0";var p=function(t){return Math.round(100*t)/100},g=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n,e,o=(t=i(t,"rgba"))[0],a=t[1],u=t[2],c=l(o/=255,a/=255,u/=255),h=s(o,a,u),f=(h+c)/2;return h===c?(n=0,e=Number.NaN):n=f<.5?(h-c)/(h+c):(h-c)/(2-h-c),o==h?e=(a-u)/(h-c):a==h?e=2+(u-o)/(h-c):u==h&&(e=4+(o-a)/(h-c)),(e*=60)<0&&(e+=360),t.length>3&&void 0!==t[3]?[e,n,f,t[3]]:[e,n,f]},b=Math.round,d=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=i(t,"rgba"),e=u(t)||"rgb";return"hsl"==e.substr(0,3)?function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=i(t,"hsla"),e=u(t)||"lsa";return n[0]=p(n[0]||0),n[1]=p(100*n[1])+"%",n[2]=p(100*n[2])+"%","hsla"===e||n.length>3&&n[3]<1?(n[3]=n.length>3?n[3]:1,e="hsla"):n.length=3,e+"("+n.join(",")+")"}(g(n),e):(n[0]=b(n[0]),n[1]=b(n[1]),n[2]=b(n[2]),("rgba"===e||n.length>3&&n[3]<1)&&(n[3]=n.length>3?n[3]:1,e="rgba"),e+"("+n.slice(0,"rgb"===e?3:4).join(",")+")")},v=Math.round,y=function(){for(var t,r=[],n=arguments.length;n--;)r[n]=arguments[n];var e,o,a,u=(r=i(r,"hsl"))[0],l=r[1],s=r[2];if(0===l)e=o=a=255*s;else{var c=[0,0,0],h=[0,0,0],f=s<.5?s*(1+l):s+l-s*l,p=2*s-f,g=u/360;c[0]=g+1/3,c[1]=g,c[2]=g-1/3;for(var b=0;b<3;b++)c[b]<0&&(c[b]+=1),c[b]>1&&(c[b]-=1),6*c[b]<1?h[b]=p+6*(f-p)*c[b]:2*c[b]<1?h[b]=f:3*c[b]<2?h[b]=p+(f-p)*(2/3-c[b])*6:h[b]=p;e=(t=[v(255*h[0]),v(255*h[1]),v(255*h[2])])[0],o=t[1],a=t[2]}return r.length>3?[e,o,a,r[3]]:[e,o,a,1]},w=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,m=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,k=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,_=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,M=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,x=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,F=Math.round,j=function(t){var r;if(t=t.toLowerCase().trim(),c.format.named)try{return c.format.named(t)}catch(t){}if(r=t.match(w)){for(var n=r.slice(1,4),e=0;e<3;e++)n[e]=+n[e];return n[3]=1,n}if(r=t.match(m)){for(var o=r.slice(1,5),a=0;a<4;a++)o[a]=+o[a];return o}if(r=t.match(k)){for(var i=r.slice(1,4),u=0;u<3;u++)i[u]=F(2.55*i[u]);return i[3]=1,i}if(r=t.match(_)){for(var l=r.slice(1,5),s=0;s<3;s++)l[s]=F(2.55*l[s]);return l[3]=+l[3],l}if(r=t.match(M)){var h=r.slice(1,4);h[1]*=.01,h[2]*=.01;var f=y(h);return f[3]=1,f}if(r=t.match(x)){var p=r.slice(1,4);p[1]*=.01,p[2]*=.01;var g=y(p);return g[3]=+r[4],g}};j.test=function(t){return w.test(t)||m.test(t)||k.test(t)||_.test(t)||M.test(t)||x.test(t)},h.prototype.css=function(t){return d(this._rgb,t)},f.css=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(h,[null].concat(t,["css"])))},c.format.css=j,c.autodetect.push({p:5,test:function(t){for(var r=[],n=arguments.length-1;n-- >0;)r[n]=arguments[n+1];if(!r.length&&"string"===a(t)&&j.test(t))return"css"}});var N=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,$=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,A=Math.round;h.prototype.hex=function(t){return function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=i(t,"rgba"),e=n[0],o=n[1],a=n[2],l=n[3],s=u(t)||"auto";void 0===l&&(l=1),"auto"===s&&(s=l<1?"rgba":"rgb");var c="000000"+((e=A(e))<<16|(o=A(o))<<8|(a=A(a))).toString(16);c=c.substr(c.length-6);var h="0"+A(255*l).toString(16);switch(h=h.substr(h.length-2),s.toLowerCase()){case"rgba":return"#"+c+h;case"argb":return"#"+h+c;default:return"#"+c}}(this._rgb,t)},f.hex=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(h,[null].concat(t,["hex"])))},c.format.hex=function(t){if(t.match(N)){4!==t.length&&7!==t.length||(t=t.substr(1)),3===t.length&&(t=(t=t.split(""))[0]+t[0]+t[1]+t[1]+t[2]+t[2]);var r=parseInt(t,16);return[r>>16,r>>8&255,255&r,1]}if(t.match($)){5!==t.length&&9!==t.length||(t=t.substr(1)),4===t.length&&(t=(t=t.split(""))[0]+t[0]+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]);var n=parseInt(t,16);return[n>>24&255,n>>16&255,n>>8&255,Math.round((255&n)/255*100)/100]}throw new Error("unknown hex color: "+t)},c.autodetect.push({p:4,test:function(t){for(var r=[],n=arguments.length-1;n-- >0;)r[n]=arguments[n+1];if(!r.length&&"string"===a(t)&&[3,4,5,6,7,8,9].indexOf(t.length)>=0)return"hex"}}),h.prototype.hsl=function(){return g(this._rgb)},f.hsl=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(h,[null].concat(t,["hsl"])))},c.format.hsl=y,c.autodetect.push({p:2,test:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];if("array"===a(t=i(t,"hsl"))&&3===t.length)return"hsl"}});var C=18,E=.95047,O=1,S=1.08883,L=.137931034,I=.206896552,T=.12841855,q=.008856452,B=Math.pow,D=function(t){return 255*(t<=.00304?12.92*t:1.055*B(t,1/2.4)-.055)},R=function(t){return t>I?t*t*t:T*(t-L)},U=Math.pow,z=function(t){return(t/=255)<=.04045?t/12.92:U((t+.055)/1.055,2.4)},G=function(t){return t>q?U(t,1/3):t/T+L},H=function(t,r,n){return t=z(t),r=z(r),n=z(n),[G((.4124564*t+.3575761*r+.1804375*n)/E),G((.2126729*t+.7151522*r+.072175*n)/O),G((.0193339*t+.119192*r+.9503041*n)/S)]};h.prototype.lab=function(){return function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=i(t,"rgb"),e=n[0],o=n[1],a=n[2],u=H(e,o,a),l=u[0],s=u[1],c=116*s-16;return[c<0?0:c,500*(l-s),200*(s-u[2])]}(this._rgb)},f.lab=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(h,[null].concat(t,["lab"])))},c.format.lab=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n,e,o,a=(t=i(t,"lab"))[0],u=t[1],l=t[2];return e=(a+16)/116,n=isNaN(u)?e:e+u/500,o=isNaN(l)?e:e-l/200,e=O*R(e),n=E*R(n),o=S*R(o),[D(3.2404542*n-1.5371385*e-.4985314*o),D(-.969266*n+1.8760108*e+.041556*o),D(.0556434*n-.2040259*e+1.0572252*o),t.length>3?t[3]:1]},c.autodetect.push({p:2,test:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];if("array"===a(t=i(t,"lab"))&&3===t.length)return"lab"}});var J=Math.pow,K=Math.sign;function P(t){var r=Math.abs(t);return r>.0031308?(K(t)||1)*(1.055*J(r,1/2.4)-.055):12.92*t}var Q=Math.cbrt,V=Math.pow,W=Math.sign;function X(t){var r=Math.abs(t);return r<.04045?t/12.92:(W(t)||1)*V((r+.055)/1.055,2.4)}h.prototype.oklab=function(){return function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=i(t,"rgb"),e=n[0],o=n[1],a=n[2],u=[X(e/255),X(o/255),X(a/255)],l=u[0],s=u[1],c=u[2],h=Q(.4122214708*l+.5363325363*s+.0514459929*c),f=Q(.2119034982*l+.6806995451*s+.1073969566*c),p=Q(.0883024619*l+.2817188376*s+.6299787005*c);return[.2104542553*h+.793617785*f-.0040720468*p,1.9779984951*h-2.428592205*f+.4505937099*p,.0259040371*h+.7827717662*f-.808675766*p]}(this._rgb)},f.oklab=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(h,[null].concat(t,["oklab"])))},c.format.oklab=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=(t=i(t,"lab"))[0],e=t[1],o=t[2],a=J(n+.3963377774*e+.2158037573*o,3),u=J(n-.1055613458*e-.0638541728*o,3),l=J(n-.0894841775*e-1.291485548*o,3);return[255*P(4.0767416621*a-3.3077115913*u+.2309699292*l),255*P(-1.2684380046*a+2.6097574011*u-.3413193965*l),255*P(-.0041960863*a-.7034186147*u+1.707614701*l),t.length>3?t[3]:1]},c.autodetect.push({p:3,test:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];if("array"===a(t=i(t,"oklab"))&&3===t.length)return"oklab"}});var Y=Math.round;h.prototype.rgb=function(t){return void 0===t&&(t=!0),!1===t?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Y)},h.prototype.rgba=function(t){return void 0===t&&(t=!0),this._rgb.slice(0,4).map((function(r,n){return n<3?!1===t?r:Y(r):r}))},f.rgb=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return new(Function.prototype.bind.apply(h,[null].concat(t,["rgb"])))},c.format.rgb=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];var n=i(t,"rgba");return void 0===n[3]&&(n[3]=1),n},c.autodetect.push({p:3,test:function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];if("array"===a(t=i(t,"rgba"))&&(3===t.length||4===t.length&&"number"==a(t[3])&&t[3]>=0&&t[3]<=1))return"rgb"}}),h.prototype.alpha=function(t,r){return void 0===r&&(r=!1),void 0!==t&&"number"===a(t)?r?(this._rgb[3]=t,this):new h([this._rgb[0],this._rgb[1],this._rgb[2],t],"rgb"):this._rgb[3]},h.prototype.darken=function(t){void 0===t&&(t=1);var r=this.lab();return r[0]-=C*t,new h(r,"lab").alpha(this.alpha(),!0)},h.prototype.brighten=function(t){return void 0===t&&(t=1),this.darken(-t)},h.prototype.darker=h.prototype.darken,h.prototype.brighter=h.prototype.brighten,h.prototype.get=function(t){var r=t.split("."),n=r[0],e=r[1],o=this[n]();if(e){var a=n.indexOf(e)-("ok"===n.substr(0,2)?2:0);if(a>-1)return o[a];throw new Error("unknown channel "+e+" in mode "+n)}return o};var Z={};function tt(t,r,n){void 0===n&&(n=.5);for(var e=[],o=arguments.length-3;o-- >0;)e[o]=arguments[o+3];var i=e[0]||"lrgb";if(Z[i]||e.length||(i=Object.keys(Z)[0]),!Z[i])throw new Error("interpolation mode "+i+" is not defined");return"object"!==a(t)&&(t=new h(t)),"object"!==a(r)&&(r=new h(r)),Z[i](t,r,n).alpha(t.alpha()+n*(r.alpha()-t.alpha()))}h.prototype.mix=h.prototype.interpolate=function(t,r){void 0===r&&(r=.5);for(var n=[],e=arguments.length-2;e-- >0;)n[e]=arguments[e+2];return tt.apply(void 0,[this,t,r].concat(n))},h.prototype.set=function(t,r,n){void 0===n&&(n=!1);var e=t.split("."),o=e[0],i=e[1],u=this[o]();if(i){var l=o.indexOf(i)-("ok"===o.substr(0,2)?2:0);if(l>-1){if("string"==a(r))switch(r.charAt(0)){case"+":case"-":u[l]+=+r;break;case"*":u[l]*=+r.substr(1);break;case"/":u[l]/=+r.substr(1);break;default:u[l]=+r}else{if("number"!==a(r))throw new Error("unsupported value for Color.set");u[l]=r}var s=new h(u,o);return n?(this._rgb=s._rgb,this):s}throw new Error("unknown channel "+i+" in mode "+o)}return u},h.prototype.tint=function(t){void 0===t&&(t=.5);for(var r=[],n=arguments.length-1;n-- >0;)r[n]=arguments[n+1];return tt.apply(void 0,[this,"white",t].concat(r))},h.prototype.shade=function(t){void 0===t&&(t=.5);for(var r=[],n=arguments.length-1;n-- >0;)r[n]=arguments[n+1];return tt.apply(void 0,[this,"black",t].concat(r))};var rt=Math.sqrt,nt=Math.pow;Z.lrgb=function(t,r,n){var e=t._rgb,o=e[0],a=e[1],i=e[2],u=r._rgb,l=u[0],s=u[1],c=u[2];return new h(rt(nt(o,2)*(1-n)+nt(l,2)*n),rt(nt(a,2)*(1-n)+nt(s,2)*n),rt(nt(i,2)*(1-n)+nt(c,2)*n),"rgb")};return Z.oklab=function(t,r,n){var e=t.oklab(),o=r.oklab();return new h(e[0]+n*(o[0]-e[0]),e[1]+n*(o[1]-e[1]),e[2]+n*(o[2]-e[2]),"oklab")},f.mix=f.interpolate=tt,f.valid=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{return new(Function.prototype.bind.apply(h,[null].concat(t))),!0}catch(t){return!1}},f})); diff --git a/dist/chroma.cjs b/dist/chroma.cjs new file mode 100644 index 00000000..1eef66f3 --- /dev/null +++ b/dist/chroma.cjs @@ -0,0 +1,3387 @@ +/** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2024, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.chroma = factory()); +})(this, (function () { 'use strict'; + + function limit (x, low, high) { + if ( low === void 0 ) low = 0; + if ( high === void 0 ) high = 1; + + return min$3(max$3(low, x), high); + } + + function clip_rgb (rgb) { + rgb._clipped = false; + rgb._unclipped = rgb.slice(0); + for (var i = 0; i <= 3; i++) { + if (i < 3) { + if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; } + rgb[i] = limit(rgb[i], 0, 255); + } else if (i === 3) { + rgb[i] = limit(rgb[i], 0, 1); + } + } + return rgb; + } + + // ported from jQuery's $.type + var classToType = {}; + for (var i$1 = 0, list$1 = [ + 'Boolean', + 'Number', + 'String', + 'Function', + 'Array', + 'Date', + 'RegExp', + 'Undefined', + 'Null' + ]; i$1 < list$1.length; i$1 += 1) { + var name = list$1[i$1]; + + classToType[("[object " + name + "]")] = name.toLowerCase(); + } + function type (obj) { + return classToType[Object.prototype.toString.call(obj)] || 'object'; + } + + function unpack (args, keyOrder) { + if ( keyOrder === void 0 ) keyOrder = null; + + // if called with more than 3 arguments, we return the arguments + if (args.length >= 3) { return Array.prototype.slice.call(args); } + // with less than 3 args we check if first arg is object + // and use the keyOrder string to extract and sort properties + if (type(args[0]) == 'object' && keyOrder) { + return keyOrder + .split('') + .filter(function (k) { return args[0][k] !== undefined; }) + .map(function (k) { return args[0][k]; }); + } + // otherwise we just return the first argument + // (which we suppose is an array of args) + return args[0]; + } + + function last (args) { + if (args.length < 2) { return null; } + var l = args.length - 1; + if (type(args[l]) == 'string') { return args[l].toLowerCase(); } + return null; + } + + var PI$2 = Math.PI; + var min$3 = Math.min; + var max$3 = Math.max; + + var TWOPI = PI$2 * 2; + var PITHIRD = PI$2 / 3; + var DEG2RAD = PI$2 / 180; + var RAD2DEG = 180 / PI$2; + + var input = { + format: {}, + autodetect: [] + }; + + var Color = function Color() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var me = this; + if ( + type(args[0]) === 'object' && + args[0].constructor && + args[0].constructor === this.constructor + ) { + // the argument is already a Color instance + return args[0]; + } + // last argument could be the mode + var mode = last(args); + var autodetect = false; + if (!mode) { + autodetect = true; + if (!input.sorted) { + input.autodetect = input.autodetect.sort(function (a, b) { return b.p - a.p; }); + input.sorted = true; + } + // auto-detect format + for (var i = 0, list = input.autodetect; i < list.length; i += 1) { + var chk = list[i]; + + mode = chk.test.apply(chk, args); + if (mode) { break; } + } + } + if (input.format[mode]) { + var rgb = input.format[mode].apply( + null, + autodetect ? args : args.slice(0, -1) + ); + me._rgb = clip_rgb(rgb); + } else { + throw new Error('unknown format: ' + args); + } + // add alpha channel + if (me._rgb.length === 3) { me._rgb.push(1); } + }; + Color.prototype.toString = function toString () { + if (type(this.hex) == 'function') { return this.hex(); } + return ("[" + (this._rgb.join(',')) + "]"); + }; + + // this gets updated automatically + var version = '2.6.0'; + + var chroma = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) )); + }; + + chroma.Color = Color; + chroma.version = version; + + var cmyk2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'cmyk'); + var c = args[0]; + var m = args[1]; + var y = args[2]; + var k = args[3]; + var alpha = args.length > 4 ? args[4] : 1; + if (k === 1) { return [0, 0, 0, alpha]; } + return [ + c >= 1 ? 0 : 255 * (1 - c) * (1 - k), // r + m >= 1 ? 0 : 255 * (1 - m) * (1 - k), // g + y >= 1 ? 0 : 255 * (1 - y) * (1 - k), // b + alpha + ]; + }; + + var max$2 = Math.max; + + var rgb2cmyk = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + r = r / 255; + g = g / 255; + b = b / 255; + var k = 1 - max$2(r, max$2(g, b)); + var f = k < 1 ? 1 / (1 - k) : 0; + var c = (1 - r - k) * f; + var m = (1 - g - k) * f; + var y = (1 - b - k) * f; + return [c, m, y, k]; + }; + + Color.prototype.cmyk = function () { + return rgb2cmyk(this._rgb); + }; + + chroma.cmyk = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['cmyk']) )); + }; + + input.format.cmyk = cmyk2rgb; + + input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'cmyk'); + if (type(args) === 'array' && args.length === 4) { + return 'cmyk'; + } + } + }); + + var rnd = function (a) { return Math.round(a * 100) / 100; }; + + /* + * supported arguments: + * - hsl2css(h,s,l) + * - hsl2css(h,s,l,a) + * - hsl2css([h,s,l], mode) + * - hsl2css([h,s,l,a], mode) + * - hsl2css({h,s,l,a}, mode) + */ + var hsl2css = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var hsla = unpack(args, 'hsla'); + var mode = last(args) || 'lsa'; + hsla[0] = rnd(hsla[0] || 0); + hsla[1] = rnd(hsla[1] * 100) + '%'; + hsla[2] = rnd(hsla[2] * 100) + '%'; + if (mode === 'hsla' || (hsla.length > 3 && hsla[3] < 1)) { + hsla[3] = hsla.length > 3 ? hsla[3] : 1; + mode = 'hsla'; + } else { + hsla.length = 3; + } + return (mode + "(" + (hsla.join(',')) + ")"); + }; + + /* + * supported arguments: + * - rgb2hsl(r,g,b) + * - rgb2hsl(r,g,b,a) + * - rgb2hsl([r,g,b]) + * - rgb2hsl([r,g,b,a]) + * - rgb2hsl({r,g,b,a}) + */ + var rgb2hsl$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'rgba'); + var r = args[0]; + var g = args[1]; + var b = args[2]; + + r /= 255; + g /= 255; + b /= 255; + + var minRgb = min$3(r, g, b); + var maxRgb = max$3(r, g, b); + + var l = (maxRgb + minRgb) / 2; + var s, h; + + if (maxRgb === minRgb) { + s = 0; + h = Number.NaN; + } else { + s = + l < 0.5 + ? (maxRgb - minRgb) / (maxRgb + minRgb) + : (maxRgb - minRgb) / (2 - maxRgb - minRgb); + } + + if (r == maxRgb) { h = (g - b) / (maxRgb - minRgb); } + else if (g == maxRgb) { h = 2 + (b - r) / (maxRgb - minRgb); } + else if (b == maxRgb) { h = 4 + (r - g) / (maxRgb - minRgb); } + + h *= 60; + if (h < 0) { h += 360; } + if (args.length > 3 && args[3] !== undefined) { return [h, s, l, args[3]]; } + return [h, s, l]; + }; + + var round$6 = Math.round; + + /* + * supported arguments: + * - rgb2css(r,g,b) + * - rgb2css(r,g,b,a) + * - rgb2css([r,g,b], mode) + * - rgb2css([r,g,b,a], mode) + * - rgb2css({r,g,b,a}, mode) + */ + var rgb2css = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgba = unpack(args, 'rgba'); + var mode = last(args) || 'rgb'; + if (mode.substr(0, 3) == 'hsl') { + return hsl2css(rgb2hsl$1(rgba), mode); + } + rgba[0] = round$6(rgba[0]); + rgba[1] = round$6(rgba[1]); + rgba[2] = round$6(rgba[2]); + if (mode === 'rgba' || (rgba.length > 3 && rgba[3] < 1)) { + rgba[3] = rgba.length > 3 ? rgba[3] : 1; + mode = 'rgba'; + } + return (mode + "(" + (rgba.slice(0, mode === 'rgb' ? 3 : 4).join(',')) + ")"); + }; + + var round$5 = Math.round; + + var hsl2rgb = function () { + var assign; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + args = unpack(args, 'hsl'); + var h = args[0]; + var s = args[1]; + var l = args[2]; + var r, g, b; + if (s === 0) { + r = g = b = l * 255; + } else { + var t3 = [0, 0, 0]; + var c = [0, 0, 0]; + var t2 = l < 0.5 ? l * (1 + s) : l + s - l * s; + var t1 = 2 * l - t2; + var h_ = h / 360; + t3[0] = h_ + 1 / 3; + t3[1] = h_; + t3[2] = h_ - 1 / 3; + for (var i = 0; i < 3; i++) { + if (t3[i] < 0) { t3[i] += 1; } + if (t3[i] > 1) { t3[i] -= 1; } + if (6 * t3[i] < 1) { c[i] = t1 + (t2 - t1) * 6 * t3[i]; } + else if (2 * t3[i] < 1) { c[i] = t2; } + else if (3 * t3[i] < 2) { c[i] = t1 + (t2 - t1) * (2 / 3 - t3[i]) * 6; } + else { c[i] = t1; } + } + (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]); + } + if (args.length > 3) { + // keep alpha channel + return [r, g, b, args[3]]; + } + return [r, g, b, 1]; + }; + + var RE_RGB = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/; + var RE_RGBA = + /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/; + var RE_RGB_PCT = + /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; + var RE_RGBA_PCT = + /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; + var RE_HSL = + /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; + var RE_HSLA = + /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; + + var round$4 = Math.round; + + var css2rgb = function (css) { + css = css.toLowerCase().trim(); + var m; + + if (input.format.named) { + try { + return input.format.named(css); + // eslint-disable-next-line + } catch (e) {} + } + + // rgb(250,20,0) + if ((m = css.match(RE_RGB))) { + var rgb = m.slice(1, 4); + for (var i = 0; i < 3; i++) { + rgb[i] = +rgb[i]; + } + rgb[3] = 1; // default alpha + return rgb; + } + + // rgba(250,20,0,0.4) + if ((m = css.match(RE_RGBA))) { + var rgb$1 = m.slice(1, 5); + for (var i$1 = 0; i$1 < 4; i$1++) { + rgb$1[i$1] = +rgb$1[i$1]; + } + return rgb$1; + } + + // rgb(100%,0%,0%) + if ((m = css.match(RE_RGB_PCT))) { + var rgb$2 = m.slice(1, 4); + for (var i$2 = 0; i$2 < 3; i$2++) { + rgb$2[i$2] = round$4(rgb$2[i$2] * 2.55); + } + rgb$2[3] = 1; // default alpha + return rgb$2; + } + + // rgba(100%,0%,0%,0.4) + if ((m = css.match(RE_RGBA_PCT))) { + var rgb$3 = m.slice(1, 5); + for (var i$3 = 0; i$3 < 3; i$3++) { + rgb$3[i$3] = round$4(rgb$3[i$3] * 2.55); + } + rgb$3[3] = +rgb$3[3]; + return rgb$3; + } + + // hsl(0,100%,50%) + if ((m = css.match(RE_HSL))) { + var hsl = m.slice(1, 4); + hsl[1] *= 0.01; + hsl[2] *= 0.01; + var rgb$4 = hsl2rgb(hsl); + rgb$4[3] = 1; + return rgb$4; + } + + // hsla(0,100%,50%,0.5) + if ((m = css.match(RE_HSLA))) { + var hsl$1 = m.slice(1, 4); + hsl$1[1] *= 0.01; + hsl$1[2] *= 0.01; + var rgb$5 = hsl2rgb(hsl$1); + rgb$5[3] = +m[4]; // default alpha = 1 + return rgb$5; + } + }; + + css2rgb.test = function (s) { + return ( + RE_RGB.test(s) || + RE_RGBA.test(s) || + RE_RGB_PCT.test(s) || + RE_RGBA_PCT.test(s) || + RE_HSL.test(s) || + RE_HSLA.test(s) + ); + }; + + Color.prototype.css = function (mode) { + return rgb2css(this._rgb, mode); + }; + + chroma.css = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['css']) )); + }; + + input.format.css = css2rgb; + + input.autodetect.push({ + p: 5, + test: function (h) { + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + if (!rest.length && type(h) === 'string' && css2rgb.test(h)) { + return 'css'; + } + } + }); + + input.format.gl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgb = unpack(args, 'rgba'); + rgb[0] *= 255; + rgb[1] *= 255; + rgb[2] *= 255; + return rgb; + }; + + chroma.gl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['gl']) )); + }; + + Color.prototype.gl = function () { + var rgb = this._rgb; + return [rgb[0] / 255, rgb[1] / 255, rgb[2] / 255, rgb[3]]; + }; + + var floor$3 = Math.floor; + + /* + * this is basically just HSV with some minor tweaks + * + * hue.. [0..360] + * chroma .. [0..1] + * grayness .. [0..1] + */ + + var hcg2rgb = function () { + var assign, assign$1, assign$2, assign$3, assign$4, assign$5; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + args = unpack(args, 'hcg'); + var h = args[0]; + var c = args[1]; + var _g = args[2]; + var r, g, b; + _g = _g * 255; + var _c = c * 255; + if (c === 0) { + r = g = b = _g; + } else { + if (h === 360) { h = 0; } + if (h > 360) { h -= 360; } + if (h < 0) { h += 360; } + h /= 60; + var i = floor$3(h); + var f = h - i; + var p = _g * (1 - c); + var q = p + _c * (1 - f); + var t = p + _c * f; + var v = p + _c; + switch (i) { + case 0: + (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); + break; + case 1: + (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); + break; + case 2: + (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); + break; + case 3: + (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); + break; + case 4: + (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); + break; + case 5: + (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); + break; + } + } + return [r, g, b, args.length > 3 ? args[3] : 1]; + }; + + var rgb2hcg = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var minRgb = min$3(r, g, b); + var maxRgb = max$3(r, g, b); + var delta = maxRgb - minRgb; + var c = (delta * 100) / 255; + var _g = (minRgb / (255 - delta)) * 100; + var h; + if (delta === 0) { + h = Number.NaN; + } else { + if (r === maxRgb) { h = (g - b) / delta; } + if (g === maxRgb) { h = 2 + (b - r) / delta; } + if (b === maxRgb) { h = 4 + (r - g) / delta; } + h *= 60; + if (h < 0) { h += 360; } + } + return [h, c, _g]; + }; + + Color.prototype.hcg = function () { + return rgb2hcg(this._rgb); + }; + + chroma.hcg = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hcg']) )); + }; + + input.format.hcg = hcg2rgb; + + input.autodetect.push({ + p: 1, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'hcg'); + if (type(args) === 'array' && args.length === 3) { + return 'hcg'; + } + } + }); + + var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; + var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/; + + var hex2rgb = function (hex) { + if (hex.match(RE_HEX)) { + // remove optional leading # + if (hex.length === 4 || hex.length === 7) { + hex = hex.substr(1); + } + // expand short-notation to full six-digit + if (hex.length === 3) { + hex = hex.split(''); + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; + } + var u = parseInt(hex, 16); + var r = u >> 16; + var g = (u >> 8) & 0xff; + var b = u & 0xff; + return [r, g, b, 1]; + } + + // match rgba hex format, eg #FF000077 + if (hex.match(RE_HEXA)) { + if (hex.length === 5 || hex.length === 9) { + // remove optional leading # + hex = hex.substr(1); + } + // expand short-notation to full eight-digit + if (hex.length === 4) { + hex = hex.split(''); + hex = + hex[0] + + hex[0] + + hex[1] + + hex[1] + + hex[2] + + hex[2] + + hex[3] + + hex[3]; + } + var u$1 = parseInt(hex, 16); + var r$1 = (u$1 >> 24) & 0xff; + var g$1 = (u$1 >> 16) & 0xff; + var b$1 = (u$1 >> 8) & 0xff; + var a = Math.round(((u$1 & 0xff) / 0xff) * 100) / 100; + return [r$1, g$1, b$1, a]; + } + + // we used to check for css colors here + // if _input.css? and rgb = _input.css hex + // return rgb + + throw new Error(("unknown hex color: " + hex)); + }; + + var round$3 = Math.round; + + var rgb2hex = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack(args, 'rgba'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var a = ref[3]; + var mode = last(args) || 'auto'; + if (a === undefined) { a = 1; } + if (mode === 'auto') { + mode = a < 1 ? 'rgba' : 'rgb'; + } + r = round$3(r); + g = round$3(g); + b = round$3(b); + var u = (r << 16) | (g << 8) | b; + var str = '000000' + u.toString(16); //#.toUpperCase(); + str = str.substr(str.length - 6); + var hxa = '0' + round$3(a * 255).toString(16); + hxa = hxa.substr(hxa.length - 2); + switch (mode.toLowerCase()) { + case 'rgba': + return ("#" + str + hxa); + case 'argb': + return ("#" + hxa + str); + default: + return ("#" + str); + } + }; + + Color.prototype.hex = function (mode) { + return rgb2hex(this._rgb, mode); + }; + + chroma.hex = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hex']) )); + }; + + input.format.hex = hex2rgb; + input.autodetect.push({ + p: 4, + test: function (h) { + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + if ( + !rest.length && + type(h) === 'string' && + [3, 4, 5, 6, 7, 8, 9].indexOf(h.length) >= 0 + ) { + return 'hex'; + } + } + }); + + var cos$4 = Math.cos; + + /* + * hue [0..360] + * saturation [0..1] + * intensity [0..1] + */ + var hsi2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + /* + borrowed from here: + http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp + */ + args = unpack(args, 'hsi'); + var h = args[0]; + var s = args[1]; + var i = args[2]; + var r, g, b; + + if (isNaN(h)) { h = 0; } + if (isNaN(s)) { s = 0; } + // normalize hue + if (h > 360) { h -= 360; } + if (h < 0) { h += 360; } + h /= 360; + if (h < 1 / 3) { + b = (1 - s) / 3; + r = (1 + (s * cos$4(TWOPI * h)) / cos$4(PITHIRD - TWOPI * h)) / 3; + g = 1 - (b + r); + } else if (h < 2 / 3) { + h -= 1 / 3; + r = (1 - s) / 3; + g = (1 + (s * cos$4(TWOPI * h)) / cos$4(PITHIRD - TWOPI * h)) / 3; + b = 1 - (r + g); + } else { + h -= 2 / 3; + g = (1 - s) / 3; + b = (1 + (s * cos$4(TWOPI * h)) / cos$4(PITHIRD - TWOPI * h)) / 3; + r = 1 - (g + b); + } + r = limit(i * r * 3); + g = limit(i * g * 3); + b = limit(i * b * 3); + return [r * 255, g * 255, b * 255, args.length > 3 ? args[3] : 1]; + }; + + var min$2 = Math.min; + var sqrt$4 = Math.sqrt; + var acos = Math.acos; + + var rgb2hsi = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + /* + borrowed from here: + http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp + */ + var ref = unpack(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + r /= 255; + g /= 255; + b /= 255; + var h; + var min_ = min$2(r, g, b); + var i = (r + g + b) / 3; + var s = i > 0 ? 1 - min_ / i : 0; + if (s === 0) { + h = NaN; + } else { + h = (r - g + (r - b)) / 2; + h /= sqrt$4((r - g) * (r - g) + (r - b) * (g - b)); + h = acos(h); + if (b > g) { + h = TWOPI - h; + } + h /= TWOPI; + } + return [h * 360, s, i]; + }; + + Color.prototype.hsi = function () { + return rgb2hsi(this._rgb); + }; + + chroma.hsi = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hsi']) )); + }; + + input.format.hsi = hsi2rgb; + + input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'hsi'); + if (type(args) === 'array' && args.length === 3) { + return 'hsi'; + } + } + }); + + Color.prototype.hsl = function () { + return rgb2hsl$1(this._rgb); + }; + + chroma.hsl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hsl']) )); + }; + + input.format.hsl = hsl2rgb; + + input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'hsl'); + if (type(args) === 'array' && args.length === 3) { + return 'hsl'; + } + } + }); + + var floor$2 = Math.floor; + + var hsv2rgb = function () { + var assign, assign$1, assign$2, assign$3, assign$4, assign$5; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + args = unpack(args, 'hsv'); + var h = args[0]; + var s = args[1]; + var v = args[2]; + var r, g, b; + v *= 255; + if (s === 0) { + r = g = b = v; + } else { + if (h === 360) { h = 0; } + if (h > 360) { h -= 360; } + if (h < 0) { h += 360; } + h /= 60; + + var i = floor$2(h); + var f = h - i; + var p = v * (1 - s); + var q = v * (1 - s * f); + var t = v * (1 - s * (1 - f)); + + switch (i) { + case 0: + (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); + break; + case 1: + (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); + break; + case 2: + (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); + break; + case 3: + (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); + break; + case 4: + (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); + break; + case 5: + (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); + break; + } + } + return [r, g, b, args.length > 3 ? args[3] : 1]; + }; + + var min$1 = Math.min; + var max$1 = Math.max; + + /* + * supported arguments: + * - rgb2hsv(r,g,b) + * - rgb2hsv([r,g,b]) + * - rgb2hsv({r,g,b}) + */ + var rgb2hsl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'rgb'); + var r = args[0]; + var g = args[1]; + var b = args[2]; + var min_ = min$1(r, g, b); + var max_ = max$1(r, g, b); + var delta = max_ - min_; + var h, s, v; + v = max_ / 255.0; + if (max_ === 0) { + h = Number.NaN; + s = 0; + } else { + s = delta / max_; + if (r === max_) { h = (g - b) / delta; } + if (g === max_) { h = 2 + (b - r) / delta; } + if (b === max_) { h = 4 + (r - g) / delta; } + h *= 60; + if (h < 0) { h += 360; } + } + return [h, s, v]; + }; + + Color.prototype.hsv = function () { + return rgb2hsl(this._rgb); + }; + + chroma.hsv = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hsv']) )); + }; + + input.format.hsv = hsv2rgb; + + input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'hsv'); + if (type(args) === 'array' && args.length === 3) { + return 'hsv'; + } + } + }); + + var LAB_CONSTANTS = { + // Corresponds roughly to RGB brighter/darker + Kn: 18, + + // D65 standard referent + Xn: 0.95047, + Yn: 1, + Zn: 1.08883, + + t0: 0.137931034, // 4 / 29 + t1: 0.206896552, // 6 / 29 + t2: 0.12841855, // 3 * t1 * t1 + t3: 0.008856452 // t1 * t1 * t1 + }; + + var pow$a = Math.pow; + + /* + * L* [0..100] + * a [-100..100] + * b [-100..100] + */ + var lab2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'lab'); + var l = args[0]; + var a = args[1]; + var b = args[2]; + var x, y, z, r, g, b_; + + y = (l + 16) / 116; + x = isNaN(a) ? y : y + a / 500; + z = isNaN(b) ? y : y - b / 200; + + y = LAB_CONSTANTS.Yn * lab_xyz(y); + x = LAB_CONSTANTS.Xn * lab_xyz(x); + z = LAB_CONSTANTS.Zn * lab_xyz(z); + + r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB + g = xyz_rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z); + b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z); + + return [r, g, b_, args.length > 3 ? args[3] : 1]; + }; + + var xyz_rgb = function (r) { + return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$a(r, 1 / 2.4) - 0.055); + }; + + var lab_xyz = function (t) { + return t > LAB_CONSTANTS.t1 + ? t * t * t + : LAB_CONSTANTS.t2 * (t - LAB_CONSTANTS.t0); + }; + + var pow$9 = Math.pow; + + var rgb2lab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = rgb2xyz(r, g, b); + var x = ref$1[0]; + var y = ref$1[1]; + var z = ref$1[2]; + var l = 116 * y - 16; + return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)]; + }; + + var rgb_xyz = function (r) { + if ((r /= 255) <= 0.04045) { return r / 12.92; } + return pow$9((r + 0.055) / 1.055, 2.4); + }; + + var xyz_lab = function (t) { + if (t > LAB_CONSTANTS.t3) { return pow$9(t, 1 / 3); } + return t / LAB_CONSTANTS.t2 + LAB_CONSTANTS.t0; + }; + + var rgb2xyz = function (r, g, b) { + r = rgb_xyz(r); + g = rgb_xyz(g); + b = rgb_xyz(b); + var x = xyz_lab( + (0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS.Xn + ); + var y = xyz_lab( + (0.2126729 * r + 0.7151522 * g + 0.072175 * b) / LAB_CONSTANTS.Yn + ); + var z = xyz_lab( + (0.0193339 * r + 0.119192 * g + 0.9503041 * b) / LAB_CONSTANTS.Zn + ); + return [x, y, z]; + }; + + Color.prototype.lab = function () { + return rgb2lab(this._rgb); + }; + + chroma.lab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['lab']) )); + }; + + input.format.lab = lab2rgb; + + input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'lab'); + if (type(args) === 'array' && args.length === 3) { + return 'lab'; + } + } + }); + + var sin$3 = Math.sin; + var cos$3 = Math.cos; + + var lch2lab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + /* + Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel. + These formulas were invented by David Dalrymple to obtain maximum contrast without going + out of gamut if the parameters are in the range 0-1. + + A saturation multiplier was added by Gregor Aisch + */ + var ref = unpack(args, 'lch'); + var l = ref[0]; + var c = ref[1]; + var h = ref[2]; + if (isNaN(h)) { h = 0; } + h = h * DEG2RAD; + return [l, cos$3(h) * c, sin$3(h) * c]; + }; + + var lch2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'lch'); + var l = args[0]; + var c = args[1]; + var h = args[2]; + var ref = lch2lab(l, c, h); + var L = ref[0]; + var a = ref[1]; + var b_ = ref[2]; + var ref$1 = lab2rgb(L, a, b_); + var r = ref$1[0]; + var g = ref$1[1]; + var b = ref$1[2]; + return [r, g, b, args.length > 3 ? args[3] : 1]; + }; + + var hcl2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var hcl = unpack(args, 'hcl').reverse(); + return lch2rgb.apply(void 0, hcl); + }; + + var sqrt$3 = Math.sqrt; + var atan2$2 = Math.atan2; + var round$2 = Math.round; + + var lab2lch = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack(args, 'lab'); + var l = ref[0]; + var a = ref[1]; + var b = ref[2]; + var c = sqrt$3(a * a + b * b); + var h = (atan2$2(b, a) * RAD2DEG + 360) % 360; + if (round$2(c * 10000) === 0) { h = Number.NaN; } + return [l, c, h]; + }; + + var rgb2lch = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = rgb2lab(r, g, b); + var l = ref$1[0]; + var a = ref$1[1]; + var b_ = ref$1[2]; + return lab2lch(l, a, b_); + }; + + Color.prototype.lch = function () { + return rgb2lch(this._rgb); + }; + Color.prototype.hcl = function () { + return rgb2lch(this._rgb).reverse(); + }; + + chroma.lch = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['lch']) )); + }; + chroma.hcl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['hcl']) )); + }; + + input.format.lch = lch2rgb; + input.format.hcl = hcl2rgb; + ['lch', 'hcl'].forEach(function (m) { return input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, m); + if (type(args) === 'array' && args.length === 3) { + return m; + } + } + }); } + ); + + /** + X11 color names + + http://www.w3.org/TR/css3-color/#svg-color + */ + + var w3cx11 = { + aliceblue: '#f0f8ff', + antiquewhite: '#faebd7', + aqua: '#00ffff', + aquamarine: '#7fffd4', + azure: '#f0ffff', + beige: '#f5f5dc', + bisque: '#ffe4c4', + black: '#000000', + blanchedalmond: '#ffebcd', + blue: '#0000ff', + blueviolet: '#8a2be2', + brown: '#a52a2a', + burlywood: '#deb887', + cadetblue: '#5f9ea0', + chartreuse: '#7fff00', + chocolate: '#d2691e', + coral: '#ff7f50', + cornflowerblue: '#6495ed', + cornsilk: '#fff8dc', + crimson: '#dc143c', + cyan: '#00ffff', + darkblue: '#00008b', + darkcyan: '#008b8b', + darkgoldenrod: '#b8860b', + darkgray: '#a9a9a9', + darkgreen: '#006400', + darkgrey: '#a9a9a9', + darkkhaki: '#bdb76b', + darkmagenta: '#8b008b', + darkolivegreen: '#556b2f', + darkorange: '#ff8c00', + darkorchid: '#9932cc', + darkred: '#8b0000', + darksalmon: '#e9967a', + darkseagreen: '#8fbc8f', + darkslateblue: '#483d8b', + darkslategray: '#2f4f4f', + darkslategrey: '#2f4f4f', + darkturquoise: '#00ced1', + darkviolet: '#9400d3', + deeppink: '#ff1493', + deepskyblue: '#00bfff', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1e90ff', + firebrick: '#b22222', + floralwhite: '#fffaf0', + forestgreen: '#228b22', + fuchsia: '#ff00ff', + gainsboro: '#dcdcdc', + ghostwhite: '#f8f8ff', + gold: '#ffd700', + goldenrod: '#daa520', + gray: '#808080', + green: '#008000', + greenyellow: '#adff2f', + grey: '#808080', + honeydew: '#f0fff0', + hotpink: '#ff69b4', + indianred: '#cd5c5c', + indigo: '#4b0082', + ivory: '#fffff0', + khaki: '#f0e68c', + laserlemon: '#ffff54', + lavender: '#e6e6fa', + lavenderblush: '#fff0f5', + lawngreen: '#7cfc00', + lemonchiffon: '#fffacd', + lightblue: '#add8e6', + lightcoral: '#f08080', + lightcyan: '#e0ffff', + lightgoldenrod: '#fafad2', + lightgoldenrodyellow: '#fafad2', + lightgray: '#d3d3d3', + lightgreen: '#90ee90', + lightgrey: '#d3d3d3', + lightpink: '#ffb6c1', + lightsalmon: '#ffa07a', + lightseagreen: '#20b2aa', + lightskyblue: '#87cefa', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#b0c4de', + lightyellow: '#ffffe0', + lime: '#00ff00', + limegreen: '#32cd32', + linen: '#faf0e6', + magenta: '#ff00ff', + maroon: '#800000', + maroon2: '#7f0000', + maroon3: '#b03060', + mediumaquamarine: '#66cdaa', + mediumblue: '#0000cd', + mediumorchid: '#ba55d3', + mediumpurple: '#9370db', + mediumseagreen: '#3cb371', + mediumslateblue: '#7b68ee', + mediumspringgreen: '#00fa9a', + mediumturquoise: '#48d1cc', + mediumvioletred: '#c71585', + midnightblue: '#191970', + mintcream: '#f5fffa', + mistyrose: '#ffe4e1', + moccasin: '#ffe4b5', + navajowhite: '#ffdead', + navy: '#000080', + oldlace: '#fdf5e6', + olive: '#808000', + olivedrab: '#6b8e23', + orange: '#ffa500', + orangered: '#ff4500', + orchid: '#da70d6', + palegoldenrod: '#eee8aa', + palegreen: '#98fb98', + paleturquoise: '#afeeee', + palevioletred: '#db7093', + papayawhip: '#ffefd5', + peachpuff: '#ffdab9', + peru: '#cd853f', + pink: '#ffc0cb', + plum: '#dda0dd', + powderblue: '#b0e0e6', + purple: '#800080', + purple2: '#7f007f', + purple3: '#a020f0', + rebeccapurple: '#663399', + red: '#ff0000', + rosybrown: '#bc8f8f', + royalblue: '#4169e1', + saddlebrown: '#8b4513', + salmon: '#fa8072', + sandybrown: '#f4a460', + seagreen: '#2e8b57', + seashell: '#fff5ee', + sienna: '#a0522d', + silver: '#c0c0c0', + skyblue: '#87ceeb', + slateblue: '#6a5acd', + slategray: '#708090', + slategrey: '#708090', + snow: '#fffafa', + springgreen: '#00ff7f', + steelblue: '#4682b4', + tan: '#d2b48c', + teal: '#008080', + thistle: '#d8bfd8', + tomato: '#ff6347', + turquoise: '#40e0d0', + violet: '#ee82ee', + wheat: '#f5deb3', + white: '#ffffff', + whitesmoke: '#f5f5f5', + yellow: '#ffff00', + yellowgreen: '#9acd32' + }; + + Color.prototype.name = function () { + var hex = rgb2hex(this._rgb, 'rgb'); + for (var i = 0, list = Object.keys(w3cx11); i < list.length; i += 1) { + var n = list[i]; + + if (w3cx11[n] === hex) { return n.toLowerCase(); } + } + return hex; + }; + + input.format.named = function (name) { + name = name.toLowerCase(); + if (w3cx11[name]) { return hex2rgb(w3cx11[name]); } + throw new Error('unknown color name: ' + name); + }; + + input.autodetect.push({ + p: 5, + test: function (h) { + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + if (!rest.length && type(h) === 'string' && w3cx11[h.toLowerCase()]) { + return 'named'; + } + } + }); + + var num2rgb = function (num) { + if (type(num) == 'number' && num >= 0 && num <= 0xffffff) { + var r = num >> 16; + var g = (num >> 8) & 0xff; + var b = num & 0xff; + return [r, g, b, 1]; + } + throw new Error('unknown num color: ' + num); + }; + + var rgb2num = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + return (r << 16) + (g << 8) + b; + }; + + Color.prototype.num = function () { + return rgb2num(this._rgb); + }; + + chroma.num = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['num']) )); + }; + + input.format.num = num2rgb; + + input.autodetect.push({ + p: 5, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + if ( + args.length === 1 && + type(args[0]) === 'number' && + args[0] >= 0 && + args[0] <= 0xffffff + ) { + return 'num'; + } + } + }); + + var round$1 = Math.round; + + Color.prototype.rgb = function (rnd) { + if ( rnd === void 0 ) rnd = true; + + if (rnd === false) { return this._rgb.slice(0, 3); } + return this._rgb.slice(0, 3).map(round$1); + }; + + Color.prototype.rgba = function (rnd) { + if ( rnd === void 0 ) rnd = true; + + return this._rgb.slice(0, 4).map(function (v, i) { + return i < 3 ? (rnd === false ? v : round$1(v)) : v; + }); + }; + + chroma.rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['rgb']) )); + }; + + input.format.rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgba = unpack(args, 'rgba'); + if (rgba[3] === undefined) { rgba[3] = 1; } + return rgba; + }; + + input.autodetect.push({ + p: 3, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'rgba'); + if ( + type(args) === 'array' && + (args.length === 3 || + (args.length === 4 && + type(args[3]) == 'number' && + args[3] >= 0 && + args[3] <= 1)) + ) { + return 'rgb'; + } + } + }); + + /* + * Based on implementation by Neil Bartlett + * https://github.com/neilbartlett/color-temperature + */ + + var log$1 = Math.log; + + var temperature2rgb = function (kelvin) { + var temp = kelvin / 100; + var r, g, b; + if (temp < 66) { + r = 255; + g = + temp < 6 + ? 0 + : -155.25485562709179 - + 0.44596950469579133 * (g = temp - 2) + + 104.49216199393888 * log$1(g); + b = + temp < 20 + ? 0 + : -254.76935184120902 + + 0.8274096064007395 * (b = temp - 10) + + 115.67994401066147 * log$1(b); + } else { + r = + 351.97690566805693 + + 0.114206453784165 * (r = temp - 55) - + 40.25366309332127 * log$1(r); + g = + 325.4494125711974 + + 0.07943456536662342 * (g = temp - 50) - + 28.0852963507957 * log$1(g); + b = 255; + } + return [r, g, b, 1]; + }; + + /* + * Based on implementation by Neil Bartlett + * https://github.com/neilbartlett/color-temperature + **/ + + var round = Math.round; + + var rgb2temperature = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgb = unpack(args, 'rgb'); + var r = rgb[0], + b = rgb[2]; + var minTemp = 1000; + var maxTemp = 40000; + var eps = 0.4; + var temp; + while (maxTemp - minTemp > eps) { + temp = (maxTemp + minTemp) * 0.5; + var rgb$1 = temperature2rgb(temp); + if (rgb$1[2] / rgb$1[0] >= b / r) { + maxTemp = temp; + } else { + minTemp = temp; + } + } + return round(temp); + }; + + Color.prototype.temp = + Color.prototype.kelvin = + Color.prototype.temperature = + function () { + return rgb2temperature(this._rgb); + }; + + chroma.temp = + chroma.kelvin = + chroma.temperature = + function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['temp']) )); + }; + + input.format.temp = + input.format.kelvin = + input.format.temperature = + temperature2rgb; + + var pow$8 = Math.pow; + var sign$1 = Math.sign; + + /* + * L* [0..100] + * a [-100..100] + * b [-100..100] + */ + var oklab2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'lab'); + var L = args[0]; + var a = args[1]; + var b = args[2]; + + var l = pow$8(L + 0.3963377774 * a + 0.2158037573 * b, 3); + var m = pow$8(L - 0.1055613458 * a - 0.0638541728 * b, 3); + var s = pow$8(L - 0.0894841775 * a - 1.291485548 * b, 3); + + return [ + 255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s), + 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s), + 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s), + args.length > 3 ? args[3] : 1 + ]; + }; + + function lrgb2rgb(c) { + var abs = Math.abs(c); + if (abs > 0.0031308) { + return (sign$1(c) || 1) * (1.055 * pow$8(abs, 1 / 2.4) - 0.055); + } + return c * 12.92; + } + + var cbrt = Math.cbrt; + var pow$7 = Math.pow; + var sign = Math.sign; + + var rgb2oklab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + // OKLab color space implementation taken from + // https://bottosson.github.io/posts/oklab/ + var ref = unpack(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = [ + rgb2lrgb(r / 255), + rgb2lrgb(g / 255), + rgb2lrgb(b / 255) + ]; + var lr = ref$1[0]; + var lg = ref$1[1]; + var lb = ref$1[2]; + var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb); + var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb); + var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb); + + return [ + 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s, + 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s, + 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s + ]; + }; + + function rgb2lrgb(c) { + var abs = Math.abs(c); + if (abs < 0.04045) { + return c / 12.92; + } + return (sign(c) || 1) * pow$7((abs + 0.055) / 1.055, 2.4); + } + + Color.prototype.oklab = function () { + return rgb2oklab(this._rgb); + }; + + chroma.oklab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['oklab']) )); + }; + + input.format.oklab = oklab2rgb; + + input.autodetect.push({ + p: 3, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'oklab'); + if (type(args) === 'array' && args.length === 3) { + return 'oklab'; + } + } + }); + + var oklch2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'lch'); + var l = args[0]; + var c = args[1]; + var h = args[2]; + var ref = lch2lab(l, c, h); + var L = ref[0]; + var a = ref[1]; + var b_ = ref[2]; + var ref$1 = oklab2rgb(L, a, b_); + var r = ref$1[0]; + var g = ref$1[1]; + var b = ref$1[2]; + return [r, g, b, args.length > 3 ? args[3] : 1]; + }; + + var rgb2oklch = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = rgb2oklab(r, g, b); + var l = ref$1[0]; + var a = ref$1[1]; + var b_ = ref$1[2]; + return lab2lch(l, a, b_); + }; + + Color.prototype.oklch = function () { + return rgb2oklch(this._rgb); + }; + + chroma.oklch = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color, [ null ].concat( args, ['oklch']) )); + }; + + input.format.oklch = oklch2rgb; + + input.autodetect.push({ + p: 3, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack(args, 'oklch'); + if (type(args) === 'array' && args.length === 3) { + return 'oklch'; + } + } + }); + + Color.prototype.alpha = function (a, mutate) { + if ( mutate === void 0 ) mutate = false; + + if (a !== undefined && type(a) === 'number') { + if (mutate) { + this._rgb[3] = a; + return this; + } + return new Color([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb'); + } + return this._rgb[3]; + }; + + Color.prototype.clipped = function () { + return this._rgb._clipped || false; + }; + + Color.prototype.darken = function (amount) { + if ( amount === void 0 ) amount = 1; + + var me = this; + var lab = me.lab(); + lab[0] -= LAB_CONSTANTS.Kn * amount; + return new Color(lab, 'lab').alpha(me.alpha(), true); + }; + + Color.prototype.brighten = function (amount) { + if ( amount === void 0 ) amount = 1; + + return this.darken(-amount); + }; + + Color.prototype.darker = Color.prototype.darken; + Color.prototype.brighter = Color.prototype.brighten; + + Color.prototype.get = function (mc) { + var ref = mc.split('.'); + var mode = ref[0]; + var channel = ref[1]; + var src = this[mode](); + if (channel) { + var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); + if (i > -1) { return src[i]; } + throw new Error(("unknown channel " + channel + " in mode " + mode)); + } else { + return src; + } + }; + + var pow$6 = Math.pow; + + var EPS = 1e-7; + var MAX_ITER = 20; + + Color.prototype.luminance = function (lum, mode) { + if ( mode === void 0 ) mode = 'rgb'; + + if (lum !== undefined && type(lum) === 'number') { + if (lum === 0) { + // return pure black + return new Color([0, 0, 0, this._rgb[3]], 'rgb'); + } + if (lum === 1) { + // return pure white + return new Color([255, 255, 255, this._rgb[3]], 'rgb'); + } + // compute new color using... + var cur_lum = this.luminance(); + var max_iter = MAX_ITER; + + var test = function (low, high) { + var mid = low.interpolate(high, 0.5, mode); + var lm = mid.luminance(); + if (Math.abs(lum - lm) < EPS || !max_iter--) { + // close enough + return mid; + } + return lm > lum ? test(low, mid) : test(mid, high); + }; + + var rgb = ( + cur_lum > lum + ? test(new Color([0, 0, 0]), this) + : test(this, new Color([255, 255, 255])) + ).rgb(); + return new Color(rgb.concat( [this._rgb[3]])); + } + return rgb2luminance.apply(void 0, this._rgb.slice(0, 3)); + }; + + var rgb2luminance = function (r, g, b) { + // relative luminance + // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + r = luminance_x(r); + g = luminance_x(g); + b = luminance_x(b); + return 0.2126 * r + 0.7152 * g + 0.0722 * b; + }; + + var luminance_x = function (x) { + x /= 255; + return x <= 0.03928 ? x / 12.92 : pow$6((x + 0.055) / 1.055, 2.4); + }; + + var index = {}; + + function mix (col1, col2, f) { + if ( f === void 0 ) f = 0.5; + var rest = [], len = arguments.length - 3; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ]; + + var mode = rest[0] || 'lrgb'; + if (!index[mode] && !rest.length) { + // fall back to the first supported mode + mode = Object.keys(index)[0]; + } + if (!index[mode]) { + throw new Error(("interpolation mode " + mode + " is not defined")); + } + if (type(col1) !== 'object') { col1 = new Color(col1); } + if (type(col2) !== 'object') { col2 = new Color(col2); } + return index[mode](col1, col2, f).alpha( + col1.alpha() + f * (col2.alpha() - col1.alpha()) + ); + } + + Color.prototype.mix = Color.prototype.interpolate = function ( + col2, + f + ) { + if ( f === void 0 ) f = 0.5; + var rest = [], len = arguments.length - 2; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ]; + + return mix.apply(void 0, [ this, col2, f ].concat( rest )); + }; + + Color.prototype.premultiply = function (mutate) { + if ( mutate === void 0 ) mutate = false; + + var rgb = this._rgb; + var a = rgb[3]; + if (mutate) { + this._rgb = [rgb[0] * a, rgb[1] * a, rgb[2] * a, a]; + return this; + } else { + return new Color([rgb[0] * a, rgb[1] * a, rgb[2] * a, a], 'rgb'); + } + }; + + Color.prototype.saturate = function (amount) { + if ( amount === void 0 ) amount = 1; + + var me = this; + var lch = me.lch(); + lch[1] += LAB_CONSTANTS.Kn * amount; + if (lch[1] < 0) { lch[1] = 0; } + return new Color(lch, 'lch').alpha(me.alpha(), true); + }; + + Color.prototype.desaturate = function (amount) { + if ( amount === void 0 ) amount = 1; + + return this.saturate(-amount); + }; + + Color.prototype.set = function (mc, value, mutate) { + if ( mutate === void 0 ) mutate = false; + + var ref = mc.split('.'); + var mode = ref[0]; + var channel = ref[1]; + var src = this[mode](); + if (channel) { + var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0); + if (i > -1) { + if (type(value) == 'string') { + switch (value.charAt(0)) { + case '+': + src[i] += +value; + break; + case '-': + src[i] += +value; + break; + case '*': + src[i] *= +value.substr(1); + break; + case '/': + src[i] /= +value.substr(1); + break; + default: + src[i] = +value; + } + } else if (type(value) === 'number') { + src[i] = value; + } else { + throw new Error("unsupported value for Color.set"); + } + var out = new Color(src, mode); + if (mutate) { + this._rgb = out._rgb; + return this; + } + return out; + } + throw new Error(("unknown channel " + channel + " in mode " + mode)); + } else { + return src; + } + }; + + Color.prototype.tint = function (f) { + if ( f === void 0 ) f = 0.5; + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + return mix.apply(void 0, [ this, 'white', f ].concat( rest )); + }; + + Color.prototype.shade = function (f) { + if ( f === void 0 ) f = 0.5; + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + return mix.apply(void 0, [ this, 'black', f ].concat( rest )); + }; + + var rgb = function (col1, col2, f) { + var xyz0 = col1._rgb; + var xyz1 = col2._rgb; + return new Color( + xyz0[0] + f * (xyz1[0] - xyz0[0]), + xyz0[1] + f * (xyz1[1] - xyz0[1]), + xyz0[2] + f * (xyz1[2] - xyz0[2]), + 'rgb' + ); + }; + + // register interpolator + index.rgb = rgb; + + var sqrt$2 = Math.sqrt; + var pow$5 = Math.pow; + + var lrgb = function (col1, col2, f) { + var ref = col1._rgb; + var x1 = ref[0]; + var y1 = ref[1]; + var z1 = ref[2]; + var ref$1 = col2._rgb; + var x2 = ref$1[0]; + var y2 = ref$1[1]; + var z2 = ref$1[2]; + return new Color( + sqrt$2(pow$5(x1, 2) * (1 - f) + pow$5(x2, 2) * f), + sqrt$2(pow$5(y1, 2) * (1 - f) + pow$5(y2, 2) * f), + sqrt$2(pow$5(z1, 2) * (1 - f) + pow$5(z2, 2) * f), + 'rgb' + ); + }; + + // register interpolator + index.lrgb = lrgb; + + var lab = function (col1, col2, f) { + var xyz0 = col1.lab(); + var xyz1 = col2.lab(); + return new Color( + xyz0[0] + f * (xyz1[0] - xyz0[0]), + xyz0[1] + f * (xyz1[1] - xyz0[1]), + xyz0[2] + f * (xyz1[2] - xyz0[2]), + 'lab' + ); + }; + + // register interpolator + index.lab = lab; + + function interpolate_hsx (col1, col2, f, m) { + var assign, assign$1; + + var xyz0, xyz1; + if (m === 'hsl') { + xyz0 = col1.hsl(); + xyz1 = col2.hsl(); + } else if (m === 'hsv') { + xyz0 = col1.hsv(); + xyz1 = col2.hsv(); + } else if (m === 'hcg') { + xyz0 = col1.hcg(); + xyz1 = col2.hcg(); + } else if (m === 'hsi') { + xyz0 = col1.hsi(); + xyz1 = col2.hsi(); + } else if (m === 'lch' || m === 'hcl') { + m = 'hcl'; + xyz0 = col1.hcl(); + xyz1 = col2.hcl(); + } else if (m === 'oklch') { + xyz0 = col1.oklch().reverse(); + xyz1 = col2.oklch().reverse(); + } + + var hue0, hue1, sat0, sat1, lbv0, lbv1; + if (m.substr(0, 1) === 'h' || m === 'oklch') { + (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]); + (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]); + } + + var sat, hue, lbv, dh; + + if (!isNaN(hue0) && !isNaN(hue1)) { + // both colors have hue + if (hue1 > hue0 && hue1 - hue0 > 180) { + dh = hue1 - (hue0 + 360); + } else if (hue1 < hue0 && hue0 - hue1 > 180) { + dh = hue1 + 360 - hue0; + } else { + dh = hue1 - hue0; + } + hue = hue0 + f * dh; + } else if (!isNaN(hue0)) { + hue = hue0; + if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; } + } else if (!isNaN(hue1)) { + hue = hue1; + if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; } + } else { + hue = Number.NaN; + } + + if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); } + lbv = lbv0 + f * (lbv1 - lbv0); + return m === 'oklch' + ? new Color([lbv, sat, hue], m) + : new Color([hue, sat, lbv], m); + } + + var lch = function (col1, col2, f) { + return interpolate_hsx(col1, col2, f, 'lch'); + }; + + // register interpolator + index.lch = lch; + index.hcl = lch; + + var num = function (col1, col2, f) { + var c1 = col1.num(); + var c2 = col2.num(); + return new Color(c1 + f * (c2 - c1), 'num'); + }; + + // register interpolator + index.num = num; + + var hcg = function (col1, col2, f) { + return interpolate_hsx(col1, col2, f, 'hcg'); + }; + + // register interpolator + index.hcg = hcg; + + var hsi = function (col1, col2, f) { + return interpolate_hsx(col1, col2, f, 'hsi'); + }; + + // register interpolator + index.hsi = hsi; + + var hsl = function (col1, col2, f) { + return interpolate_hsx(col1, col2, f, 'hsl'); + }; + + // register interpolator + index.hsl = hsl; + + var hsv = function (col1, col2, f) { + return interpolate_hsx(col1, col2, f, 'hsv'); + }; + + // register interpolator + index.hsv = hsv; + + var oklab = function (col1, col2, f) { + var xyz0 = col1.oklab(); + var xyz1 = col2.oklab(); + return new Color( + xyz0[0] + f * (xyz1[0] - xyz0[0]), + xyz0[1] + f * (xyz1[1] - xyz0[1]), + xyz0[2] + f * (xyz1[2] - xyz0[2]), + 'oklab' + ); + }; + + // register interpolator + index.oklab = oklab; + + var oklch = function (col1, col2, f) { + return interpolate_hsx(col1, col2, f, 'oklch'); + }; + + // register interpolator + index.oklch = oklch; + + var pow$4 = Math.pow; + var sqrt$1 = Math.sqrt; + var PI$1 = Math.PI; + var cos$2 = Math.cos; + var sin$2 = Math.sin; + var atan2$1 = Math.atan2; + + function average (colors, mode, weights) { + if ( mode === void 0 ) mode = 'lrgb'; + if ( weights === void 0 ) weights = null; + + var l = colors.length; + if (!weights) { weights = Array.from(new Array(l)).map(function () { return 1; }); } + // normalize weights + var k = + l / + weights.reduce(function (a, b) { + return a + b; + }); + weights.forEach(function (w, i) { + weights[i] *= k; + }); + // convert colors to Color objects + colors = colors.map(function (c) { return new Color(c); }); + if (mode === 'lrgb') { + return _average_lrgb(colors, weights); + } + var first = colors.shift(); + var xyz = first.get(mode); + var cnt = []; + var dx = 0; + var dy = 0; + // initial color + for (var i = 0; i < xyz.length; i++) { + xyz[i] = (xyz[i] || 0) * weights[0]; + cnt.push(isNaN(xyz[i]) ? 0 : weights[0]); + if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) { + var A = (xyz[i] / 180) * PI$1; + dx += cos$2(A) * weights[0]; + dy += sin$2(A) * weights[0]; + } + } + + var alpha = first.alpha() * weights[0]; + colors.forEach(function (c, ci) { + var xyz2 = c.get(mode); + alpha += c.alpha() * weights[ci + 1]; + for (var i = 0; i < xyz.length; i++) { + if (!isNaN(xyz2[i])) { + cnt[i] += weights[ci + 1]; + if (mode.charAt(i) === 'h') { + var A = (xyz2[i] / 180) * PI$1; + dx += cos$2(A) * weights[ci + 1]; + dy += sin$2(A) * weights[ci + 1]; + } else { + xyz[i] += xyz2[i] * weights[ci + 1]; + } + } + } + }); + + for (var i$1 = 0; i$1 < xyz.length; i$1++) { + if (mode.charAt(i$1) === 'h') { + var A$1 = (atan2$1(dy / cnt[i$1], dx / cnt[i$1]) / PI$1) * 180; + while (A$1 < 0) { A$1 += 360; } + while (A$1 >= 360) { A$1 -= 360; } + xyz[i$1] = A$1; + } else { + xyz[i$1] = xyz[i$1] / cnt[i$1]; + } + } + alpha /= l; + return new Color(xyz, mode).alpha(alpha > 0.99999 ? 1 : alpha, true); + } + var _average_lrgb = function (colors, weights) { + var l = colors.length; + var xyz = [0, 0, 0, 0]; + for (var i = 0; i < colors.length; i++) { + var col = colors[i]; + var f = weights[i] / l; + var rgb = col._rgb; + xyz[0] += pow$4(rgb[0], 2) * f; + xyz[1] += pow$4(rgb[1], 2) * f; + xyz[2] += pow$4(rgb[2], 2) * f; + xyz[3] += rgb[3] * f; + } + xyz[0] = sqrt$1(xyz[0]); + xyz[1] = sqrt$1(xyz[1]); + xyz[2] = sqrt$1(xyz[2]); + if (xyz[3] > 0.9999999) { xyz[3] = 1; } + return new Color(clip_rgb(xyz)); + }; + + // minimal multi-purpose interface + + + var pow$3 = Math.pow; + + function scale (colors) { + // constructor + var _mode = 'rgb'; + var _nacol = chroma('#ccc'); + var _spread = 0; + // const _fixed = false; + var _domain = [0, 1]; + var _pos = []; + var _padding = [0, 0]; + var _classes = false; + var _colors = []; + var _out = false; + var _min = 0; + var _max = 1; + var _correctLightness = false; + var _colorCache = {}; + var _useCache = true; + var _gamma = 1; + + // private methods + + var setColors = function (colors) { + colors = colors || ['#fff', '#000']; + if ( + colors && + type(colors) === 'string' && + chroma.brewer && + chroma.brewer[colors.toLowerCase()] + ) { + colors = chroma.brewer[colors.toLowerCase()]; + } + if (type(colors) === 'array') { + // handle single color + if (colors.length === 1) { + colors = [colors[0], colors[0]]; + } + // make a copy of the colors + colors = colors.slice(0); + // convert to chroma classes + for (var c = 0; c < colors.length; c++) { + colors[c] = chroma(colors[c]); + } + // auto-fill color position + _pos.length = 0; + for (var c$1 = 0; c$1 < colors.length; c$1++) { + _pos.push(c$1 / (colors.length - 1)); + } + } + resetCache(); + return (_colors = colors); + }; + + var getClass = function (value) { + if (_classes != null) { + var n = _classes.length - 1; + var i = 0; + while (i < n && value >= _classes[i]) { + i++; + } + return i - 1; + } + return 0; + }; + + var tMapLightness = function (t) { return t; }; + var tMapDomain = function (t) { return t; }; + + // const classifyValue = function(value) { + // let val = value; + // if (_classes.length > 2) { + // const n = _classes.length-1; + // const i = getClass(value); + // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class + // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class + // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min)); + // } + // return val; + // }; + + var getColor = function (val, bypassMap) { + var col, t; + if (bypassMap == null) { + bypassMap = false; + } + if (isNaN(val) || val === null) { + return _nacol; + } + if (!bypassMap) { + if (_classes && _classes.length > 2) { + // find the class + var c = getClass(val); + t = c / (_classes.length - 2); + } else if (_max !== _min) { + // just interpolate between min/max + t = (val - _min) / (_max - _min); + } else { + t = 1; + } + } else { + t = val; + } + + // domain map + t = tMapDomain(t); + + if (!bypassMap) { + t = tMapLightness(t); // lightness correction + } + + if (_gamma !== 1) { + t = pow$3(t, _gamma); + } + + t = _padding[0] + t * (1 - _padding[0] - _padding[1]); + + t = limit(t, 0, 1); + + var k = Math.floor(t * 10000); + + if (_useCache && _colorCache[k]) { + col = _colorCache[k]; + } else { + if (type(_colors) === 'array') { + //for i in [0.._pos.length-1] + for (var i = 0; i < _pos.length; i++) { + var p = _pos[i]; + if (t <= p) { + col = _colors[i]; + break; + } + if (t >= p && i === _pos.length - 1) { + col = _colors[i]; + break; + } + if (t > p && t < _pos[i + 1]) { + t = (t - p) / (_pos[i + 1] - p); + col = chroma.interpolate( + _colors[i], + _colors[i + 1], + t, + _mode + ); + break; + } + } + } else if (type(_colors) === 'function') { + col = _colors(t); + } + if (_useCache) { + _colorCache[k] = col; + } + } + return col; + }; + + var resetCache = function () { return (_colorCache = {}); }; + + setColors(colors); + + // public interface + + var f = function (v) { + var c = chroma(getColor(v)); + if (_out && c[_out]) { + return c[_out](); + } else { + return c; + } + }; + + f.classes = function (classes) { + if (classes != null) { + if (type(classes) === 'array') { + _classes = classes; + _domain = [classes[0], classes[classes.length - 1]]; + } else { + var d = chroma.analyze(_domain); + if (classes === 0) { + _classes = [d.min, d.max]; + } else { + _classes = chroma.limits(d, 'e', classes); + } + } + return f; + } + return _classes; + }; + + f.domain = function (domain) { + if (!arguments.length) { + return _domain; + } + _min = domain[0]; + _max = domain[domain.length - 1]; + _pos = []; + var k = _colors.length; + if (domain.length === k && _min !== _max) { + // update positions + for (var i = 0, list = Array.from(domain); i < list.length; i += 1) { + var d = list[i]; + + _pos.push((d - _min) / (_max - _min)); + } + } else { + for (var c = 0; c < k; c++) { + _pos.push(c / (k - 1)); + } + if (domain.length > 2) { + // set domain map + var tOut = domain.map(function (d, i) { return i / (domain.length - 1); }); + var tBreaks = domain.map(function (d) { return (d - _min) / (_max - _min); }); + if (!tBreaks.every(function (val, i) { return tOut[i] === val; })) { + tMapDomain = function (t) { + if (t <= 0 || t >= 1) { return t; } + var i = 0; + while (t >= tBreaks[i + 1]) { i++; } + var f = + (t - tBreaks[i]) / (tBreaks[i + 1] - tBreaks[i]); + var out = tOut[i] + f * (tOut[i + 1] - tOut[i]); + return out; + }; + } + } + } + _domain = [_min, _max]; + return f; + }; + + f.mode = function (_m) { + if (!arguments.length) { + return _mode; + } + _mode = _m; + resetCache(); + return f; + }; + + f.range = function (colors, _pos) { + setColors(colors); + return f; + }; + + f.out = function (_o) { + _out = _o; + return f; + }; + + f.spread = function (val) { + if (!arguments.length) { + return _spread; + } + _spread = val; + return f; + }; + + f.correctLightness = function (v) { + if (v == null) { + v = true; + } + _correctLightness = v; + resetCache(); + if (_correctLightness) { + tMapLightness = function (t) { + var L0 = getColor(0, true).lab()[0]; + var L1 = getColor(1, true).lab()[0]; + var pol = L0 > L1; + var L_actual = getColor(t, true).lab()[0]; + var L_ideal = L0 + (L1 - L0) * t; + var L_diff = L_actual - L_ideal; + var t0 = 0; + var t1 = 1; + var max_iter = 20; + while (Math.abs(L_diff) > 1e-2 && max_iter-- > 0) { + (function () { + if (pol) { + L_diff *= -1; + } + if (L_diff < 0) { + t0 = t; + t += (t1 - t) * 0.5; + } else { + t1 = t; + t += (t0 - t) * 0.5; + } + L_actual = getColor(t, true).lab()[0]; + return (L_diff = L_actual - L_ideal); + })(); + } + return t; + }; + } else { + tMapLightness = function (t) { return t; }; + } + return f; + }; + + f.padding = function (p) { + if (p != null) { + if (type(p) === 'number') { + p = [p, p]; + } + _padding = p; + return f; + } else { + return _padding; + } + }; + + f.colors = function (numColors, out) { + // If no arguments are given, return the original colors that were provided + if (arguments.length < 2) { + out = 'hex'; + } + var result = []; + + if (arguments.length === 0) { + result = _colors.slice(0); + } else if (numColors === 1) { + result = [f(0.5)]; + } else if (numColors > 1) { + var dm = _domain[0]; + var dd = _domain[1] - dm; + result = __range__(0, numColors).map(function (i) { return f(dm + (i / (numColors - 1)) * dd); } + ); + } else { + // returns all colors based on the defined classes + colors = []; + var samples = []; + if (_classes && _classes.length > 2) { + for ( + var i = 1, end = _classes.length, asc = 1 <= end; + asc ? i < end : i > end; + asc ? i++ : i-- + ) { + samples.push((_classes[i - 1] + _classes[i]) * 0.5); + } + } else { + samples = _domain; + } + result = samples.map(function (v) { return f(v); }); + } + + if (chroma[out]) { + result = result.map(function (c) { return c[out](); }); + } + return result; + }; + + f.cache = function (c) { + if (c != null) { + _useCache = c; + return f; + } else { + return _useCache; + } + }; + + f.gamma = function (g) { + if (g != null) { + _gamma = g; + return f; + } else { + return _gamma; + } + }; + + f.nodata = function (d) { + if (d != null) { + _nacol = chroma(d); + return f; + } else { + return _nacol; + } + }; + + return f; + } + + function __range__(left, right, inclusive) { + var range = []; + var ascending = left < right; + var end = right ; + for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) { + range.push(i); + } + return range; + } + + // + // interpolates between a set of colors uzing a bezier spline + // + + + // nth row of the pascal triangle + var binom_row = function (n) { + var row = [1, 1]; + for (var i = 1; i < n; i++) { + var newrow = [1]; + for (var j = 1; j <= row.length; j++) { + newrow[j] = (row[j] || 0) + row[j - 1]; + } + row = newrow; + } + return row; + }; + + var bezier = function (colors) { + var assign, assign$1, assign$2; + + var I, lab0, lab1, lab2; + colors = colors.map(function (c) { return new Color(c); }); + if (colors.length === 2) { + // linear interpolation + (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]); + I = function (t) { + var lab = [0, 1, 2].map(function (i) { return lab0[i] + t * (lab1[i] - lab0[i]); }); + return new Color(lab, 'lab'); + }; + } else if (colors.length === 3) { + // quadratic bezier interpolation + (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]); + I = function (t) { + 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]; } + ); + return new Color(lab, 'lab'); + }; + } else if (colors.length === 4) { + // cubic bezier interpolation + var lab3; + (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]); + I = function (t) { + 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]; } + ); + return new Color(lab, 'lab'); + }; + } else if (colors.length >= 5) { + // general case (degree n bezier) + var labs, row, n; + labs = colors.map(function (c) { return c.lab(); }); + n = colors.length - 1; + row = binom_row(n); + I = function (t) { + var u = 1 - t; + 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 + ); } + ); + return new Color(lab, 'lab'); + }; + } else { + throw new RangeError('No point in running bezier with only one color.'); + } + return I; + }; + + function bezier$1 (colors) { + var f = bezier(colors); + f.scale = function () { return scale(f); }; + return f; + } + + /* + * interpolates between a set of colors uzing a bezier spline + * blend mode formulas taken from https://web.archive.org/web/20180110014946/http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/ + */ + + + var blend = function (bottom, top, mode) { + if (!blend[mode]) { + throw new Error('unknown blend mode ' + mode); + } + return blend[mode](bottom, top); + }; + + var blend_f = function (f) { return function (bottom, top) { + var c0 = chroma(top).rgb(); + var c1 = chroma(bottom).rgb(); + return chroma.rgb(f(c0, c1)); + }; }; + + var each = function (f) { return function (c0, c1) { + var out = []; + out[0] = f(c0[0], c1[0]); + out[1] = f(c0[1], c1[1]); + out[2] = f(c0[2], c1[2]); + return out; + }; }; + + var normal = function (a) { return a; }; + var multiply = function (a, b) { return (a * b) / 255; }; + var darken = function (a, b) { return (a > b ? b : a); }; + var lighten = function (a, b) { return (a > b ? a : b); }; + var screen = function (a, b) { return 255 * (1 - (1 - a / 255) * (1 - b / 255)); }; + var overlay = function (a, b) { return b < 128 ? (2 * a * b) / 255 : 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255)); }; + var burn = function (a, b) { return 255 * (1 - (1 - b / 255) / (a / 255)); }; + var dodge = function (a, b) { + if (a === 255) { return 255; } + a = (255 * (b / 255)) / (1 - a / 255); + return a > 255 ? 255 : a; + }; + + // # add = (a,b) -> + // # if (a + b > 255) then 255 else a + b + + blend.normal = blend_f(each(normal)); + blend.multiply = blend_f(each(multiply)); + blend.screen = blend_f(each(screen)); + blend.overlay = blend_f(each(overlay)); + blend.darken = blend_f(each(darken)); + blend.lighten = blend_f(each(lighten)); + blend.dodge = blend_f(each(dodge)); + blend.burn = blend_f(each(burn)); + + // cubehelix interpolation + // based on D.A. Green "A colour scheme for the display of astronomical intensity images" + // http://astron-soc.in/bulletin/11June/289392011.pdf + var pow$2 = Math.pow; + var sin$1 = Math.sin; + var cos$1 = Math.cos; + + function cubehelix ( + start, + rotations, + hue, + gamma, + lightness + ) { + if ( start === void 0 ) start = 300; + if ( rotations === void 0 ) rotations = -1.5; + if ( hue === void 0 ) hue = 1; + if ( gamma === void 0 ) gamma = 1; + if ( lightness === void 0 ) lightness = [0, 1]; + + var dh = 0, + dl; + if (type(lightness) === 'array') { + dl = lightness[1] - lightness[0]; + } else { + dl = 0; + lightness = [lightness, lightness]; + } + var f = function (fract) { + var a = TWOPI * ((start + 120) / 360 + rotations * fract); + var l = pow$2(lightness[0] + dl * fract, gamma); + var h = dh !== 0 ? hue[0] + fract * dh : hue; + var amp = (h * l * (1 - l)) / 2; + var cos_a = cos$1(a); + var sin_a = sin$1(a); + var r = l + amp * (-0.14861 * cos_a + 1.78277 * sin_a); + var g = l + amp * (-0.29227 * cos_a - 0.90649 * sin_a); + var b = l + amp * (+1.97294 * cos_a); + return chroma(clip_rgb([r * 255, g * 255, b * 255, 1])); + }; + f.start = function (s) { + if (s == null) { + return start; + } + start = s; + return f; + }; + f.rotations = function (r) { + if (r == null) { + return rotations; + } + rotations = r; + return f; + }; + f.gamma = function (g) { + if (g == null) { + return gamma; + } + gamma = g; + return f; + }; + f.hue = function (h) { + if (h == null) { + return hue; + } + hue = h; + if (type(hue) === 'array') { + dh = hue[1] - hue[0]; + if (dh === 0) { + hue = hue[1]; + } + } else { + dh = 0; + } + return f; + }; + f.lightness = function (h) { + if (h == null) { + return lightness; + } + if (type(h) === 'array') { + lightness = h; + dl = h[1] - h[0]; + } else { + lightness = [h, h]; + dl = 0; + } + return f; + }; + f.scale = function () { return chroma.scale(f); }; + f.hue(hue); + return f; + } + + var digits = '0123456789abcdef'; + + var floor$1 = Math.floor; + var random = Math.random; + + function random$1 () { + var code = '#'; + for (var i = 0; i < 6; i++) { + code += digits.charAt(floor$1(random() * 16)); + } + return new Color(code, 'hex'); + } + + var log = Math.log; + var pow$1 = Math.pow; + var floor = Math.floor; + var abs$1 = Math.abs; + + function analyze(data, key) { + if ( key === void 0 ) key = null; + + var r = { + min: Number.MAX_VALUE, + max: Number.MAX_VALUE * -1, + sum: 0, + values: [], + count: 0 + }; + if (type(data) === 'object') { + data = Object.values(data); + } + data.forEach(function (val) { + if (key && type(val) === 'object') { val = val[key]; } + if (val !== undefined && val !== null && !isNaN(val)) { + r.values.push(val); + r.sum += val; + if (val < r.min) { r.min = val; } + if (val > r.max) { r.max = val; } + r.count += 1; + } + }); + + r.domain = [r.min, r.max]; + + r.limits = function (mode, num) { return limits(r, mode, num); }; + + return r; + } + + function limits(data, mode, num) { + if ( mode === void 0 ) mode = 'equal'; + if ( num === void 0 ) num = 7; + + if (type(data) == 'array') { + data = analyze(data); + } + var min = data.min; + var max = data.max; + var values = data.values.sort(function (a, b) { return a - b; }); + + if (num === 1) { + return [min, max]; + } + + var limits = []; + + if (mode.substr(0, 1) === 'c') { + // continuous + limits.push(min); + limits.push(max); + } + + if (mode.substr(0, 1) === 'e') { + // equal interval + limits.push(min); + for (var i = 1; i < num; i++) { + limits.push(min + (i / num) * (max - min)); + } + limits.push(max); + } else if (mode.substr(0, 1) === 'l') { + // log scale + if (min <= 0) { + throw new Error( + 'Logarithmic scales are only possible for values > 0' + ); + } + var min_log = Math.LOG10E * log(min); + var max_log = Math.LOG10E * log(max); + limits.push(min); + for (var i$1 = 1; i$1 < num; i$1++) { + limits.push(pow$1(10, min_log + (i$1 / num) * (max_log - min_log))); + } + limits.push(max); + } else if (mode.substr(0, 1) === 'q') { + // quantile scale + limits.push(min); + for (var i$2 = 1; i$2 < num; i$2++) { + var p = ((values.length - 1) * i$2) / num; + var pb = floor(p); + if (pb === p) { + limits.push(values[pb]); + } else { + // p > pb + var pr = p - pb; + limits.push(values[pb] * (1 - pr) + values[pb + 1] * pr); + } + } + limits.push(max); + } else if (mode.substr(0, 1) === 'k') { + // k-means clustering + /* + implementation based on + http://code.google.com/p/figue/source/browse/trunk/figue.js#336 + simplified for 1-d input values + */ + var cluster; + var n = values.length; + var assignments = new Array(n); + var clusterSizes = new Array(num); + var repeat = true; + var nb_iters = 0; + var centroids = null; + + // get seed values + centroids = []; + centroids.push(min); + for (var i$3 = 1; i$3 < num; i$3++) { + centroids.push(min + (i$3 / num) * (max - min)); + } + centroids.push(max); + + while (repeat) { + // assignment step + for (var j = 0; j < num; j++) { + clusterSizes[j] = 0; + } + for (var i$4 = 0; i$4 < n; i$4++) { + var value = values[i$4]; + var mindist = Number.MAX_VALUE; + var best = (void 0); + for (var j$1 = 0; j$1 < num; j$1++) { + var dist = abs$1(centroids[j$1] - value); + if (dist < mindist) { + mindist = dist; + best = j$1; + } + clusterSizes[best]++; + assignments[i$4] = best; + } + } + + // update centroids step + var newCentroids = new Array(num); + for (var j$2 = 0; j$2 < num; j$2++) { + newCentroids[j$2] = null; + } + for (var i$5 = 0; i$5 < n; i$5++) { + cluster = assignments[i$5]; + if (newCentroids[cluster] === null) { + newCentroids[cluster] = values[i$5]; + } else { + newCentroids[cluster] += values[i$5]; + } + } + for (var j$3 = 0; j$3 < num; j$3++) { + newCentroids[j$3] *= 1 / clusterSizes[j$3]; + } + + // check convergence + repeat = false; + for (var j$4 = 0; j$4 < num; j$4++) { + if (newCentroids[j$4] !== centroids[j$4]) { + repeat = true; + break; + } + } + + centroids = newCentroids; + nb_iters++; + + if (nb_iters > 200) { + repeat = false; + } + } + + // finished k-means clustering + // the next part is borrowed from gabrielflor.it + var kClusters = {}; + for (var j$5 = 0; j$5 < num; j$5++) { + kClusters[j$5] = []; + } + for (var i$6 = 0; i$6 < n; i$6++) { + cluster = assignments[i$6]; + kClusters[cluster].push(values[i$6]); + } + var tmpKMeansBreaks = []; + for (var j$6 = 0; j$6 < num; j$6++) { + tmpKMeansBreaks.push(kClusters[j$6][0]); + tmpKMeansBreaks.push(kClusters[j$6][kClusters[j$6].length - 1]); + } + tmpKMeansBreaks = tmpKMeansBreaks.sort(function (a, b) { return a - b; }); + limits.push(tmpKMeansBreaks[0]); + for (var i$7 = 1; i$7 < tmpKMeansBreaks.length; i$7 += 2) { + var v = tmpKMeansBreaks[i$7]; + if (!isNaN(v) && limits.indexOf(v) === -1) { + limits.push(v); + } + } + } + return limits; + } + + function contrast (a, b) { + // WCAG contrast ratio + // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef + a = new Color(a); + b = new Color(b); + var l1 = a.luminance(); + var l2 = b.luminance(); + return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05); + } + + var sqrt = Math.sqrt; + var pow = Math.pow; + var min = Math.min; + var max = Math.max; + var atan2 = Math.atan2; + var abs = Math.abs; + var cos = Math.cos; + var sin = Math.sin; + var exp = Math.exp; + var PI = Math.PI; + + function deltaE (a, b, Kl, Kc, Kh) { + if ( Kl === void 0 ) Kl = 1; + if ( Kc === void 0 ) Kc = 1; + if ( Kh === void 0 ) Kh = 1; + + // Delta E (CIE 2000) + // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html + var rad2deg = function (rad) { + return (360 * rad) / (2 * PI); + }; + var deg2rad = function (deg) { + return (2 * PI * deg) / 360; + }; + a = new Color(a); + b = new Color(b); + var ref = Array.from(a.lab()); + var L1 = ref[0]; + var a1 = ref[1]; + var b1 = ref[2]; + var ref$1 = Array.from(b.lab()); + var L2 = ref$1[0]; + var a2 = ref$1[1]; + var b2 = ref$1[2]; + var avgL = (L1 + L2) / 2; + var C1 = sqrt(pow(a1, 2) + pow(b1, 2)); + var C2 = sqrt(pow(a2, 2) + pow(b2, 2)); + var avgC = (C1 + C2) / 2; + var G = 0.5 * (1 - sqrt(pow(avgC, 7) / (pow(avgC, 7) + pow(25, 7)))); + var a1p = a1 * (1 + G); + var a2p = a2 * (1 + G); + var C1p = sqrt(pow(a1p, 2) + pow(b1, 2)); + var C2p = sqrt(pow(a2p, 2) + pow(b2, 2)); + var avgCp = (C1p + C2p) / 2; + var arctan1 = rad2deg(atan2(b1, a1p)); + var arctan2 = rad2deg(atan2(b2, a2p)); + var h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360; + var h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360; + var avgHp = + abs(h1p - h2p) > 180 ? (h1p + h2p + 360) / 2 : (h1p + h2p) / 2; + 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)); + var deltaHp = h2p - h1p; + deltaHp = + abs(deltaHp) <= 180 + ? deltaHp + : h2p <= h1p + ? deltaHp + 360 + : deltaHp - 360; + deltaHp = 2 * sqrt(C1p * C2p) * sin(deg2rad(deltaHp) / 2); + var deltaL = L2 - L1; + var deltaCp = C2p - C1p; + var sl = 1 + (0.015 * pow(avgL - 50, 2)) / sqrt(20 + pow(avgL - 50, 2)); + var sc = 1 + 0.045 * avgCp; + var sh = 1 + 0.015 * avgCp * T; + var deltaTheta = 30 * exp(-pow((avgHp - 275) / 25, 2)); + var Rc = 2 * sqrt(pow(avgCp, 7) / (pow(avgCp, 7) + pow(25, 7))); + var Rt = -Rc * sin(2 * deg2rad(deltaTheta)); + 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)) + ); + return max(0, min(100, result)); + } + + // simple Euclidean distance + function distance (a, b, mode) { + if ( mode === void 0 ) mode = 'lab'; + + // Delta E (CIE 1976) + // see http://www.brucelindbloom.com/index.html?Equations.html + a = new Color(a); + b = new Color(b); + var l1 = a.get(mode); + var l2 = b.get(mode); + var sum_sq = 0; + for (var i in l1) { + var d = (l1[i] || 0) - (l2[i] || 0); + sum_sq += d * d; + } + return Math.sqrt(sum_sq); + } + + function valid () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + try { + new (Function.prototype.bind.apply( Color, [ null ].concat( args) )); + return true; + // eslint-disable-next-line + } catch (e) { + return false; + } + } + + // some pre-defined color scales: + + var scales = { + cool: function cool() { + return scale([chroma.hsl(180, 1, 0.9), chroma.hsl(250, 0.7, 0.4)]); + }, + hot: function hot() { + return scale(['#000', '#f00', '#ff0', '#fff']).mode( + 'rgb' + ); + } + }; + + /** + ColorBrewer colors for chroma.js + + Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The + Pennsylvania State University. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed + under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. See the License for the + specific language governing permissions and limitations under the License. + */ + + var colorbrewer = { + // sequential + OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'], + PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'], + BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'], + Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'], + BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'], + YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'], + YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'], + Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'], + RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'], + Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'], + YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'], + Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'], + GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'], + Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'], + YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'], + PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'], + Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'], + PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'], + Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'], + + // diverging + Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'], + RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'], + RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'], + PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'], + PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'], + RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'], + BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'], + RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'], + PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'], + + // qualitative + Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'], + Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'], + Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'], + Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'], + Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'], + Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'], + Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'], + Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'] + }; + + // add lowercase aliases for case-insensitive matches + for (var i = 0, list = Object.keys(colorbrewer); i < list.length; i += 1) { + var key = list[i]; + + colorbrewer[key.toLowerCase()] = colorbrewer[key]; + } + + Object.assign(chroma, { + average: average, + bezier: bezier$1, + blend: blend, + cubehelix: cubehelix, + mix: mix, + interpolate: mix, + random: random$1, + scale: scale, + analyze: analyze, + contrast: contrast, + deltaE: deltaE, + distance: distance, + limits: limits, + valid: valid, + scales: scales, + input: input, + colors: w3cx11, + brewer: colorbrewer + }); + + return chroma; + +})); diff --git a/dist/chroma.min.cjs b/dist/chroma.min.cjs new file mode 100644 index 00000000..c86b7a2b --- /dev/null +++ b/dist/chroma.min.cjs @@ -0,0 +1,58 @@ +/** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2024, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */ + +!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,(function(){"use strict";function r(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),l(h(e,r),t)}function e(e){e._clipped=!1,e._unclipped=e.slice(0);for(var t=0;t<=3;t++)t<3?((e[t]<0||e[t]>255)&&(e._clipped=!0),e[t]=r(e[t],0,255)):3===t&&(e[t]=r(e[t],0,1));return e}for(var t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n=3?Array.prototype.slice.call(r):"object"==o(r[0])&&e?e.split("").filter((function(e){return void 0!==r[0][e]})).map((function(e){return r[0][e]})):r[0]}function c(r){if(r.length<2)return null;var e=r.length-1;return"string"==o(r[e])?r[e].toLowerCase():null}var i=Math.PI,l=Math.min,h=Math.max,d=2*i,s=i/3,b=i/180,g=180/i,p={format:{},autodetect:[]},v=function(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];var n=this;if("object"===o(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var a=c(r),f=!1;if(!a){f=!0,p.sorted||(p.autodetect=p.autodetect.sort((function(r,e){return e.p-r.p})),p.sorted=!0);for(var u=0,i=p.autodetect;u4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},p.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"cmyk"))&&4===r.length)return"cmyk"}});var w=function(r){return Math.round(100*r)/100},k=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a=(r=u(r,"rgba"))[0],f=r[1],o=r[2],c=l(a/=255,f/=255,o/=255),i=h(a,f,o),d=(i+c)/2;return i===c?(t=0,n=Number.NaN):t=d<.5?(i-c)/(i+c):(i-c)/(2-i-c),a==i?n=(f-o)/(i-c):f==i?n=2+(o-a)/(i-c):o==i&&(n=4+(a-f)/(i-c)),(n*=60)<0&&(n+=360),r.length>3&&void 0!==r[3]?[n,t,d,r[3]]:[n,t,d]},M=Math.round,N=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgba"),n=c(r)||"rgb";return"hsl"==n.substr(0,3)?function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"hsla"),n=c(r)||"lsa";return t[0]=w(t[0]||0),t[1]=w(100*t[1])+"%",t[2]=w(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"}(k(t),n):(t[0]=M(t[0]),t[1]=M(t[1]),t[2]=M(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},_=Math.round,x=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=u(e,"hsl"))[0],c=e[1],i=e[2];if(0===c)n=a=f=255*i;else{var l=[0,0,0],h=[0,0,0],d=i<.5?i*(1+c):i+c-i*c,s=2*i-d,b=o/360;l[0]=b+1/3,l[1]=b,l[2]=b-1/3;for(var g=0;g<3;g++)l[g]<0&&(l[g]+=1),l[g]>1&&(l[g]-=1),6*l[g]<1?h[g]=s+6*(d-s)*l[g]:2*l[g]<1?h[g]=d:3*l[g]<2?h[g]=s+(d-s)*(2/3-l[g])*6:h[g]=s;n=(r=[_(255*h[0]),_(255*h[1]),_(255*h[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},A=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,F=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,E=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,j=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,q=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,L=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,O=Math.round,P=function(r){var e;if(r=r.toLowerCase().trim(),p.format.named)try{return p.format.named(r)}catch(r){}if(e=r.match(A)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];return t[3]=1,t}if(e=r.match(F)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(E)){for(var o=e.slice(1,4),u=0;u<3;u++)o[u]=O(2.55*o[u]);return o[3]=1,o}if(e=r.match(j)){for(var c=e.slice(1,5),i=0;i<3;i++)c[i]=O(2.55*c[i]);return c[3]=+c[3],c}if(e=r.match(q)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var h=x(l);return h[3]=1,h}if(e=r.match(L)){var d=e.slice(1,4);d[1]*=.01,d[2]*=.01;var s=x(d);return s[3]=+e[4],s}};P.test=function(r){return A.test(r)||F.test(r)||E.test(r)||j.test(r)||q.test(r)||L.test(r)},v.prototype.css=function(r){return N(this._rgb,r)},m.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["css"])))},p.format.css=P,p.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===o(r)&&P.test(r))return"css"}}),p.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},m.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["gl"])))},v.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var G=Math.floor;v.prototype.hcg=function(){return function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=u(r,"rgb"),a=n[0],f=n[1],o=n[2],c=l(a,f,o),i=h(a,f,o),d=i-c,s=100*d/255,b=c/(255-d)*100;return 0===d?t=Number.NaN:(a===i&&(t=(f-o)/d),f===i&&(t=2+(o-a)/d),o===i&&(t=4+(a-f)/d),(t*=60)<0&&(t+=360)),[t,s,b]}(this._rgb)},m.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["hcg"])))},p.format.hcg=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var i,l,h,d=(o=u(o,"hcg"))[0],s=o[1],b=o[2];b*=255;var g=255*s;if(0===s)i=l=h=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=G(d/=60),v=d-p,m=b*(1-s),y=m+g*(1-v),w=m+g*v,k=m+g;switch(p){case 0:i=(r=[k,w,m])[0],l=r[1],h=r[2];break;case 1:i=(e=[y,k,m])[0],l=e[1],h=e[2];break;case 2:i=(t=[m,k,w])[0],l=t[1],h=t[2];break;case 3:i=(n=[m,y,k])[0],l=n[1],h=n[2];break;case 4:i=(a=[w,m,k])[0],l=a[1],h=a[2];break;case 5:i=(f=[k,m,y])[0],l=f[1],h=f[2]}}return[i,l,h,o.length>3?o[3]:1]},p.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"hcg"))&&3===r.length)return"hcg"}});var B=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,C=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,R=function(r){if(r.match(B)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(C)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex color: "+r)},S=Math.round,$=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],i=c(r)||"auto";void 0===o&&(o=1),"auto"===i&&(i=o<1?"rgba":"rgb");var l="000000"+((n=S(n))<<16|(a=S(a))<<8|(f=S(f))).toString(16);l=l.substr(l.length-6);var h="0"+S(255*o).toString(16);switch(h=h.substr(h.length-2),i.toLowerCase()){case"rgba":return"#"+l+h;case"argb":return"#"+h+l;default:return"#"+l}};v.prototype.hex=function(r){return $(this._rgb,r)},m.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["hex"])))},p.format.hex=R,p.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===o(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Y=Math.cos,z=Math.min,I=Math.sqrt,U=Math.acos;v.prototype.hsi=function(){return function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=u(r,"rgb"),a=n[0],f=n[1],o=n[2],c=z(a/=255,f/=255,o/=255),i=(a+f+o)/3,l=i>0?1-c/i:0;return 0===l?t=NaN:(t=(a-f+(a-o))/2,t/=I((a-f)*(a-f)+(a-o)*(f-o)),t=U(t),o>f&&(t=d-t),t/=d),[360*t,l,i]}(this._rgb)},m.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["hsi"])))},p.format.hsi=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=u(e,"hsi"))[0],c=e[1],i=e[2];return isNaN(o)&&(o=0),isNaN(c)&&(c=0),o>360&&(o-=360),o<0&&(o+=360),(o/=360)<1/3?a=1-((f=(1-c)/3)+(n=(1+c*Y(d*o)/Y(s-d*o))/3)):o<2/3?f=1-((n=(1-c)/3)+(a=(1+c*Y(d*(o-=1/3))/Y(s-d*o))/3)):n=1-((a=(1-c)/3)+(f=(1+c*Y(d*(o-=2/3))/Y(s-d*o))/3)),[255*(n=r(i*n*3)),255*(a=r(i*a*3)),255*(f=r(i*f*3)),e.length>3?e[3]:1]},p.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"hsi"))&&3===r.length)return"hsi"}}),v.prototype.hsl=function(){return k(this._rgb)},m.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["hsl"])))},p.format.hsl=x,p.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"hsl"))&&3===r.length)return"hsl"}});var V=Math.floor,X=Math.min,D=Math.max;v.prototype.hsv=function(){return function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=u(r,"rgb"))[0],o=r[1],c=r[2],i=X(f,o,c),l=D(f,o,c),h=l-i;return a=l/255,0===l?(t=Number.NaN,n=0):(n=h/l,f===l&&(t=(o-c)/h),o===l&&(t=2+(c-f)/h),c===l&&(t=4+(f-o)/h),(t*=60)<0&&(t+=360)),[t,n,a]}(this._rgb)},m.hsv=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["hsv"])))},p.format.hsv=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var i,l,h,d=(o=u(o,"hsv"))[0],s=o[1],b=o[2];if(b*=255,0===s)i=l=h=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var g=V(d/=60),p=d-g,v=b*(1-s),m=b*(1-s*p),y=b*(1-s*(1-p));switch(g){case 0:i=(r=[b,y,v])[0],l=r[1],h=r[2];break;case 1:i=(e=[m,b,v])[0],l=e[1],h=e[2];break;case 2:i=(t=[v,b,y])[0],l=t[1],h=t[2];break;case 3:i=(n=[v,m,b])[0],l=n[1],h=n[2];break;case 4:i=(a=[y,v,b])[0],l=a[1],h=a[2];break;case 5:i=(f=[b,v,m])[0],l=f[1],h=f[2]}}return[i,l,h,o.length>3?o[3]:1]},p.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"hsv"))&&3===r.length)return"hsv"}});var T=18,H=.95047,J=1,K=1.08883,Q=.137931034,W=.206896552,Z=.12841855,rr=.008856452,er=Math.pow,tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=u(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=J*ar(n),t=H*ar(t),a=K*ar(a),[nr(3.2404542*t-1.5371385*n-.4985314*a),nr(-.969266*t+1.8760108*n+.041556*a),nr(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},nr=function(r){return 255*(r<=.00304?12.92*r:1.055*er(r,1/2.4)-.055)},ar=function(r){return r>W?r*r*r:Z*(r-Q)},fr=Math.pow,or=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgb"),n=t[0],a=t[1],f=t[2],o=ir(n,a,f),c=o[0],i=o[1],l=116*i-16;return[l<0?0:l,500*(c-i),200*(i-o[2])]},ur=function(r){return(r/=255)<=.04045?r/12.92:fr((r+.055)/1.055,2.4)},cr=function(r){return r>rr?fr(r,1/3):r/Z+Q},ir=function(r,e,t){return r=ur(r),e=ur(e),t=ur(t),[cr((.4124564*r+.3575761*e+.1804375*t)/H),cr((.2126729*r+.7151522*e+.072175*t)/J),cr((.0193339*r+.119192*e+.9503041*t)/K)]};v.prototype.lab=function(){return or(this._rgb)},m.lab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["lab"])))},p.format.lab=tr,p.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"lab"))&&3===r.length)return"lab"}});var lr=Math.sin,hr=Math.cos,dr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,hr(f*=b)*a,lr(f)*a]},sr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=u(r,"lch"))[0],n=r[1],a=r[2],f=dr(t,n,a),o=f[0],c=f[1],i=f[2],l=tr(o,c,i);return[l[0],l[1],l[2],r.length>3?r[3]:1]},br=Math.sqrt,gr=Math.atan2,pr=Math.round,vr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"lab"),n=t[0],a=t[1],f=t[2],o=br(a*a+f*f),c=(gr(f,a)*g+360)%360;return 0===pr(1e4*o)&&(c=Number.NaN),[n,o,c]},mr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgb"),n=t[0],a=t[1],f=t[2],o=or(n,a,f),c=o[0],i=o[1],l=o[2];return vr(c,i,l)};v.prototype.lch=function(){return mr(this._rgb)},v.prototype.hcl=function(){return mr(this._rgb).reverse()},m.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["lch"])))},m.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["hcl"])))},p.format.lch=sr,p.format.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"hcl").reverse();return sr.apply(void 0,t)},["lch","hcl"].forEach((function(r){return p.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if("array"===o(e=u(e,r))&&3===e.length)return r}})}));var yr={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};v.prototype.name=function(){for(var r=$(this._rgb,"rgb"),e=0,t=Object.keys(yr);e0;)e[t]=arguments[t+1];if(!e.length&&"string"===o(r)&&yr[r.toLowerCase()])return"named"}});v.prototype.num=function(){return function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]}(this._rgb)},m.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["num"])))},p.format.num=function(r){if("number"==o(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},p.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===o(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var wr=Math.round;v.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(wr)},v.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map((function(e,t){return t<3?!1===r?e:wr(e):e}))},m.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["rgb"])))},p.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgba");return void 0===t[3]&&(t[3]=1),t},p.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"rgba"))&&(3===r.length||4===r.length&&"number"==o(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var kr=Math.log,Mr=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*kr(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*kr(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-40.25366309332127*kr(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*kr(t),n=255),[e,t,n,1]},Nr=Math.round;v.prototype.temp=v.prototype.kelvin=v.prototype.temperature=function(){return function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=u(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var i=Mr(t=.5*(c+o));i[2]/i[0]>=f/a?c=t:o=t}return Nr(t)}(this._rgb)},m.temp=m.kelvin=m.temperature=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["temp"])))},p.format.temp=p.format.kelvin=p.format.temperature=Mr;var _r=Math.pow,xr=Math.sign,Ar=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=u(r,"lab"))[0],n=r[1],a=r[2],f=_r(t+.3963377774*n+.2158037573*a,3),o=_r(t-.1055613458*n-.0638541728*a,3),c=_r(t-.0894841775*n-1.291485548*a,3);return[255*Fr(4.0767416621*f-3.3077115913*o+.2309699292*c),255*Fr(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Fr(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Fr(r){var e=Math.abs(r);return e>.0031308?(xr(r)||1)*(1.055*_r(e,1/2.4)-.055):12.92*r}var Er=Math.cbrt,jr=Math.pow,qr=Math.sign,Lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[Or(n/255),Or(a/255),Or(f/255)],c=o[0],i=o[1],l=o[2],h=Er(.4122214708*c+.5363325363*i+.0514459929*l),d=Er(.2119034982*c+.6806995451*i+.1073969566*l),s=Er(.0883024619*c+.2817188376*i+.6299787005*l);return[.2104542553*h+.793617785*d-.0040720468*s,1.9779984951*h-2.428592205*d+.4505937099*s,.0259040371*h+.7827717662*d-.808675766*s]};function Or(r){var e=Math.abs(r);return e<.04045?r/12.92:(qr(r)||1)*jr((e+.055)/1.055,2.4)}v.prototype.oklab=function(){return Lr(this._rgb)},m.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["oklab"])))},p.format.oklab=Ar,p.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"oklab"))&&3===r.length)return"oklab"}});v.prototype.oklch=function(){return function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=u(r,"rgb"),n=t[0],a=t[1],f=t[2],o=Lr(n,a,f),c=o[0],i=o[1],l=o[2];return vr(c,i,l)}(this._rgb)},m.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(v,[null].concat(r,["oklch"])))},p.format.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=u(r,"lch"))[0],n=r[1],a=r[2],f=dr(t,n,a),o=f[0],c=f[1],i=f[2],l=Ar(o,c,i);return[l[0],l[1],l[2],r.length>3?r[3]:1]},p.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("array"===o(r=u(r,"oklch"))&&3===r.length)return"oklch"}}),v.prototype.alpha=function(r,e){return void 0===e&&(e=!1),void 0!==r&&"number"===o(r)?e?(this._rgb[3]=r,this):new v([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1},v.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=T*r,new v(e,"lab").alpha(this.alpha(),!0)},v.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},v.prototype.darker=v.prototype.darken,v.prototype.brighter=v.prototype.brighten,v.prototype.get=function(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var Pr=Math.pow;v.prototype.luminance=function(r,e){if(void 0===e&&(e="rgb"),void 0!==r&&"number"===o(r)){if(0===r)return new v([0,0,0,this._rgb[3]],"rgb");if(1===r)return new v([255,255,255,this._rgb[3]],"rgb");var t=this.luminance(),n=20,a=function(t,f){var o=t.interpolate(f,.5,e),u=o.luminance();return Math.abs(r-u)<1e-7||!n--?o:u>r?a(t,o):a(o,f)},f=(t>r?a(new v([0,0,0]),this):a(this,new v([255,255,255]))).rgb();return new v(f.concat([this._rgb[3]]))}return Gr.apply(void 0,this._rgb.slice(0,3))};var Gr=function(r,e,t){return.2126*(r=Br(r))+.7152*(e=Br(e))+.0722*(t=Br(t))},Br=function(r){return(r/=255)<=.03928?r/12.92:Pr((r+.055)/1.055,2.4)},Cr={};function Rr(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(Cr[f]||n.length||(f=Object.keys(Cr)[0]),!Cr[f])throw new Error("interpolation mode "+f+" is not defined");return"object"!==o(r)&&(r=new v(r)),"object"!==o(e)&&(e=new v(e)),Cr[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))}v.prototype.mix=v.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rr.apply(void 0,[this,r,e].concat(t))},v.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new v([e[0]*t,e[1]*t,e[2]*t,t],"rgb")},v.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=T*r,e[1]<0&&(e[1]=0),new v(e,"lch").alpha(this.alpha(),!0)},v.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)},v.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],u=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==o(e))switch(e.charAt(0)){case"+":case"-":u[c]+=+e;break;case"*":u[c]*=+e.substr(1);break;case"/":u[c]/=+e.substr(1);break;default:u[c]=+e}else{if("number"!==o(e))throw new Error("unsupported value for Color.set");u[c]=e}var i=new v(u,a);return t?(this._rgb=i._rgb,this):i}throw new Error("unknown channel "+f+" in mode "+a)}return u},v.prototype.tint=function(r){void 0===r&&(r=.5);for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];return Rr.apply(void 0,[this,"white",r].concat(e))},v.prototype.shade=function(r){void 0===r&&(r=.5);for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];return Rr.apply(void 0,[this,"black",r].concat(e))};Cr.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new v(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var Sr=Math.sqrt,$r=Math.pow;Cr.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],u=e._rgb,c=u[0],i=u[1],l=u[2];return new v(Sr($r(a,2)*(1-t)+$r(c,2)*t),Sr($r(f,2)*(1-t)+$r(i,2)*t),Sr($r(o,2)*(1-t)+$r(l,2)*t),"rgb")};function Yr(r,e,t,n){var a,f,o,u,c,i,l,h,d,s,b,g,p;return"hsl"===n?(o=r.hsl(),u=e.hsl()):"hsv"===n?(o=r.hsv(),u=e.hsv()):"hcg"===n?(o=r.hcg(),u=e.hcg()):"hsi"===n?(o=r.hsi(),u=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),u=e.hcl()):"oklch"===n&&(o=r.oklch().reverse(),u=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(c=(a=o)[0],l=a[1],d=a[2],i=(f=u)[0],h=f[1],s=f[2]),isNaN(c)||isNaN(i)?isNaN(c)?isNaN(i)?g=Number.NaN:(g=i,1!=d&&0!=d||"hsv"==n||(b=h)):(g=c,1!=s&&0!=s||"hsv"==n||(b=l)):g=c+t*(i>c&&i-c>180?i-(c+360):i180?i+360-c:i-c),void 0===b&&(b=l+t*(h-l)),p=d+t*(s-d),new v("oklch"===n?[p,b,g]:[g,b,p],n)}Cr.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new v(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var zr=function(r,e,t){return Yr(r,e,t,"lch")};Cr.lch=zr,Cr.hcl=zr;Cr.num=function(r,e,t){var n=r.num(),a=e.num();return new v(n+t*(a-n),"num")};Cr.hcg=function(r,e,t){return Yr(r,e,t,"hcg")};Cr.hsi=function(r,e,t){return Yr(r,e,t,"hsi")};Cr.hsl=function(r,e,t){return Yr(r,e,t,"hsl")};Cr.hsv=function(r,e,t){return Yr(r,e,t,"hsv")};Cr.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new v(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};Cr.oklch=function(r,e,t){return Yr(r,e,t,"oklch")};var Ir=Math.pow,Ur=Math.sqrt,Vr=Math.PI,Xr=Math.cos,Dr=Math.sin,Tr=Math.atan2;var Hr=function(r,t){for(var n=r.length,a=[0,0,0,0],f=0;f.9999999&&(a[3]=1),new v(e(a))},Jr=Math.pow;function Kr(e){var t="rgb",n=m("#ccc"),a=0,f=[0,1],u=[],c=[0,0],i=!1,l=[],h=!1,d=0,s=1,b=!1,g={},p=!0,v=1,y=function(r){if((r=r||["#fff","#000"])&&"string"===o(r)&&m.brewer&&m.brewer[r.toLowerCase()]&&(r=m.brewer[r.toLowerCase()]),"array"===o(r)){1===r.length&&(r=[r[0],r[0]]),r=r.slice(0);for(var e=0;e2){var b=function(r){if(null!=i){for(var e=i.length-1,t=0;t=i[t];)t++;return t-1}return 0}(e);h=b/(i.length-2)}else h=s!==d?(e-d)/(s-d):1;h=k(h),a||(h=w(h)),1!==v&&(h=Jr(h,v)),h=r(h=c[0]+h*(1-c[0]-c[1]),0,1);var y=Math.floor(1e4*h);if(p&&g[y])f=g[y];else{if("array"===o(l))for(var M=0;M=N&&M===u.length-1){f=l[M];break}if(h>N&&h2){var c=r.map((function(e,t){return t/(r.length-1)})),i=r.map((function(r){return(r-d)/(s-d)}));i.every((function(r,e){return c[e]===r}))||(k=function(r){if(r<=0||r>=1)return r;for(var e=0;r>=i[e+1];)e++;var t=(r-i[e])/(i[e+1]-i[e]);return c[e]+t*(c[e+1]-c[e])})}}return f=[d,s],_},_.mode=function(r){return arguments.length?(t=r,N(),_):t},_.range=function(r,e){return y(r),_},_.out=function(r){return h=r,_},_.spread=function(r){return arguments.length?(a=r,_):a},_.correctLightness=function(r){return null==r&&(r=!0),b=r,N(),w=b?function(r){for(var e=M(0,!0).lab()[0],t=M(1,!0).lab()[0],n=e>t,a=M(r,!0).lab()[0],f=e+(t-e)*r,o=a-f,u=0,c=1,i=20;Math.abs(o)>.01&&i-- >0;)n&&(o*=-1),o<0?(u=r,r+=.5*(c-r)):(c=r,r+=.5*(u-r)),a=M(r,!0).lab()[0],o=a-f;return r}:function(r){return r},_},_.padding=function(r){return null!=r?("number"===o(r)&&(r=[r,r]),c=r,_):c},_.colors=function(r,t){arguments.length<2&&(t="hex");var n=[];if(0===arguments.length)n=l.slice(0);else if(1===r)n=[_(.5)];else if(r>1){var a=f[0],o=f[1]-a;n=function(r,e){for(var t=[],n=ra;n?f++:f--)t.push(f);return t}(0,r).map((function(e){return _(a+e/(r-1)*o)}))}else{e=[];var u=[];if(i&&i.length>2)for(var c=1,h=i.length,d=1<=h;d?ch;d?c++:c--)u.push(.5*(i[c-1]+i[c]));else u=f;n=u.map((function(r){return _(r)}))}return m[t]&&(n=n.map((function(r){return r[t]()}))),n},_.cache=function(r){return null!=r?(p=r,_):p},_.gamma=function(r){return null!=r?(v=r,_):v},_.nodata=function(r){return null!=r?(n=m(r),_):n},_}var Qr=function(r,e,t){if(!Qr[t])throw new Error("unknown blend mode "+t);return Qr[t](r,e)},Wr=function(r){return function(e,t){var n=m(t).rgb(),a=m(e).rgb();return m.rgb(r(n,a))}},Zr=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Qr.normal=Wr(Zr((function(r){return r}))),Qr.multiply=Wr(Zr((function(r,e){return r*e/255}))),Qr.screen=Wr(Zr((function(r,e){return 255*(1-(1-r/255)*(1-e/255))}))),Qr.overlay=Wr(Zr((function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-e/255))}))),Qr.darken=Wr(Zr((function(r,e){return r>e?e:r}))),Qr.lighten=Wr(Zr((function(r,e){return r>e?r:e}))),Qr.dodge=Wr(Zr((function(r,e){return 255===r||(r=e/255*255/(1-r/255))>255?255:r}))),Qr.burn=Wr(Zr((function(r,e){return 255*(1-(1-e/255)/(r/255))})));var re=Math.pow,ee=Math.sin,te=Math.cos;var ne=Math.floor,ae=Math.random;var fe=Math.log,oe=Math.pow,ue=Math.floor,ce=Math.abs;function ie(r,e){void 0===e&&(e=null);var t={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0};return"object"===o(r)&&(r=Object.values(r)),r.forEach((function(r){e&&"object"===o(r)&&(r=r[e]),null==r||isNaN(r)||(t.values.push(r),t.sum+=r,rt.max&&(t.max=r),t.count+=1)})),t.domain=[t.min,t.max],t.limits=function(r,e){return le(t,r,e)},t}function le(r,e,t){void 0===e&&(e="equal"),void 0===t&&(t=7),"array"==o(r)&&(r=ie(r));var n=r.min,a=r.max,f=r.values.sort((function(r,e){return r-e}));if(1===t)return[n,a];var u=[];if("c"===e.substr(0,1)&&(u.push(n),u.push(a)),"e"===e.substr(0,1)){u.push(n);for(var c=1;c 0");var i=Math.LOG10E*fe(n),l=Math.LOG10E*fe(a);u.push(n);for(var h=1;h200&&(w=!1)}for(var C={},R=0;R=360;)b-=360;o[s]=b}else o[s]=o[s]/u[s];return d/=n,new v(o,e).alpha(d>.99999?1:d,!0)},bezier:function(r){var e=function(r){var e,t,n,a,f,o,u;if(2===(r=r.map((function(r){return new v(r)}))).length)e=r.map((function(r){return r.lab()})),f=e[0],o=e[1],a=function(r){var e=[0,1,2].map((function(e){return f[e]+r*(o[e]-f[e])}));return new v(e,"lab")};else if(3===r.length)t=r.map((function(r){return r.lab()})),f=t[0],o=t[1],u=t[2],a=function(r){var e=[0,1,2].map((function(e){return(1-r)*(1-r)*f[e]+2*(1-r)*r*o[e]+r*r*u[e]}));return new v(e,"lab")};else if(4===r.length){var c;n=r.map((function(r){return r.lab()})),f=n[0],o=n[1],u=n[2],c=n[3],a=function(r){var e=[0,1,2].map((function(e){return(1-r)*(1-r)*(1-r)*f[e]+3*(1-r)*(1-r)*r*o[e]+3*(1-r)*r*r*u[e]+r*r*r*c[e]}));return new v(e,"lab")}}else{if(!(r.length>=5))throw new RangeError("No point in running bezier with only one color.");var i,l,h;i=r.map((function(r){return r.lab()})),h=r.length-1,l=function(r){for(var e=[1,1],t=1;tn?(t+.05)/(n+.05):(n+.05)/(t+.05)},deltaE:function(r,e,t,n,a){void 0===t&&(t=1),void 0===n&&(n=1),void 0===a&&(a=1);var f=function(r){return 360*r/(2*we)},o=function(r){return 2*we*r/360};r=new v(r),e=new v(e);var u=Array.from(r.lab()),c=u[0],i=u[1],l=u[2],h=Array.from(e.lab()),d=h[0],s=h[1],b=h[2],g=(c+d)/2,p=(he(de(i,2)+de(l,2))+he(de(s,2)+de(b,2)))/2,m=.5*(1-he(de(p,7)/(de(p,7)+de(25,7)))),y=i*(1+m),w=s*(1+m),k=he(de(y,2)+de(l,2)),M=he(de(w,2)+de(b,2)),N=(k+M)/2,_=f(ge(l,y)),x=f(ge(b,w)),A=_>=0?_:_+360,F=x>=0?x:x+360,E=pe(A-F)>180?(A+F+360)/2:(A+F)/2,j=1-.17*ve(o(E-30))+.24*ve(o(2*E))+.32*ve(o(3*E+6))-.2*ve(o(4*E-63)),q=F-A;q=pe(q)<=180?q:F<=A?q+360:q-360,q=2*he(k*M)*me(o(q)/2);var L=d-c,O=M-k,P=1+.015*de(g-50,2)/he(20+de(g-50,2)),G=1+.045*N,B=1+.015*N*j,C=30*ye(-de((E-275)/25,2)),R=-(2*he(de(N,7)/(de(N,7)+de(25,7))))*me(2*o(C)),S=he(de(L/(t*P),2)+de(O/(n*G),2)+de(q/(a*B),2)+R*(O/(n*G))*(q/(a*B)));return be(0,se(100,S))},distance:function(r,e,t){void 0===t&&(t="lab"),r=new v(r),e=new v(e);var n=r.get(t),a=e.get(t),f=0;for(var o in n){var u=(n[o]||0)-(a[o]||0);f+=u*u}return Math.sqrt(f)},limits:le,valid:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];try{return new(Function.prototype.bind.apply(v,[null].concat(r))),!0}catch(r){return!1}},scales:ke,input:p,colors:yr,brewer:Me}),m})); From c26e860061315bbce1eb8f8eb31e38174a45ac40 Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 6 Aug 2024 21:19:03 +0800 Subject: [PATCH 16/18] chore: update --- tsup.config.mjs | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 tsup.config.mjs diff --git a/tsup.config.mjs b/tsup.config.mjs deleted file mode 100644 index 7bd6ade5..00000000 --- a/tsup.config.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import { defineConfig } from 'tsup' -import license from 'esbuild-plugin-license' - -export default defineConfig({ - entry: [ - './index.js', - './index-light.js', - ], - clean: true, - format: ['esm', 'cjs'], - minify: true, - esbuildPlugins: [license()] -}) From e9b173e1e4f7ba7fb3403973055c77eaf82046ab Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 6 Aug 2024 21:24:50 +0800 Subject: [PATCH 17/18] chore: remove ci --- .github/workflows/ci.yml | 42 ---------------------------------------- 1 file changed, 42 deletions(-) delete mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 69af4b38..00000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: CI - -on: - push: - branches: - - main - - pull_request: - branches: - - main - -jobs: - test: - runs-on: ${{ matrix.os }} - - strategy: - matrix: - node: [lts/*] - os: [ubuntu-latest, windows-latest, macos-latest] - fail-fast: false - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - - - name: Set node ${{ matrix.node }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node }} - cache: pnpm - - - name: Install Dependencies - run: pnpm i - - - name: Build - run: pnpm build - - - name: Test - run: pnpm test From 1a85a1149f1914e5e8260b80eb01fc130b3cd46e Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 6 Aug 2024 21:27:31 +0800 Subject: [PATCH 18/18] chore: update --- package.json | 1 - pnpm-lock.yaml | 260 ------------------------------------------------- 2 files changed, 261 deletions(-) diff --git a/package.json b/package.json index 6eda466e..4a38d88a 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,6 @@ "@rollup/plugin-buble": "^1.0.3", "@rollup/plugin-terser": "^0.4.4", "cross-env": "^7.0.3", - "esbuild-plugin-license": "^1.2.3", "eslint": "^9.8.0", "globals": "^15.8.0", "http-server": "^14.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9a0e2b8e..12f56124 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,9 +26,6 @@ importers: cross-env: specifier: ^7.0.3 version: 7.0.3 - esbuild-plugin-license: - specifier: ^1.2.3 - version: 1.2.3(esbuild@0.23.0) eslint: specifier: ^9.8.0 version: 9.8.0 @@ -150,282 +147,138 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.23.0': - resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.23.0': - resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.23.0': - resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.23.0': - resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.23.0': - resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.23.0': - resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.23.0': - resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.0': - resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.23.0': - resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.23.0': - resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.23.0': - resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.23.0': - resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.23.0': - resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.23.0': - resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.23.0': - resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.23.0': - resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.23.0': - resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.0': - resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.23.0': - resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.0': - resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.23.0': - resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.23.0': - resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.23.0': - resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.23.0': - resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -865,21 +718,11 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - esbuild-plugin-license@1.2.3: - resolution: {integrity: sha512-/ovWsIFHYIRqapsPCojMRHFppCgU3jFTVSu9r6MjpUArCWukL64+NwYJkX28ZXzYtw/cOYkGmbC3EhX0qwnn9w==} - peerDependencies: - esbuild: '*' - esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true - esbuild@0.23.0: - resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==} - engines: {node: '>=18'} - hasBin: true - escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -1899,144 +1742,72 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.23.0': - optional: true - '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.23.0': - optional: true - '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.23.0': - optional: true - '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.23.0': - optional: true - '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.23.0': - optional: true - '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.23.0': - optional: true - '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.23.0': - optional: true - '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.23.0': - optional: true - '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.23.0': - optional: true - '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.23.0': - optional: true - '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.23.0': - optional: true - '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.23.0': - optional: true - '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.23.0': - optional: true - '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.23.0': - optional: true - '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.23.0': - optional: true - '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.23.0': - optional: true - '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.23.0': - optional: true - '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.23.0': - optional: true - - '@esbuild/openbsd-arm64@0.23.0': - optional: true - '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.23.0': - optional: true - '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.23.0': - optional: true - '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.23.0': - optional: true - '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.23.0': - optional: true - '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.23.0': - optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)': dependencies: eslint: 9.8.0 @@ -2434,10 +2205,6 @@ snapshots: es-errors@1.3.0: {} - esbuild-plugin-license@1.2.3(esbuild@0.23.0): - dependencies: - esbuild: 0.23.0 - esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -2464,33 +2231,6 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.23.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.23.0 - '@esbuild/android-arm': 0.23.0 - '@esbuild/android-arm64': 0.23.0 - '@esbuild/android-x64': 0.23.0 - '@esbuild/darwin-arm64': 0.23.0 - '@esbuild/darwin-x64': 0.23.0 - '@esbuild/freebsd-arm64': 0.23.0 - '@esbuild/freebsd-x64': 0.23.0 - '@esbuild/linux-arm': 0.23.0 - '@esbuild/linux-arm64': 0.23.0 - '@esbuild/linux-ia32': 0.23.0 - '@esbuild/linux-loong64': 0.23.0 - '@esbuild/linux-mips64el': 0.23.0 - '@esbuild/linux-ppc64': 0.23.0 - '@esbuild/linux-riscv64': 0.23.0 - '@esbuild/linux-s390x': 0.23.0 - '@esbuild/linux-x64': 0.23.0 - '@esbuild/netbsd-x64': 0.23.0 - '@esbuild/openbsd-arm64': 0.23.0 - '@esbuild/openbsd-x64': 0.23.0 - '@esbuild/sunos-x64': 0.23.0 - '@esbuild/win32-arm64': 0.23.0 - '@esbuild/win32-ia32': 0.23.0 - '@esbuild/win32-x64': 0.23.0 - escalade@3.1.2: {} escape-string-regexp@1.0.5: {}