seismic-color-chart 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chroma-color-scale.js","sources":["../node_modules/chroma-js/src/utils/limit.js","../node_modules/chroma-js/src/utils/clip_rgb.js","../node_modules/chroma-js/src/utils/type.js","../node_modules/chroma-js/src/utils/unpack.js","../node_modules/chroma-js/src/utils/last.js","../node_modules/chroma-js/src/utils/index.js","../node_modules/chroma-js/src/io/input.js","../node_modules/chroma-js/src/Color.js","../node_modules/chroma-js/src/version.js","../node_modules/chroma-js/src/chroma.js","../node_modules/chroma-js/src/io/cmyk/cmyk2rgb.js","../node_modules/chroma-js/src/io/cmyk/rgb2cmyk.js","../node_modules/chroma-js/src/io/cmyk/index.js","../node_modules/chroma-js/src/io/css/hsl2css.js","../node_modules/chroma-js/src/io/hsl/rgb2hsl.js","../node_modules/chroma-js/src/io/css/rgb2css.js","../node_modules/chroma-js/src/io/hsl/hsl2rgb.js","../node_modules/chroma-js/src/io/css/css2rgb.js","../node_modules/chroma-js/src/io/css/index.js","../node_modules/chroma-js/src/io/gl/index.js","../node_modules/chroma-js/src/io/hcg/hcg2rgb.js","../node_modules/chroma-js/src/io/hcg/rgb2hcg.js","../node_modules/chroma-js/src/io/hcg/index.js","../node_modules/chroma-js/src/io/hex/hex2rgb.js","../node_modules/chroma-js/src/io/hex/rgb2hex.js","../node_modules/chroma-js/src/io/hex/index.js","../node_modules/chroma-js/src/io/hsi/hsi2rgb.js","../node_modules/chroma-js/src/io/hsi/rgb2hsi.js","../node_modules/chroma-js/src/io/hsi/index.js","../node_modules/chroma-js/src/io/hsl/index.js","../node_modules/chroma-js/src/io/hsv/hsv2rgb.js","../node_modules/chroma-js/src/io/hsv/rgb2hsv.js","../node_modules/chroma-js/src/io/hsv/index.js","../node_modules/chroma-js/src/io/lab/lab-constants.js","../node_modules/chroma-js/src/io/lab/lab2rgb.js","../node_modules/chroma-js/src/io/lab/rgb2lab.js","../node_modules/chroma-js/src/io/lab/index.js","../node_modules/chroma-js/src/io/lch/lch2lab.js","../node_modules/chroma-js/src/io/lch/lch2rgb.js","../node_modules/chroma-js/src/io/lch/hcl2rgb.js","../node_modules/chroma-js/src/io/lch/lab2lch.js","../node_modules/chroma-js/src/io/lch/rgb2lch.js","../node_modules/chroma-js/src/io/lch/index.js","../node_modules/chroma-js/src/colors/w3cx11.js","../node_modules/chroma-js/src/io/named/index.js","../node_modules/chroma-js/src/io/num/num2rgb.js","../node_modules/chroma-js/src/io/num/rgb2num.js","../node_modules/chroma-js/src/io/num/index.js","../node_modules/chroma-js/src/io/rgb/index.js","../node_modules/chroma-js/src/io/temp/temperature2rgb.js","../node_modules/chroma-js/src/io/temp/rgb2temperature.js","../node_modules/chroma-js/src/io/temp/index.js","../node_modules/chroma-js/src/io/oklab/oklab2rgb.js","../node_modules/chroma-js/src/io/oklab/rgb2oklab.js","../node_modules/chroma-js/src/io/oklab/index.js","../node_modules/chroma-js/src/io/oklch/oklch2rgb.js","../node_modules/chroma-js/src/io/oklch/rgb2oklch.js","../node_modules/chroma-js/src/io/oklch/index.js","../node_modules/chroma-js/src/ops/alpha.js","../node_modules/chroma-js/src/ops/clipped.js","../node_modules/chroma-js/src/ops/darken.js","../node_modules/chroma-js/src/ops/get.js","../node_modules/chroma-js/src/ops/luminance.js","../node_modules/chroma-js/src/interpolator/index.js","../node_modules/chroma-js/src/generator/mix.js","../node_modules/chroma-js/src/ops/mix.js","../node_modules/chroma-js/src/ops/premultiply.js","../node_modules/chroma-js/src/ops/saturate.js","../node_modules/chroma-js/src/ops/set.js","../node_modules/chroma-js/src/ops/shade.js","../node_modules/chroma-js/src/interpolator/rgb.js","../node_modules/chroma-js/src/interpolator/lrgb.js","../node_modules/chroma-js/src/interpolator/lab.js","../node_modules/chroma-js/src/interpolator/_hsx.js","../node_modules/chroma-js/src/interpolator/lch.js","../node_modules/chroma-js/src/interpolator/num.js","../node_modules/chroma-js/src/interpolator/hcg.js","../node_modules/chroma-js/src/interpolator/hsi.js","../node_modules/chroma-js/src/interpolator/hsl.js","../node_modules/chroma-js/src/interpolator/hsv.js","../node_modules/chroma-js/src/interpolator/oklab.js","../node_modules/chroma-js/src/interpolator/oklch.js","../node_modules/chroma-js/src/generator/average.js","../node_modules/chroma-js/src/generator/scale.js","../node_modules/chroma-js/src/generator/bezier.js","../node_modules/chroma-js/src/generator/blend.js","../node_modules/chroma-js/src/generator/cubehelix.js","../node_modules/chroma-js/src/generator/random.js","../node_modules/chroma-js/src/utils/analyze.js","../node_modules/chroma-js/src/utils/contrast.js","../node_modules/chroma-js/src/utils/delta-e.js","../node_modules/chroma-js/src/utils/distance.js","../node_modules/chroma-js/src/utils/valid.js","../node_modules/chroma-js/src/utils/scales.js","../node_modules/chroma-js/src/colors/colorbrewer.js","../node_modules/chroma-js/index.js","../src/chroma-color-scale.js"],"sourcesContent":["import { min, max } from './index.js';\n\nexport default (x, low = 0, high = 1) => {\n return min(max(low, x), high);\n};\n","import limit from './limit.js';\n\nexport default (rgb) => {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (let i = 0; i <= 3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) rgb._clipped = true;\n rgb[i] = limit(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit(rgb[i], 0, 1);\n }\n }\n return rgb;\n};\n","// ported from jQuery's $.type\nconst classToType = {};\nfor (let name of [\n 'Boolean',\n 'Number',\n 'String',\n 'Function',\n 'Array',\n 'Date',\n 'RegExp',\n 'Undefined',\n 'Null'\n]) {\n classToType[`[object ${name}]`] = name.toLowerCase();\n}\nexport default function (obj) {\n return classToType[Object.prototype.toString.call(obj)] || 'object';\n}\n","import type from './type.js';\n\nexport default (args, keyOrder = null) => {\n // if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) return Array.prototype.slice.call(args);\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n if (type(args[0]) == 'object' && keyOrder) {\n return keyOrder\n .split('')\n .filter((k) => args[0][k] !== undefined)\n .map((k) => args[0][k]);\n }\n // otherwise we just return the first argument\n // (which we suppose is an array of args)\n return args[0];\n};\n","import type from './type.js';\n\nexport default (args) => {\n if (args.length < 2) return null;\n const l = args.length - 1;\n if (type(args[l]) == 'string') return args[l].toLowerCase();\n return null;\n};\n","const { PI, min, max } = Math;\n\nexport { default as clip_rgb } from './clip_rgb.js';\nexport { default as limit } from './limit.js';\nexport { default as type } from './type.js';\nexport { default as unpack } from './unpack.js';\nexport { default as last } from './last.js';\n\nconst TWOPI = PI * 2;\nconst PITHIRD = PI / 3;\nconst DEG2RAD = PI / 180;\nconst RAD2DEG = 180 / PI;\n\nexport { PI, TWOPI, PITHIRD, DEG2RAD, RAD2DEG, min, max };\n","export default {\n format: {},\n autodetect: []\n};\n","import { last, clip_rgb, type } from './utils/index.js';\nimport _input from './io/input.js';\n\nclass Color {\n constructor(...args) {\n const me = this;\n if (\n type(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor\n ) {\n // the argument is already a Color instance\n return args[0];\n }\n // last argument could be the mode\n let mode = last(args);\n let autodetect = false;\n if (!mode) {\n autodetect = true;\n if (!_input.sorted) {\n _input.autodetect = _input.autodetect.sort((a, b) => b.p - a.p);\n _input.sorted = true;\n }\n // auto-detect format\n for (let chk of _input.autodetect) {\n mode = chk.test(...args);\n if (mode) break;\n }\n }\n if (_input.format[mode]) {\n const rgb = _input.format[mode].apply(\n null,\n autodetect ? args : args.slice(0, -1)\n );\n me._rgb = clip_rgb(rgb);\n } else {\n throw new Error('unknown format: ' + args);\n }\n // add alpha channel\n if (me._rgb.length === 3) me._rgb.push(1);\n }\n toString() {\n if (type(this.hex) == 'function') return this.hex();\n return `[${this._rgb.join(',')}]`;\n }\n}\nexport default Color;\n","// this gets updated automatically\nexport const version = '2.6.0';\n","import Color from './Color.js';\nimport { version } from './version.js';\n\nconst chroma = (...args) => {\n return new chroma.Color(...args);\n};\n\nchroma.Color = Color;\nchroma.version = version;\n\nexport default chroma;\n","import { unpack } from '../../utils/index.js';\n\nconst cmyk2rgb = (...args) => {\n args = unpack(args, 'cmyk');\n const [c, m, y, k] = args;\n const alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) return [0, 0, 0, alpha];\n return [\n c >= 1 ? 0 : 255 * (1 - c) * (1 - k), // r\n m >= 1 ? 0 : 255 * (1 - m) * (1 - k), // g\n y >= 1 ? 0 : 255 * (1 - y) * (1 - k), // b\n alpha\n ];\n};\n\nexport default cmyk2rgb;\n","import { unpack } from '../../utils/index.js';\nconst { max } = Math;\n\nconst rgb2cmyk = (...args) => {\n let [r, g, b] = unpack(args, 'rgb');\n r = r / 255;\n g = g / 255;\n b = b / 255;\n const k = 1 - max(r, max(g, b));\n const f = k < 1 ? 1 / (1 - k) : 0;\n const c = (1 - r - k) * f;\n const m = (1 - g - k) * f;\n const y = (1 - b - k) * f;\n return [c, m, y, k];\n};\n\nexport default rgb2cmyk;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { unpack, type } from '../../utils/index.js';\nimport cmyk2rgb from './cmyk2rgb.js';\nimport rgb2cmyk from './rgb2cmyk.js';\n\nColor.prototype.cmyk = function () {\n return rgb2cmyk(this._rgb);\n};\n\nchroma.cmyk = (...args) => new Color(...args, 'cmyk');\n\ninput.format.cmyk = cmyk2rgb;\n\ninput.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, 'cmyk');\n if (type(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n});\n","import { unpack, last } from '../../utils/index.js';\nconst rnd = (a) => Math.round(a * 100) / 100;\n\n/*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\nconst hsl2css = (...args) => {\n const hsla = unpack(args, 'hsla');\n let mode = last(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1] * 100) + '%';\n hsla[2] = rnd(hsla[2] * 100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3] < 1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return `${mode}(${hsla.join(',')})`;\n};\n\nexport default hsl2css;\n","import { unpack, min, max } from '../../utils/index.js';\n\n/*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\nconst rgb2hsl = (...args) => {\n args = unpack(args, 'rgba');\n let [r, g, b] = args;\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n const minRgb = min(r, g, b);\n const maxRgb = max(r, g, b);\n\n const l = (maxRgb + minRgb) / 2;\n let s, h;\n\n if (maxRgb === minRgb) {\n s = 0;\n h = Number.NaN;\n } else {\n s =\n l < 0.5\n ? (maxRgb - minRgb) / (maxRgb + minRgb)\n : (maxRgb - minRgb) / (2 - maxRgb - minRgb);\n }\n\n if (r == maxRgb) h = (g - b) / (maxRgb - minRgb);\n else if (g == maxRgb) h = 2 + (b - r) / (maxRgb - minRgb);\n else if (b == maxRgb) h = 4 + (r - g) / (maxRgb - minRgb);\n\n h *= 60;\n if (h < 0) h += 360;\n if (args.length > 3 && args[3] !== undefined) return [h, s, l, args[3]];\n return [h, s, l];\n};\n\nexport default rgb2hsl;\n","import { unpack, last } from '../../utils/index.js';\nimport hsl2css from './hsl2css.js';\nimport rgb2hsl from '../hsl/rgb2hsl.js';\nconst { round } = Math;\n\n/*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\nconst rgb2css = (...args) => {\n const rgba = unpack(args, 'rgba');\n let mode = last(args) || 'rgb';\n if (mode.substr(0, 3) == 'hsl') {\n return hsl2css(rgb2hsl(rgba), mode);\n }\n rgba[0] = round(rgba[0]);\n rgba[1] = round(rgba[1]);\n rgba[2] = round(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3] < 1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return `${mode}(${rgba.slice(0, mode === 'rgb' ? 3 : 4).join(',')})`;\n};\n\nexport default rgb2css;\n","import { unpack } from '../../utils/index.js';\nconst { round } = Math;\n\nconst hsl2rgb = (...args) => {\n args = unpack(args, 'hsl');\n const [h, s, l] = args;\n let r, g, b;\n if (s === 0) {\n r = g = b = l * 255;\n } else {\n const t3 = [0, 0, 0];\n const c = [0, 0, 0];\n const t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const t1 = 2 * l - t2;\n const h_ = h / 360;\n t3[0] = h_ + 1 / 3;\n t3[1] = h_;\n t3[2] = h_ - 1 / 3;\n for (let i = 0; i < 3; i++) {\n if (t3[i] < 0) t3[i] += 1;\n if (t3[i] > 1) t3[i] -= 1;\n if (6 * t3[i] < 1) c[i] = t1 + (t2 - t1) * 6 * t3[i];\n else if (2 * t3[i] < 1) c[i] = t2;\n else if (3 * t3[i] < 2) c[i] = t1 + (t2 - t1) * (2 / 3 - t3[i]) * 6;\n else c[i] = t1;\n }\n [r, g, b] = [round(c[0] * 255), round(c[1] * 255), round(c[2] * 255)];\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r, g, b, args[3]];\n }\n return [r, g, b, 1];\n};\n\nexport default hsl2rgb;\n","import hsl2rgb from '../hsl/hsl2rgb.js';\nimport input from '../input.js';\n\nconst RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\nconst RE_RGBA =\n /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\nconst RE_RGB_PCT =\n /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\nconst RE_RGBA_PCT =\n /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\nconst RE_HSL =\n /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\nconst RE_HSLA =\n /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\nconst { round } = Math;\n\nconst css2rgb = (css) => {\n css = css.toLowerCase().trim();\n let m;\n\n if (input.format.named) {\n try {\n return input.format.named(css);\n // eslint-disable-next-line\n } catch (e) {}\n }\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n const rgb = m.slice(1, 4);\n for (let i = 0; i < 3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n const rgb = m.slice(1, 5);\n for (let i = 0; i < 4; i++) {\n rgb[i] = +rgb[i];\n }\n return rgb;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n const rgb = m.slice(1, 4);\n for (let i = 0; i < 3; i++) {\n rgb[i] = round(rgb[i] * 2.55);\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n const rgb = m.slice(1, 5);\n for (let i = 0; i < 3; i++) {\n rgb[i] = round(rgb[i] * 2.55);\n }\n rgb[3] = +rgb[3];\n return rgb;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n const hsl = m.slice(1, 4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n const rgb = hsl2rgb(hsl);\n rgb[3] = 1;\n return rgb;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n const hsl = m.slice(1, 4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n const rgb = hsl2rgb(hsl);\n rgb[3] = +m[4]; // default alpha = 1\n return rgb;\n }\n};\n\ncss2rgb.test = (s) => {\n return (\n RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s)\n );\n};\n\nexport default css2rgb;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { type } from '../../utils/index.js';\n\nimport rgb2css from './rgb2css.js';\nimport css2rgb from './css2rgb.js';\n\nColor.prototype.css = function (mode) {\n return rgb2css(this._rgb, mode);\n};\n\nchroma.css = (...args) => new Color(...args, 'css');\n\ninput.format.css = css2rgb;\n\ninput.autodetect.push({\n p: 5,\n test: (h, ...rest) => {\n if (!rest.length && type(h) === 'string' && css2rgb.test(h)) {\n return 'css';\n }\n }\n});\n","import Color from '../../Color.js';\nimport chroma from '../../chroma.js';\nimport input from '../input.js';\nimport { unpack } from '../../utils/index.js';\n\ninput.format.gl = (...args) => {\n const rgb = unpack(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n};\n\nchroma.gl = (...args) => new Color(...args, 'gl');\n\nColor.prototype.gl = function () {\n const rgb = this._rgb;\n return [rgb[0] / 255, rgb[1] / 255, rgb[2] / 255, rgb[3]];\n};\n","import { unpack } from '../../utils/index.js';\nconst { floor } = Math;\n\n/*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\nconst hcg2rgb = (...args) => {\n args = unpack(args, 'hcg');\n let [h, c, _g] = args;\n let r, g, b;\n _g = _g * 255;\n const _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) h = 0;\n if (h > 360) h -= 360;\n if (h < 0) h += 360;\n h /= 60;\n const i = floor(h);\n const f = h - i;\n const p = _g * (1 - c);\n const q = p + _c * (1 - f);\n const t = p + _c * f;\n const v = p + _c;\n switch (i) {\n case 0:\n [r, g, b] = [v, t, p];\n break;\n case 1:\n [r, g, b] = [q, v, p];\n break;\n case 2:\n [r, g, b] = [p, v, t];\n break;\n case 3:\n [r, g, b] = [p, q, v];\n break;\n case 4:\n [r, g, b] = [t, p, v];\n break;\n case 5:\n [r, g, b] = [v, p, q];\n break;\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default hcg2rgb;\n","import { unpack, max, min } from '../../utils/index.js';\n\nconst rgb2hcg = (...args) => {\n const [r, g, b] = unpack(args, 'rgb');\n const minRgb = min(r, g, b);\n const maxRgb = max(r, g, b);\n const delta = maxRgb - minRgb;\n const c = (delta * 100) / 255;\n const _g = (minRgb / (255 - delta)) * 100;\n let h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === maxRgb) h = (g - b) / delta;\n if (g === maxRgb) h = 2 + (b - r) / delta;\n if (b === maxRgb) h = 4 + (r - g) / delta;\n h *= 60;\n if (h < 0) h += 360;\n }\n return [h, c, _g];\n};\n\nexport default rgb2hcg;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hcg2rgb from './hcg2rgb.js';\nimport rgb2hcg from './rgb2hcg.js';\n\nColor.prototype.hcg = function () {\n return rgb2hcg(this._rgb);\n};\n\nchroma.hcg = (...args) => new Color(...args, 'hcg');\n\ninput.format.hcg = hcg2rgb;\n\ninput.autodetect.push({\n p: 1,\n test: (...args) => {\n args = unpack(args, 'hcg');\n if (type(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n});\n","const RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\nconst RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;\n\nconst hex2rgb = (hex) => {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n const u = parseInt(hex, 16);\n const r = u >> 16;\n const g = (u >> 8) & 0xff;\n const b = u & 0xff;\n return [r, g, b, 1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 5 || hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n // expand short-notation to full eight-digit\n if (hex.length === 4) {\n hex = hex.split('');\n hex =\n hex[0] +\n hex[0] +\n hex[1] +\n hex[1] +\n hex[2] +\n hex[2] +\n hex[3] +\n hex[3];\n }\n const u = parseInt(hex, 16);\n const r = (u >> 24) & 0xff;\n const g = (u >> 16) & 0xff;\n const b = (u >> 8) & 0xff;\n const a = Math.round(((u & 0xff) / 0xff) * 100) / 100;\n return [r, g, b, a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error(`unknown hex color: ${hex}`);\n};\n\nexport default hex2rgb;\n","import { unpack, last } from '../../utils/index.js';\nconst { round } = Math;\n\nconst rgb2hex = (...args) => {\n let [r, g, b, a] = unpack(args, 'rgba');\n let mode = last(args) || 'auto';\n if (a === undefined) a = 1;\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round(r);\n g = round(g);\n b = round(b);\n const u = (r << 16) | (g << 8) | b;\n let str = '000000' + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n let hxa = '0' + round(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba':\n return `#${str}${hxa}`;\n case 'argb':\n return `#${hxa}${str}`;\n default:\n return `#${str}`;\n }\n};\n\nexport default rgb2hex;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport { type } from '../../utils/index.js';\nimport input from '../input.js';\nimport hex2rgb from './hex2rgb.js';\nimport rgb2hex from './rgb2hex.js';\n\nColor.prototype.hex = function (mode) {\n return rgb2hex(this._rgb, mode);\n};\n\nchroma.hex = (...args) => new Color(...args, 'hex');\n\ninput.format.hex = hex2rgb;\ninput.autodetect.push({\n p: 4,\n test: (h, ...rest) => {\n if (\n !rest.length &&\n type(h) === 'string' &&\n [3, 4, 5, 6, 7, 8, 9].indexOf(h.length) >= 0\n ) {\n return 'hex';\n }\n }\n});\n","import { unpack, limit, TWOPI, PITHIRD } from '../../utils/index.js';\nconst { cos } = Math;\n\n/*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\nconst hsi2rgb = (...args) => {\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack(args, 'hsi');\n let [h, s, i] = args;\n let r, g, b;\n\n if (isNaN(h)) h = 0;\n if (isNaN(s)) s = 0;\n // normalize hue\n if (h > 360) h -= 360;\n if (h < 0) h += 360;\n h /= 360;\n if (h < 1 / 3) {\n b = (1 - s) / 3;\n r = (1 + (s * cos(TWOPI * h)) / cos(PITHIRD - TWOPI * h)) / 3;\n g = 1 - (b + r);\n } else if (h < 2 / 3) {\n h -= 1 / 3;\n r = (1 - s) / 3;\n g = (1 + (s * cos(TWOPI * h)) / cos(PITHIRD - TWOPI * h)) / 3;\n b = 1 - (r + g);\n } else {\n h -= 2 / 3;\n g = (1 - s) / 3;\n b = (1 + (s * cos(TWOPI * h)) / cos(PITHIRD - TWOPI * h)) / 3;\n r = 1 - (g + b);\n }\n r = limit(i * r * 3);\n g = limit(i * g * 3);\n b = limit(i * b * 3);\n return [r * 255, g * 255, b * 255, args.length > 3 ? args[3] : 1];\n};\n\nexport default hsi2rgb;\n","import { unpack, TWOPI } from '../../utils/index.js';\nconst { min, sqrt, acos } = Math;\n\nconst rgb2hsi = (...args) => {\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n let [r, g, b] = unpack(args, 'rgb');\n r /= 255;\n g /= 255;\n b /= 255;\n let h;\n const min_ = min(r, g, b);\n const i = (r + g + b) / 3;\n const s = i > 0 ? 1 - min_ / i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = (r - g + (r - b)) / 2;\n h /= sqrt((r - g) * (r - g) + (r - b) * (g - b));\n h = acos(h);\n if (b > g) {\n h = TWOPI - h;\n }\n h /= TWOPI;\n }\n return [h * 360, s, i];\n};\n\nexport default rgb2hsi;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hsi2rgb from './hsi2rgb.js';\nimport rgb2hsi from './rgb2hsi.js';\n\nColor.prototype.hsi = function () {\n return rgb2hsi(this._rgb);\n};\n\nchroma.hsi = (...args) => new Color(...args, 'hsi');\n\ninput.format.hsi = hsi2rgb;\n\ninput.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, 'hsi');\n if (type(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n});\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hsl2rgb from './hsl2rgb.js';\nimport rgb2hsl from './rgb2hsl.js';\n\nColor.prototype.hsl = function () {\n return rgb2hsl(this._rgb);\n};\n\nchroma.hsl = (...args) => new Color(...args, 'hsl');\n\ninput.format.hsl = hsl2rgb;\n\ninput.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, 'hsl');\n if (type(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n});\n","import { unpack } from '../../utils/index.js';\nconst { floor } = Math;\n\nconst hsv2rgb = (...args) => {\n args = unpack(args, 'hsv');\n let [h, s, v] = args;\n let r, g, b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) h = 0;\n if (h > 360) h -= 360;\n if (h < 0) h += 360;\n h /= 60;\n\n const i = floor(h);\n const f = h - i;\n const p = v * (1 - s);\n const q = v * (1 - s * f);\n const t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0:\n [r, g, b] = [v, t, p];\n break;\n case 1:\n [r, g, b] = [q, v, p];\n break;\n case 2:\n [r, g, b] = [p, v, t];\n break;\n case 3:\n [r, g, b] = [p, q, v];\n break;\n case 4:\n [r, g, b] = [t, p, v];\n break;\n case 5:\n [r, g, b] = [v, p, q];\n break;\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default hsv2rgb;\n","import { unpack } from '../../utils/index.js';\nconst { min, max } = Math;\n\n/*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\nconst rgb2hsl = (...args) => {\n args = unpack(args, 'rgb');\n let [r, g, b] = args;\n const min_ = min(r, g, b);\n const max_ = max(r, g, b);\n const delta = max_ - min_;\n let h, s, v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) h = (g - b) / delta;\n if (g === max_) h = 2 + (b - r) / delta;\n if (b === max_) h = 4 + (r - g) / delta;\n h *= 60;\n if (h < 0) h += 360;\n }\n return [h, s, v];\n};\n\nexport default rgb2hsl;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hsv2rgb from './hsv2rgb.js';\nimport rgb2hsv from './rgb2hsv.js';\n\nColor.prototype.hsv = function () {\n return rgb2hsv(this._rgb);\n};\n\nchroma.hsv = (...args) => new Color(...args, 'hsv');\n\ninput.format.hsv = hsv2rgb;\n\ninput.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, 'hsv');\n if (type(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n});\n","export default {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.95047,\n Yn: 1,\n Zn: 1.08883,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452 // t1 * t1 * t1\n};\n","import LAB_CONSTANTS from './lab-constants.js';\nimport { unpack } from '../../utils/index.js';\nconst { pow } = Math;\n\n/*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\nconst lab2rgb = (...args) => {\n args = unpack(args, 'lab');\n const [l, a, b] = args;\n let x, y, z, r, g, b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = LAB_CONSTANTS.Yn * lab_xyz(y);\n x = LAB_CONSTANTS.Xn * lab_xyz(x);\n z = LAB_CONSTANTS.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r, g, b_, args.length > 3 ? args[3] : 1];\n};\n\nconst xyz_rgb = (r) => {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow(r, 1 / 2.4) - 0.055);\n};\n\nconst lab_xyz = (t) => {\n return t > LAB_CONSTANTS.t1\n ? t * t * t\n : LAB_CONSTANTS.t2 * (t - LAB_CONSTANTS.t0);\n};\n\nexport default lab2rgb;\n","import LAB_CONSTANTS from './lab-constants.js';\nimport { unpack } from '../../utils/index.js';\nconst { pow } = Math;\n\nconst rgb2lab = (...args) => {\n const [r, g, b] = unpack(args, 'rgb');\n const [x, y, z] = rgb2xyz(r, g, b);\n const l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n};\n\nconst rgb_xyz = (r) => {\n if ((r /= 255) <= 0.04045) return r / 12.92;\n return pow((r + 0.055) / 1.055, 2.4);\n};\n\nconst xyz_lab = (t) => {\n if (t > LAB_CONSTANTS.t3) return pow(t, 1 / 3);\n return t / LAB_CONSTANTS.t2 + LAB_CONSTANTS.t0;\n};\n\nconst rgb2xyz = (r, g, b) => {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n const x = xyz_lab(\n (0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS.Xn\n );\n const y = xyz_lab(\n (0.2126729 * r + 0.7151522 * g + 0.072175 * b) / LAB_CONSTANTS.Yn\n );\n const z = xyz_lab(\n (0.0193339 * r + 0.119192 * g + 0.9503041 * b) / LAB_CONSTANTS.Zn\n );\n return [x, y, z];\n};\n\nexport default rgb2lab;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport lab2rgb from './lab2rgb.js';\nimport rgb2lab from './rgb2lab.js';\n\nColor.prototype.lab = function () {\n return rgb2lab(this._rgb);\n};\n\nchroma.lab = (...args) => new Color(...args, 'lab');\n\ninput.format.lab = lab2rgb;\n\ninput.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, 'lab');\n if (type(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n});\n","import { unpack, DEG2RAD } from '../../utils/index.js';\nconst { sin, cos } = Math;\n\nconst lch2lab = (...args) => {\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n let [l, c, h] = unpack(args, 'lch');\n if (isNaN(h)) h = 0;\n h = h * DEG2RAD;\n return [l, cos(h) * c, sin(h) * c];\n};\n\nexport default lch2lab;\n","import { unpack } from '../../utils/index.js';\nimport lch2lab from './lch2lab.js';\nimport lab2rgb from '../lab/lab2rgb.js';\n\nconst lch2rgb = (...args) => {\n args = unpack(args, 'lch');\n const [l, c, h] = args;\n const [L, a, b_] = lch2lab(l, c, h);\n const [r, g, b] = lab2rgb(L, a, b_);\n return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default lch2rgb;\n","import { unpack } from '../../utils/index.js';\nimport lch2rgb from './lch2rgb.js';\n\nconst hcl2rgb = (...args) => {\n const hcl = unpack(args, 'hcl').reverse();\n return lch2rgb(...hcl);\n};\n\nexport default hcl2rgb;\n","import { unpack, RAD2DEG } from '../../utils/index.js';\nconst { sqrt, atan2, round } = Math;\n\nconst lab2lch = (...args) => {\n const [l, a, b] = unpack(args, 'lab');\n const c = sqrt(a * a + b * b);\n let h = (atan2(b, a) * RAD2DEG + 360) % 360;\n if (round(c * 10000) === 0) h = Number.NaN;\n return [l, c, h];\n};\n\nexport default lab2lch;\n","import { unpack } from '../../utils/index.js';\nimport rgb2lab from '../lab/rgb2lab.js';\nimport lab2lch from './lab2lch.js';\n\nconst rgb2lch = (...args) => {\n const [r, g, b] = unpack(args, 'rgb');\n const [l, a, b_] = rgb2lab(r, g, b);\n return lab2lch(l, a, b_);\n};\n\nexport default rgb2lch;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport lch2rgb from './lch2rgb.js';\nimport hcl2rgb from './hcl2rgb.js';\nimport rgb2lch from './rgb2lch.js';\n\nColor.prototype.lch = function () {\n return rgb2lch(this._rgb);\n};\nColor.prototype.hcl = function () {\n return rgb2lch(this._rgb).reverse();\n};\n\nchroma.lch = (...args) => new Color(...args, 'lch');\nchroma.hcl = (...args) => new Color(...args, 'hcl');\n\ninput.format.lch = lch2rgb;\ninput.format.hcl = hcl2rgb;\n['lch', 'hcl'].forEach((m) =>\n input.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, m);\n if (type(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n })\n);\n","/**\n\tX11 color names\n\n\thttp://www.w3.org/TR/css3-color/#svg-color\n*/\n\nconst w3cx11 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n};\n\nexport default w3cx11;\n","import Color from '../../Color.js';\nimport input from '../input.js';\nimport { type } from '../../utils/index.js';\n\nimport w3cx11 from '../../colors/w3cx11.js';\nimport hex2rgb from '../hex/hex2rgb.js';\nimport rgb2hex from '../hex/rgb2hex.js';\n\nColor.prototype.name = function () {\n const hex = rgb2hex(this._rgb, 'rgb');\n for (let n of Object.keys(w3cx11)) {\n if (w3cx11[n] === hex) return n.toLowerCase();\n }\n return hex;\n};\n\ninput.format.named = (name) => {\n name = name.toLowerCase();\n if (w3cx11[name]) return hex2rgb(w3cx11[name]);\n throw new Error('unknown color name: ' + name);\n};\n\ninput.autodetect.push({\n p: 5,\n test: (h, ...rest) => {\n if (!rest.length && type(h) === 'string' && w3cx11[h.toLowerCase()]) {\n return 'named';\n }\n }\n});\n","import { type } from '../../utils/index.js';\n\nconst num2rgb = (num) => {\n if (type(num) == 'number' && num >= 0 && num <= 0xffffff) {\n const r = num >> 16;\n const g = (num >> 8) & 0xff;\n const b = num & 0xff;\n return [r, g, b, 1];\n }\n throw new Error('unknown num color: ' + num);\n};\n\nexport default num2rgb;\n","import { unpack } from '../../utils/index.js';\n\nconst rgb2num = (...args) => {\n const [r, g, b] = unpack(args, 'rgb');\n return (r << 16) + (g << 8) + b;\n};\n\nexport default rgb2num;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { type } from '../../utils/index.js';\nimport num2rgb from './num2rgb.js';\nimport rgb2num from './rgb2num.js';\n\nColor.prototype.num = function () {\n return rgb2num(this._rgb);\n};\n\nchroma.num = (...args) => new Color(...args, 'num');\n\ninput.format.num = num2rgb;\n\ninput.autodetect.push({\n p: 5,\n test: (...args) => {\n if (\n args.length === 1 &&\n type(args[0]) === 'number' &&\n args[0] >= 0 &&\n args[0] <= 0xffffff\n ) {\n return 'num';\n }\n }\n});\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { unpack, type } from '../../utils/index.js';\nconst { round } = Math;\n\nColor.prototype.rgb = function (rnd = true) {\n if (rnd === false) return this._rgb.slice(0, 3);\n return this._rgb.slice(0, 3).map(round);\n};\n\nColor.prototype.rgba = function (rnd = true) {\n return this._rgb.slice(0, 4).map((v, i) => {\n return i < 3 ? (rnd === false ? v : round(v)) : v;\n });\n};\n\nchroma.rgb = (...args) => new Color(...args, 'rgb');\n\ninput.format.rgb = (...args) => {\n const rgba = unpack(args, 'rgba');\n if (rgba[3] === undefined) rgba[3] = 1;\n return rgba;\n};\n\ninput.autodetect.push({\n p: 3,\n test: (...args) => {\n args = unpack(args, 'rgba');\n if (\n type(args) === 'array' &&\n (args.length === 3 ||\n (args.length === 4 &&\n type(args[3]) == 'number' &&\n args[3] >= 0 &&\n args[3] <= 1))\n ) {\n return 'rgb';\n }\n }\n});\n","/*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\nconst { log } = Math;\n\nconst temperature2rgb = (kelvin) => {\n const temp = kelvin / 100;\n let r, g, b;\n if (temp < 66) {\n r = 255;\n g =\n temp < 6\n ? 0\n : -155.25485562709179 -\n 0.44596950469579133 * (g = temp - 2) +\n 104.49216199393888 * log(g);\n b =\n temp < 20\n ? 0\n : -254.76935184120902 +\n 0.8274096064007395 * (b = temp - 10) +\n 115.67994401066147 * log(b);\n } else {\n r =\n 351.97690566805693 +\n 0.114206453784165 * (r = temp - 55) -\n 40.25366309332127 * log(r);\n g =\n 325.4494125711974 +\n 0.07943456536662342 * (g = temp - 50) -\n 28.0852963507957 * log(g);\n b = 255;\n }\n return [r, g, b, 1];\n};\n\nexport default temperature2rgb;\n","/*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\nimport temperature2rgb from './temperature2rgb.js';\nimport { unpack } from '../../utils/index.js';\nconst { round } = Math;\n\nconst rgb2temperature = (...args) => {\n const rgb = unpack(args, 'rgb');\n const r = rgb[0],\n b = rgb[2];\n let minTemp = 1000;\n let maxTemp = 40000;\n const eps = 0.4;\n let temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n const rgb = temperature2rgb(temp);\n if (rgb[2] / rgb[0] >= b / r) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round(temp);\n};\n\nexport default rgb2temperature;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport temperature2rgb from './temperature2rgb.js';\nimport rgb2temperature from './rgb2temperature.js';\n\nColor.prototype.temp =\n Color.prototype.kelvin =\n Color.prototype.temperature =\n function () {\n return rgb2temperature(this._rgb);\n };\n\nchroma.temp =\n chroma.kelvin =\n chroma.temperature =\n (...args) => new Color(...args, 'temp');\n\ninput.format.temp =\n input.format.kelvin =\n input.format.temperature =\n temperature2rgb;\n","import { unpack } from '../../utils/index.js';\nconst { pow, sign } = Math;\n\n/*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\nconst oklab2rgb = (...args) => {\n args = unpack(args, 'lab');\n const [L, a, b] = args;\n\n const l = pow(L + 0.3963377774 * a + 0.2158037573 * b, 3);\n const m = pow(L - 0.1055613458 * a - 0.0638541728 * b, 3);\n const s = pow(L - 0.0894841775 * a - 1.291485548 * b, 3);\n\n return [\n 255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),\n 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),\n 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s),\n args.length > 3 ? args[3] : 1\n ];\n};\n\nexport default oklab2rgb;\n\nfunction lrgb2rgb(c) {\n const abs = Math.abs(c);\n if (abs > 0.0031308) {\n return (sign(c) || 1) * (1.055 * pow(abs, 1 / 2.4) - 0.055);\n }\n return c * 12.92;\n}\n","import { unpack } from '../../utils/index.js';\nconst { cbrt, pow, sign } = Math;\n\nconst rgb2oklab = (...args) => {\n // OKLab color space implementation taken from\n // https://bottosson.github.io/posts/oklab/\n const [r, g, b] = unpack(args, 'rgb');\n const [lr, lg, lb] = [\n rgb2lrgb(r / 255),\n rgb2lrgb(g / 255),\n rgb2lrgb(b / 255)\n ];\n const l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);\n const m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);\n const s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);\n\n return [\n 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s\n ];\n};\n\nexport default rgb2oklab;\n\nfunction rgb2lrgb(c) {\n const abs = Math.abs(c);\n if (abs < 0.04045) {\n return c / 12.92;\n }\n return (sign(c) || 1) * pow((abs + 0.055) / 1.055, 2.4);\n}\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport oklab2rgb from './oklab2rgb.js';\nimport rgb2oklab from './rgb2oklab.js';\n\nColor.prototype.oklab = function () {\n return rgb2oklab(this._rgb);\n};\n\nchroma.oklab = (...args) => new Color(...args, 'oklab');\n\ninput.format.oklab = oklab2rgb;\n\ninput.autodetect.push({\n p: 3,\n test: (...args) => {\n args = unpack(args, 'oklab');\n if (type(args) === 'array' && args.length === 3) {\n return 'oklab';\n }\n }\n});\n","import { unpack } from '../../utils/index.js';\nimport lch2lab from '../lch/lch2lab.js';\nimport oklab2rgb from '../oklab/oklab2rgb.js';\n\nconst oklch2rgb = (...args) => {\n args = unpack(args, 'lch');\n const [l, c, h] = args;\n const [L, a, b_] = lch2lab(l, c, h);\n const [r, g, b] = oklab2rgb(L, a, b_);\n return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default oklch2rgb;\n","import { unpack } from '../../utils/index.js';\nimport rgb2oklab from '../oklab/rgb2oklab.js';\nimport lab2lch from '../lch/lab2lch.js';\n\nconst rgb2oklch = (...args) => {\n const [r, g, b] = unpack(args, 'rgb');\n const [l, a, b_] = rgb2oklab(r, g, b);\n return lab2lch(l, a, b_);\n};\n\nexport default rgb2oklch;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport oklch2rgb from './oklch2rgb.js';\nimport rgb2oklch from './rgb2oklch.js';\n\nColor.prototype.oklch = function () {\n return rgb2oklch(this._rgb);\n};\n\nchroma.oklch = (...args) => new Color(...args, 'oklch');\n\ninput.format.oklch = oklch2rgb;\n\ninput.autodetect.push({\n p: 3,\n test: (...args) => {\n args = unpack(args, 'oklch');\n if (type(args) === 'array' && args.length === 3) {\n return 'oklch';\n }\n }\n});\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\n\nColor.prototype.alpha = function (a, mutate = false) {\n if (a !== undefined && type(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n};\n","import Color from '../Color.js';\n\nColor.prototype.clipped = function () {\n return this._rgb._clipped || false;\n};\n","import '../io/lab/index.js';\nimport Color from '../Color.js';\nimport LAB_CONSTANTS from '../io/lab/lab-constants.js';\n\nColor.prototype.darken = function (amount = 1) {\n const me = this;\n const lab = me.lab();\n lab[0] -= LAB_CONSTANTS.Kn * amount;\n return new Color(lab, 'lab').alpha(me.alpha(), true);\n};\n\nColor.prototype.brighten = function (amount = 1) {\n return this.darken(-amount);\n};\n\nColor.prototype.darker = Color.prototype.darken;\nColor.prototype.brighter = Color.prototype.brighten;\n","import Color from '../Color.js';\n\nColor.prototype.get = function (mc) {\n const [mode, channel] = mc.split('.');\n const src = this[mode]();\n if (channel) {\n const i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) return src[i];\n throw new Error(`unknown channel ${channel} in mode ${mode}`);\n } else {\n return src;\n }\n};\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\nconst { pow } = Math;\n\nconst EPS = 1e-7;\nconst MAX_ITER = 20;\n\nColor.prototype.luminance = function (lum, mode = 'rgb') {\n if (lum !== undefined && type(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color([0, 0, 0, this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color([255, 255, 255, this._rgb[3]], 'rgb');\n }\n // compute new color using...\n let cur_lum = this.luminance();\n let max_iter = MAX_ITER;\n\n const test = (low, high) => {\n const mid = low.interpolate(high, 0.5, mode);\n const lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n const rgb = (\n cur_lum > lum\n ? test(new Color([0, 0, 0]), this)\n : test(this, new Color([255, 255, 255]))\n ).rgb();\n return new Color([...rgb, this._rgb[3]]);\n }\n return rgb2luminance(...this._rgb.slice(0, 3));\n};\n\nconst rgb2luminance = (r, g, b) => {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nconst luminance_x = (x) => {\n x /= 255;\n return x <= 0.03928 ? x / 12.92 : pow((x + 0.055) / 1.055, 2.4);\n};\n","export default {};\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\nimport interpolator from '../interpolator/index.js';\n\nexport default (col1, col2, f = 0.5, ...rest) => {\n let mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error(`interpolation mode ${mode} is not defined`);\n }\n if (type(col1) !== 'object') col1 = new Color(col1);\n if (type(col2) !== 'object') col2 = new Color(col2);\n return interpolator[mode](col1, col2, f).alpha(\n col1.alpha() + f * (col2.alpha() - col1.alpha())\n );\n};\n","import Color from '../Color.js';\nimport mix from '../generator/mix.js';\n\nColor.prototype.mix = Color.prototype.interpolate = function (\n col2,\n f = 0.5,\n ...rest\n) {\n return mix(this, col2, f, ...rest);\n};\n","import Color from '../Color.js';\n\nColor.prototype.premultiply = function (mutate = false) {\n const rgb = this._rgb;\n const a = rgb[3];\n if (mutate) {\n this._rgb = [rgb[0] * a, rgb[1] * a, rgb[2] * a, a];\n return this;\n } else {\n return new Color([rgb[0] * a, rgb[1] * a, rgb[2] * a, a], 'rgb');\n }\n};\n","import '../io/lch/index.js';\nimport Color from '../Color.js';\nimport LAB_CONSTANTS from '../io/lab/lab-constants.js';\n\nColor.prototype.saturate = function (amount = 1) {\n const me = this;\n const lch = me.lch();\n lch[1] += LAB_CONSTANTS.Kn * amount;\n if (lch[1] < 0) lch[1] = 0;\n return new Color(lch, 'lch').alpha(me.alpha(), true);\n};\n\nColor.prototype.desaturate = function (amount = 1) {\n return this.saturate(-amount);\n};\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\n\nColor.prototype.set = function (mc, value, mutate = false) {\n const [mode, channel] = mc.split('.');\n const src = this[mode]();\n if (channel) {\n const i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) {\n if (type(value) == 'string') {\n switch (value.charAt(0)) {\n case '+':\n src[i] += +value;\n break;\n case '-':\n src[i] += +value;\n break;\n case '*':\n src[i] *= +value.substr(1);\n break;\n case '/':\n src[i] /= +value.substr(1);\n break;\n default:\n src[i] = +value;\n }\n } else if (type(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(`unsupported value for Color.set`);\n }\n const out = new Color(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error(`unknown channel ${channel} in mode ${mode}`);\n } else {\n return src;\n }\n};\n","import '../io/lab/index.js';\nimport Color from '../Color.js';\nimport mix from '../generator/mix.js';\n\nColor.prototype.tint = function (f = 0.5, ...rest) {\n return mix(this, 'white', f, ...rest);\n};\n\nColor.prototype.shade = function (f = 0.5, ...rest) {\n return mix(this, 'black', f, ...rest);\n};\n","import Color from '../Color.js';\nimport index from './index.js';\n\nconst rgb = (col1, col2, f) => {\n const xyz0 = col1._rgb;\n const xyz1 = col2._rgb;\n return new Color(\n xyz0[0] + f * (xyz1[0] - xyz0[0]),\n xyz0[1] + f * (xyz1[1] - xyz0[1]),\n xyz0[2] + f * (xyz1[2] - xyz0[2]),\n 'rgb'\n );\n};\n\n// register interpolator\nindex.rgb = rgb;\n\nexport default rgb;\n","import Color from '../Color.js';\nconst { sqrt, pow } = Math;\nimport index from './index.js';\n\nconst lrgb = (col1, col2, f) => {\n const [x1, y1, z1] = col1._rgb;\n const [x2, y2, z2] = col2._rgb;\n return new Color(\n sqrt(pow(x1, 2) * (1 - f) + pow(x2, 2) * f),\n sqrt(pow(y1, 2) * (1 - f) + pow(y2, 2) * f),\n sqrt(pow(z1, 2) * (1 - f) + pow(z2, 2) * f),\n 'rgb'\n );\n};\n\n// register interpolator\nindex.lrgb = lrgb;\n\nexport default lrgb;\n","import '../io/lab/index.js';\nimport index from './index.js';\nimport Color from '../Color.js';\n\nconst lab = (col1, col2, f) => {\n const xyz0 = col1.lab();\n const xyz1 = col2.lab();\n return new Color(\n xyz0[0] + f * (xyz1[0] - xyz0[0]),\n xyz0[1] + f * (xyz1[1] - xyz0[1]),\n xyz0[2] + f * (xyz1[2] - xyz0[2]),\n 'lab'\n );\n};\n\n// register interpolator\nindex.lab = lab;\n\nexport default lab;\n","import Color from '../Color.js';\n\nexport default (col1, col2, f, m) => {\n let xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n } else if (m === 'oklch') {\n xyz0 = col1.oklch().reverse();\n xyz1 = col2.oklch().reverse();\n }\n\n let hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h' || m === 'oklch') {\n [hue0, sat0, lbv0] = xyz0;\n [hue1, sat1, lbv1] = xyz1;\n }\n\n let sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1 - (hue0 + 360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1 + 360 - hue0;\n } else {\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') sat = sat0;\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') sat = sat1;\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) sat = sat0 + f * (sat1 - sat0);\n lbv = lbv0 + f * (lbv1 - lbv0);\n return m === 'oklch'\n ? new Color([lbv, sat, hue], m)\n : new Color([hue, sat, lbv], m);\n};\n","import '../io/lch/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst lch = (col1, col2, f) => {\n return interpolate_hsx(col1, col2, f, 'lch');\n};\n\n// register interpolator\nindex.lch = lch;\nindex.hcl = lch;\n\nexport default lch;\n","import '../io/num/index.js';\nimport index from './index.js';\n\nimport Color from '../Color.js';\n\nconst num = (col1, col2, f) => {\n const c1 = col1.num();\n const c2 = col2.num();\n return new Color(c1 + f * (c2 - c1), 'num');\n};\n\n// register interpolator\nindex.num = num;\n\nexport default num;\n","import '../io/hcg/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hcg = (col1, col2, f) => {\n return interpolate_hsx(col1, col2, f, 'hcg');\n};\n\n// register interpolator\nindex.hcg = hcg;\n\nexport default hcg;\n","import '../io/hsi/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hsi = (col1, col2, f) => {\n return interpolate_hsx(col1, col2, f, 'hsi');\n};\n\n// register interpolator\nindex.hsi = hsi;\n\nexport default hsi;\n","import '../io/hsl/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hsl = (col1, col2, f) => {\n return interpolate_hsx(col1, col2, f, 'hsl');\n};\n\n// register interpolator\nindex.hsl = hsl;\n\nexport default hsl;\n","import '../io/hsv/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hsv = (col1, col2, f) => {\n return interpolate_hsx(col1, col2, f, 'hsv');\n};\n\n// register interpolator\nindex.hsv = hsv;\n\nexport default hsv;\n","import '../io/oklab/index.js';\nimport index from './index.js';\nimport Color from '../Color.js';\n\nconst oklab = (col1, col2, f) => {\n const xyz0 = col1.oklab();\n const xyz1 = col2.oklab();\n return new Color(\n xyz0[0] + f * (xyz1[0] - xyz0[0]),\n xyz0[1] + f * (xyz1[1] - xyz0[1]),\n xyz0[2] + f * (xyz1[2] - xyz0[2]),\n 'oklab'\n );\n};\n\n// register interpolator\nindex.oklab = oklab;\n\nexport default oklab;\n","import '../io/lch/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst oklch = (col1, col2, f) => {\n return interpolate_hsx(col1, col2, f, 'oklch');\n};\n\n// register interpolator\nindex.oklch = oklch;\n\nexport default oklch;\n","import Color from '../Color.js';\nimport { clip_rgb } from '../utils/index.js';\n\nconst { pow, sqrt, PI, cos, sin, atan2 } = Math;\n\nexport default (colors, mode = 'lrgb', weights = null) => {\n const l = colors.length;\n if (!weights) weights = Array.from(new Array(l)).map(() => 1);\n // normalize weights\n const k =\n l /\n weights.reduce(function (a, b) {\n return a + b;\n });\n weights.forEach((w, i) => {\n weights[i] *= k;\n });\n // convert colors to Color objects\n colors = colors.map((c) => new Color(c));\n if (mode === 'lrgb') {\n return _average_lrgb(colors, weights);\n }\n const first = colors.shift();\n const xyz = first.get(mode);\n const cnt = [];\n let dx = 0;\n let dy = 0;\n // initial color\n for (let i = 0; i < xyz.length; i++) {\n xyz[i] = (xyz[i] || 0) * weights[0];\n cnt.push(isNaN(xyz[i]) ? 0 : weights[0]);\n if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) {\n const A = (xyz[i] / 180) * PI;\n dx += cos(A) * weights[0];\n dy += sin(A) * weights[0];\n }\n }\n\n let alpha = first.alpha() * weights[0];\n colors.forEach((c, ci) => {\n const xyz2 = c.get(mode);\n alpha += c.alpha() * weights[ci + 1];\n for (let i = 0; i < xyz.length; i++) {\n if (!isNaN(xyz2[i])) {\n cnt[i] += weights[ci + 1];\n if (mode.charAt(i) === 'h') {\n const A = (xyz2[i] / 180) * PI;\n dx += cos(A) * weights[ci + 1];\n dy += sin(A) * weights[ci + 1];\n } else {\n xyz[i] += xyz2[i] * weights[ci + 1];\n }\n }\n }\n });\n\n for (let i = 0; i < xyz.length; i++) {\n if (mode.charAt(i) === 'h') {\n let A = (atan2(dy / cnt[i], dx / cnt[i]) / PI) * 180;\n while (A < 0) A += 360;\n while (A >= 360) A -= 360;\n xyz[i] = A;\n } else {\n xyz[i] = xyz[i] / cnt[i];\n }\n }\n alpha /= l;\n return new Color(xyz, mode).alpha(alpha > 0.99999 ? 1 : alpha, true);\n};\n\nconst _average_lrgb = (colors, weights) => {\n const l = colors.length;\n const xyz = [0, 0, 0, 0];\n for (let i = 0; i < colors.length; i++) {\n const col = colors[i];\n const f = weights[i] / l;\n const rgb = col._rgb;\n xyz[0] += pow(rgb[0], 2) * f;\n xyz[1] += pow(rgb[1], 2) * f;\n xyz[2] += pow(rgb[2], 2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt(xyz[0]);\n xyz[1] = sqrt(xyz[1]);\n xyz[2] = sqrt(xyz[2]);\n if (xyz[3] > 0.9999999) xyz[3] = 1;\n return new Color(clip_rgb(xyz));\n};\n","// minimal multi-purpose interface\n\n// @requires utils color analyze\nimport chroma from '../chroma.js';\nimport { limit, type } from '../utils/index.js';\n\nconst { pow } = Math;\n\nexport default function (colors) {\n // constructor\n let _mode = 'rgb';\n let _nacol = chroma('#ccc');\n let _spread = 0;\n // const _fixed = false;\n let _domain = [0, 1];\n let _pos = [];\n let _padding = [0, 0];\n let _classes = false;\n let _colors = [];\n let _out = false;\n let _min = 0;\n let _max = 1;\n let _correctLightness = false;\n let _colorCache = {};\n let _useCache = true;\n let _gamma = 1;\n\n // private methods\n\n const setColors = function (colors) {\n colors = colors || ['#fff', '#000'];\n if (\n colors &&\n type(colors) === 'string' &&\n chroma.brewer &&\n chroma.brewer[colors.toLowerCase()]\n ) {\n colors = chroma.brewer[colors.toLowerCase()];\n }\n if (type(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (let c = 0; c < colors.length; c++) {\n colors[c] = chroma(colors[c]);\n }\n // auto-fill color position\n _pos.length = 0;\n for (let c = 0; c < colors.length; c++) {\n _pos.push(c / (colors.length - 1));\n }\n }\n resetCache();\n return (_colors = colors);\n };\n\n const getClass = function (value) {\n if (_classes != null) {\n const n = _classes.length - 1;\n let i = 0;\n while (i < n && value >= _classes[i]) {\n i++;\n }\n return i - 1;\n }\n return 0;\n };\n\n let tMapLightness = (t) => t;\n let tMapDomain = (t) => t;\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n const getColor = function (val, bypassMap) {\n let col, t;\n if (bypassMap == null) {\n bypassMap = false;\n }\n if (isNaN(val) || val === null) {\n return _nacol;\n }\n if (!bypassMap) {\n if (_classes && _classes.length > 2) {\n // find the class\n const c = getClass(val);\n t = c / (_classes.length - 2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n // domain map\n t = tMapDomain(t);\n\n if (!bypassMap) {\n t = tMapLightness(t); // lightness correction\n }\n\n if (_gamma !== 1) {\n t = pow(t, _gamma);\n }\n\n t = _padding[0] + t * (1 - _padding[0] - _padding[1]);\n\n t = limit(t, 0, 1);\n\n const k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (let i = 0; i < _pos.length; i++) {\n const p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if (t >= p && i === _pos.length - 1) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i + 1]) {\n t = (t - p) / (_pos[i + 1] - p);\n col = chroma.interpolate(\n _colors[i],\n _colors[i + 1],\n t,\n _mode\n );\n break;\n }\n }\n } else if (type(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) {\n _colorCache[k] = col;\n }\n }\n return col;\n };\n\n var resetCache = () => (_colorCache = {});\n\n setColors(colors);\n\n // public interface\n\n const f = function (v) {\n const c = chroma(getColor(v));\n if (_out && c[_out]) {\n return c[_out]();\n } else {\n return c;\n }\n };\n\n f.classes = function (classes) {\n if (classes != null) {\n if (type(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length - 1]];\n } else {\n const d = chroma.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n f.domain = function (domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length - 1];\n _pos = [];\n const k = _colors.length;\n if (domain.length === k && _min !== _max) {\n // update positions\n for (let d of Array.from(domain)) {\n _pos.push((d - _min) / (_max - _min));\n }\n } else {\n for (let c = 0; c < k; c++) {\n _pos.push(c / (k - 1));\n }\n if (domain.length > 2) {\n // set domain map\n const tOut = domain.map((d, i) => i / (domain.length - 1));\n const tBreaks = domain.map((d) => (d - _min) / (_max - _min));\n if (!tBreaks.every((val, i) => tOut[i] === val)) {\n tMapDomain = (t) => {\n if (t <= 0 || t >= 1) return t;\n let i = 0;\n while (t >= tBreaks[i + 1]) i++;\n const f =\n (t - tBreaks[i]) / (tBreaks[i + 1] - tBreaks[i]);\n const out = tOut[i] + f * (tOut[i + 1] - tOut[i]);\n return out;\n };\n }\n }\n }\n _domain = [_min, _max];\n return f;\n };\n\n f.mode = function (_m) {\n if (!arguments.length) {\n return _mode;\n }\n _mode = _m;\n resetCache();\n return f;\n };\n\n f.range = function (colors, _pos) {\n setColors(colors, _pos);\n return f;\n };\n\n f.out = function (_o) {\n _out = _o;\n return f;\n };\n\n f.spread = function (val) {\n if (!arguments.length) {\n return _spread;\n }\n _spread = val;\n return f;\n };\n\n f.correctLightness = function (v) {\n if (v == null) {\n v = true;\n }\n _correctLightness = v;\n resetCache();\n if (_correctLightness) {\n tMapLightness = function (t) {\n const L0 = getColor(0, true).lab()[0];\n const L1 = getColor(1, true).lab()[0];\n const pol = L0 > L1;\n let L_actual = getColor(t, true).lab()[0];\n const L_ideal = L0 + (L1 - L0) * t;\n let L_diff = L_actual - L_ideal;\n let t0 = 0;\n let t1 = 1;\n let max_iter = 20;\n while (Math.abs(L_diff) > 1e-2 && max_iter-- > 0) {\n (function () {\n if (pol) {\n L_diff *= -1;\n }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return (L_diff = L_actual - L_ideal);\n })();\n }\n return t;\n };\n } else {\n tMapLightness = (t) => t;\n }\n return f;\n };\n\n f.padding = function (p) {\n if (p != null) {\n if (type(p) === 'number') {\n p = [p, p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function (numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) {\n out = 'hex';\n }\n let result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n } else if (numColors === 1) {\n result = [f(0.5)];\n } else if (numColors > 1) {\n const dm = _domain[0];\n const dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map((i) =>\n f(dm + (i / (numColors - 1)) * dd)\n );\n } else {\n // returns all colors based on the defined classes\n colors = [];\n let samples = [];\n if (_classes && _classes.length > 2) {\n for (\n let i = 1, end = _classes.length, asc = 1 <= end;\n asc ? i < end : i > end;\n asc ? i++ : i--\n ) {\n samples.push((_classes[i - 1] + _classes[i]) * 0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map((v) => f(v));\n }\n\n if (chroma[out]) {\n result = result.map((c) => c[out]());\n }\n return result;\n };\n\n f.cache = function (c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function (g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function (d) {\n if (d != null) {\n _nacol = chroma(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n}\n\nfunction __range__(left, right, inclusive) {\n let range = [];\n let ascending = left < right;\n let end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (let i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n}\n","//\n// interpolates between a set of colors uzing a bezier spline\n//\n\n// @requires utils lab\nimport Color from '../Color.js';\nimport '../io/lab/index.js';\nimport scale from './scale.js';\n\n// nth row of the pascal triangle\nconst binom_row = function (n) {\n let row = [1, 1];\n for (let i = 1; i < n; i++) {\n let newrow = [1];\n for (let j = 1; j <= row.length; j++) {\n newrow[j] = (row[j] || 0) + row[j - 1];\n }\n row = newrow;\n }\n return row;\n};\n\nconst bezier = function (colors) {\n let I, lab0, lab1, lab2;\n colors = colors.map((c) => new Color(c));\n if (colors.length === 2) {\n // linear interpolation\n [lab0, lab1] = colors.map((c) => c.lab());\n I = function (t) {\n const lab = [0, 1, 2].map((i) => lab0[i] + t * (lab1[i] - lab0[i]));\n return new Color(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n [lab0, lab1, lab2] = colors.map((c) => c.lab());\n I = function (t) {\n const lab = [0, 1, 2].map(\n (i) =>\n (1 - t) * (1 - t) * lab0[i] +\n 2 * (1 - t) * t * lab1[i] +\n t * t * lab2[i]\n );\n return new Color(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n let lab3;\n [lab0, lab1, lab2, lab3] = colors.map((c) => c.lab());\n I = function (t) {\n const lab = [0, 1, 2].map(\n (i) =>\n (1 - t) * (1 - t) * (1 - t) * lab0[i] +\n 3 * (1 - t) * (1 - t) * t * lab1[i] +\n 3 * (1 - t) * t * t * lab2[i] +\n t * t * t * lab3[i]\n );\n return new Color(lab, 'lab');\n };\n } else if (colors.length >= 5) {\n // general case (degree n bezier)\n let labs, row, n;\n labs = colors.map((c) => c.lab());\n n = colors.length - 1;\n row = binom_row(n);\n I = function (t) {\n const u = 1 - t;\n const lab = [0, 1, 2].map((i) =>\n labs.reduce(\n (sum, el, j) =>\n sum + row[j] * u ** (n - j) * t ** j * el[i],\n 0\n )\n );\n return new Color(lab, 'lab');\n };\n } else {\n throw new RangeError('No point in running bezier with only one color.');\n }\n return I;\n};\n\nexport default (colors) => {\n const f = bezier(colors);\n f.scale = () => scale(f);\n return f;\n};\n","/*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from https://web.archive.org/web/20180110014946/http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\nimport '../io/rgb/index.js';\nimport chroma from '../chroma.js';\n\nconst blend = (bottom, top, mode) => {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n};\n\nconst blend_f = (f) => (bottom, top) => {\n const c0 = chroma(top).rgb();\n const c1 = chroma(bottom).rgb();\n return chroma.rgb(f(c0, c1));\n};\n\nconst each = (f) => (c0, c1) => {\n const out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n};\n\nconst normal = (a) => a;\nconst multiply = (a, b) => (a * b) / 255;\nconst darken = (a, b) => (a > b ? b : a);\nconst lighten = (a, b) => (a > b ? a : b);\nconst screen = (a, b) => 255 * (1 - (1 - a / 255) * (1 - b / 255));\nconst overlay = (a, b) =>\n b < 128 ? (2 * a * b) / 255 : 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255));\nconst burn = (a, b) => 255 * (1 - (1 - b / 255) / (a / 255));\nconst dodge = (a, b) => {\n if (a === 255) return 255;\n a = (255 * (b / 255)) / (1 - a / 255);\n return a > 255 ? 255 : a;\n};\n\n// # add = (a,b) ->\n// # if (a + b > 255) then 255 else a + b\n\nblend.normal = blend_f(each(normal));\nblend.multiply = blend_f(each(multiply));\nblend.screen = blend_f(each(screen));\nblend.overlay = blend_f(each(overlay));\nblend.darken = blend_f(each(darken));\nblend.lighten = blend_f(each(lighten));\nblend.dodge = blend_f(each(dodge));\nblend.burn = blend_f(each(burn));\n// blend.add = blend_f(each(add));\n\nexport default blend;\n","// cubehelix interpolation\n// based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n// http://astron-soc.in/bulletin/11June/289392011.pdf\nimport { type, clip_rgb, TWOPI } from '../utils/index.js';\nimport chroma from '../chroma.js';\nconst { pow, sin, cos } = Math;\n\nexport default function (\n start = 300,\n rotations = -1.5,\n hue = 1,\n gamma = 1,\n lightness = [0, 1]\n) {\n let dh = 0,\n dl;\n if (type(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n const f = function (fract) {\n const a = TWOPI * ((start + 120) / 360 + rotations * fract);\n const l = pow(lightness[0] + dl * fract, gamma);\n const h = dh !== 0 ? hue[0] + fract * dh : hue;\n const amp = (h * l * (1 - l)) / 2;\n const cos_a = cos(a);\n const sin_a = sin(a);\n const r = l + amp * (-0.14861 * cos_a + 1.78277 * sin_a);\n const g = l + amp * (-0.29227 * cos_a - 0.90649 * sin_a);\n const b = l + amp * (+1.97294 * cos_a);\n return chroma(clip_rgb([r * 255, g * 255, b * 255, 1]));\n };\n f.start = function (s) {\n if (s == null) {\n return start;\n }\n start = s;\n return f;\n };\n f.rotations = function (r) {\n if (r == null) {\n return rotations;\n }\n rotations = r;\n return f;\n };\n f.gamma = function (g) {\n if (g == null) {\n return gamma;\n }\n gamma = g;\n return f;\n };\n f.hue = function (h) {\n if (h == null) {\n return hue;\n }\n hue = h;\n if (type(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) {\n hue = hue[1];\n }\n } else {\n dh = 0;\n }\n return f;\n };\n f.lightness = function (h) {\n if (h == null) {\n return lightness;\n }\n if (type(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h, h];\n dl = 0;\n }\n return f;\n };\n f.scale = () => chroma.scale(f);\n f.hue(hue);\n return f;\n}\n","import Color from '../Color.js';\nconst digits = '0123456789abcdef';\n\nconst { floor, random } = Math;\n\nexport default () => {\n let code = '#';\n for (let i = 0; i < 6; i++) {\n code += digits.charAt(floor(random() * 16));\n }\n return new Color(code, 'hex');\n};\n","import type from './type.js';\n\nconst { log, pow, floor, abs } = Math;\n\nexport function analyze(data, key = null) {\n const r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE * -1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach((val) => {\n if (key && type(val) === 'object') val = val[key];\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) r.min = val;\n if (val > r.max) r.max = val;\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = (mode, num) => limits(r, mode, num);\n\n return r;\n}\n\nexport function limits(data, mode = 'equal', num = 7) {\n if (type(data) == 'array') {\n data = analyze(data);\n }\n const { min, max } = data;\n const values = data.values.sort((a, b) => a - b);\n\n if (num === 1) {\n return [min, max];\n }\n\n const limits = [];\n\n if (mode.substr(0, 1) === 'c') {\n // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0, 1) === 'e') {\n // equal interval\n limits.push(min);\n for (let i = 1; i < num; i++) {\n limits.push(min + (i / num) * (max - min));\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'l') {\n // log scale\n if (min <= 0) {\n throw new Error(\n 'Logarithmic scales are only possible for values > 0'\n );\n }\n const min_log = Math.LOG10E * log(min);\n const max_log = Math.LOG10E * log(max);\n limits.push(min);\n for (let i = 1; i < num; i++) {\n limits.push(pow(10, min_log + (i / num) * (max_log - min_log)));\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'q') {\n // quantile scale\n limits.push(min);\n for (let i = 1; i < num; i++) {\n const p = ((values.length - 1) * i) / num;\n const pb = floor(p);\n if (pb === p) {\n limits.push(values[pb]);\n } else {\n // p > pb\n const pr = p - pb;\n limits.push(values[pb] * (1 - pr) + values[pb + 1] * pr);\n }\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'k') {\n // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n let cluster;\n const n = values.length;\n const assignments = new Array(n);\n const clusterSizes = new Array(num);\n let repeat = true;\n let nb_iters = 0;\n let centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (let i = 1; i < num; i++) {\n centroids.push(min + (i / num) * (max - min));\n }\n centroids.push(max);\n\n while (repeat) {\n // assignment step\n for (let j = 0; j < num; j++) {\n clusterSizes[j] = 0;\n }\n for (let i = 0; i < n; i++) {\n const value = values[i];\n let mindist = Number.MAX_VALUE;\n let best;\n for (let j = 0; j < num; j++) {\n const dist = abs(centroids[j] - value);\n if (dist < mindist) {\n mindist = dist;\n best = j;\n }\n clusterSizes[best]++;\n assignments[i] = best;\n }\n }\n\n // update centroids step\n const newCentroids = new Array(num);\n for (let j = 0; j < num; j++) {\n newCentroids[j] = null;\n }\n for (let i = 0; i < n; i++) {\n cluster = assignments[i];\n if (newCentroids[cluster] === null) {\n newCentroids[cluster] = values[i];\n } else {\n newCentroids[cluster] += values[i];\n }\n }\n for (let j = 0; j < num; j++) {\n newCentroids[j] *= 1 / clusterSizes[j];\n }\n\n // check convergence\n repeat = false;\n for (let j = 0; j < num; j++) {\n if (newCentroids[j] !== centroids[j]) {\n repeat = true;\n break;\n }\n }\n\n centroids = newCentroids;\n nb_iters++;\n\n if (nb_iters > 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n const kClusters = {};\n for (let j = 0; j < num; j++) {\n kClusters[j] = [];\n }\n for (let i = 0; i < n; i++) {\n cluster = assignments[i];\n kClusters[cluster].push(values[i]);\n }\n let tmpKMeansBreaks = [];\n for (let j = 0; j < num; j++) {\n tmpKMeansBreaks.push(kClusters[j][0]);\n tmpKMeansBreaks.push(kClusters[j][kClusters[j].length - 1]);\n }\n tmpKMeansBreaks = tmpKMeansBreaks.sort((a, b) => a - b);\n limits.push(tmpKMeansBreaks[0]);\n for (let i = 1; i < tmpKMeansBreaks.length; i += 2) {\n const v = tmpKMeansBreaks[i];\n if (!isNaN(v) && limits.indexOf(v) === -1) {\n limits.push(v);\n }\n }\n }\n return limits;\n}\n","import Color from '../Color.js';\nimport '../ops/luminance.js';\n\nexport default (a, b) => {\n // WCAG contrast ratio\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n a = new Color(a);\n b = new Color(b);\n const l1 = a.luminance();\n const l2 = b.luminance();\n return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n};\n","import Color from '../Color.js';\nconst { sqrt, pow, min, max, atan2, abs, cos, sin, exp, PI } = Math;\n\nexport default function (a, b, Kl = 1, Kc = 1, Kh = 1) {\n // Delta E (CIE 2000)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html\n var rad2deg = function (rad) {\n return (360 * rad) / (2 * PI);\n };\n var deg2rad = function (deg) {\n return (2 * PI * deg) / 360;\n };\n a = new Color(a);\n b = new Color(b);\n const [L1, a1, b1] = Array.from(a.lab());\n const [L2, a2, b2] = Array.from(b.lab());\n const avgL = (L1 + L2) / 2;\n const C1 = sqrt(pow(a1, 2) + pow(b1, 2));\n const C2 = sqrt(pow(a2, 2) + pow(b2, 2));\n const avgC = (C1 + C2) / 2;\n const G = 0.5 * (1 - sqrt(pow(avgC, 7) / (pow(avgC, 7) + pow(25, 7))));\n const a1p = a1 * (1 + G);\n const a2p = a2 * (1 + G);\n const C1p = sqrt(pow(a1p, 2) + pow(b1, 2));\n const C2p = sqrt(pow(a2p, 2) + pow(b2, 2));\n const avgCp = (C1p + C2p) / 2;\n const arctan1 = rad2deg(atan2(b1, a1p));\n const arctan2 = rad2deg(atan2(b2, a2p));\n const h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360;\n const h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360;\n const avgHp =\n abs(h1p - h2p) > 180 ? (h1p + h2p + 360) / 2 : (h1p + h2p) / 2;\n const T =\n 1 -\n 0.17 * cos(deg2rad(avgHp - 30)) +\n 0.24 * cos(deg2rad(2 * avgHp)) +\n 0.32 * cos(deg2rad(3 * avgHp + 6)) -\n 0.2 * cos(deg2rad(4 * avgHp - 63));\n let deltaHp = h2p - h1p;\n deltaHp =\n abs(deltaHp) <= 180\n ? deltaHp\n : h2p <= h1p\n ? deltaHp + 360\n : deltaHp - 360;\n deltaHp = 2 * sqrt(C1p * C2p) * sin(deg2rad(deltaHp) / 2);\n const deltaL = L2 - L1;\n const deltaCp = C2p - C1p;\n const sl = 1 + (0.015 * pow(avgL - 50, 2)) / sqrt(20 + pow(avgL - 50, 2));\n const sc = 1 + 0.045 * avgCp;\n const sh = 1 + 0.015 * avgCp * T;\n const deltaTheta = 30 * exp(-pow((avgHp - 275) / 25, 2));\n const Rc = 2 * sqrt(pow(avgCp, 7) / (pow(avgCp, 7) + pow(25, 7)));\n const Rt = -Rc * sin(2 * deg2rad(deltaTheta));\n const result = sqrt(\n pow(deltaL / (Kl * sl), 2) +\n pow(deltaCp / (Kc * sc), 2) +\n pow(deltaHp / (Kh * sh), 2) +\n Rt * (deltaCp / (Kc * sc)) * (deltaHp / (Kh * sh))\n );\n return max(0, min(100, result));\n}\n","import Color from '../Color.js';\n\n// simple Euclidean distance\nexport default function (a, b, mode = 'lab') {\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color(a);\n b = new Color(b);\n const l1 = a.get(mode);\n const l2 = b.get(mode);\n let sum_sq = 0;\n for (let i in l1) {\n const d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d * d;\n }\n return Math.sqrt(sum_sq);\n}\n","import Color from '../Color.js';\n\nexport default (...args) => {\n try {\n new Color(...args);\n return true;\n // eslint-disable-next-line\n } catch (e) {\n return false;\n }\n};\n","// some pre-defined color scales:\nimport chroma from '../chroma.js';\nimport '../io/hsl/index.js';\nimport scale from '../generator/scale.js';\n\nexport default {\n cool() {\n return scale([chroma.hsl(180, 1, 0.9), chroma.hsl(250, 0.7, 0.4)]);\n },\n hot() {\n return scale(['#000', '#f00', '#ff0', '#fff'], [0, 0.25, 0.75, 1]).mode(\n 'rgb'\n );\n }\n};\n","/**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n*/\n\nconst colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2']\n};\n\n// add lowercase aliases for case-insensitive matches\nfor (let key of Object.keys(colorbrewer)) {\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n}\n\nexport default colorbrewer;\n","import chroma from './src/chroma.js';\n\n// feel free to comment out anything to rollup\n// a smaller chroma.js built\n\n// io --> convert colors\nimport './src/io/cmyk/index.js';\nimport './src/io/css/index.js';\nimport './src/io/gl/index.js';\nimport './src/io/hcg/index.js';\nimport './src/io/hex/index.js';\nimport './src/io/hsi/index.js';\nimport './src/io/hsl/index.js';\nimport './src/io/hsv/index.js';\nimport './src/io/lab/index.js';\nimport './src/io/lch/index.js';\nimport './src/io/named/index.js';\nimport './src/io/num/index.js';\nimport './src/io/rgb/index.js';\nimport './src/io/temp/index.js';\nimport './src/io/oklab/index.js';\nimport './src/io/oklch/index.js';\n\n// operators --> modify existing Colors\nimport './src/ops/alpha.js';\nimport './src/ops/clipped.js';\nimport './src/ops/darken.js';\nimport './src/ops/get.js';\nimport './src/ops/luminance.js';\nimport './src/ops/mix.js';\nimport './src/ops/premultiply.js';\nimport './src/ops/saturate.js';\nimport './src/ops/set.js';\nimport './src/ops/shade.js';\n\n// interpolators\nimport './src/interpolator/rgb.js';\nimport './src/interpolator/lrgb.js';\nimport './src/interpolator/lab.js';\nimport './src/interpolator/lch.js';\nimport './src/interpolator/num.js';\nimport './src/interpolator/hcg.js';\nimport './src/interpolator/hsi.js';\nimport './src/interpolator/hsl.js';\nimport './src/interpolator/hsv.js';\nimport './src/interpolator/oklab.js';\nimport './src/interpolator/oklch.js';\n\n// generators -- > create new colors\nimport average from './src/generator/average.js';\nimport bezier from './src/generator/bezier.js';\nimport blend from './src/generator/blend.js';\nimport cubehelix from './src/generator/cubehelix.js';\nimport mix from './src/generator/mix.js';\nimport random from './src/generator/random.js';\nimport scale from './src/generator/scale.js';\n\n// other utility methods\nimport { analyze } from './src/utils/analyze.js';\nimport contrast from './src/utils/contrast.js';\nimport deltaE from './src/utils/delta-e.js';\nimport distance from './src/utils/distance.js';\nimport { limits } from './src/utils/analyze.js';\nimport valid from './src/utils/valid.js';\nimport input from './src/io/input.js';\n\n// scale\nimport scales from './src/utils/scales.js';\n\n// colors\nimport colors from './src/colors/w3cx11.js';\nimport brewer from './src/colors/colorbrewer.js';\n\nObject.assign(chroma, {\n average,\n bezier,\n blend,\n cubehelix,\n mix,\n interpolate: mix,\n random,\n scale,\n analyze,\n contrast,\n deltaE,\n distance,\n limits,\n valid,\n scales,\n input,\n colors,\n brewer\n});\n\nexport default chroma;\n","import chroma from 'chroma-js';\r\n\r\nexport class ChromaColorScale extends HTMLElement {\r\n static get observedAttributes() {\r\n return ['min', 'max']; // 声明需要监听的min和max属性\r\n }\r\n attributeChangedCallback(name, oldValue, newValue) {\r\n if (oldValue === newValue) return;\r\n\r\n let numValue = Number(newValue);\r\n if (isNaN(numValue)) return;\r\n\r\n switch (name) {\r\n case 'min':\r\n // 确保min小于当前max\r\n if (numValue >= this.state.max) {\r\n this.showErrorMessage('最小值必须小于最大值');\r\n return;\r\n }\r\n this.state.min = numValue;\r\n this.minInput.value = numValue;\r\n break;\r\n case 'max':\r\n // 确保max大于当前min\r\n if (numValue <= this.state.min) {\r\n this.showErrorMessage('最大值必须大于最小值');\r\n return;\r\n }\r\n this.state.max = numValue;\r\n this.maxInput.value = numValue;\r\n break;\r\n }\r\n\r\n // 重新计算步长并渲染色条\r\n this.state.step = this.calculateOptimalStep(this.state.min, this.state.max);\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n }\r\n\r\n constructor() {\r\n super();\r\n const shadow = this.attachShadow({ mode: 'open' });\r\n\r\n // 添加自定义消息提示的样式\r\n const messageStyle = `\r\n <style>\r\n /* 仿Ant Design的消息提示样式 */\r\n .message-container {\r\n position: fixed;\r\n top: 24px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n z-index: 999999;\r\n pointer-events: none;\r\n }\r\n .message-item {\r\n padding: 8px 16px;\r\n margin-bottom: 8px;\r\n border-radius: 4px;\r\n background: #fff;\r\n box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\r\n display: flex;\r\n align-items: center;\r\n min-width: 300px;\r\n max-width: 500px;\r\n animation: messageFadeIn 0.3s ease-in-out;\r\n }\r\n .message-error {\r\n border-left: 4px solid #ff4d4f;\r\n }\r\n .message-success {\r\n border-left: 4px solid #52c41a;\r\n }\r\n .message-success .message-icon {\r\n color: #52c41a;\r\n }\r\n .message-icon {\r\n margin-right: 8px;\r\n color: #ff4d4f;\r\n font-size: 16px;\r\n }\r\n .message-content {\r\n color: #444;\r\n font-size: 14px;\r\n line-height: 1.5;\r\n }\r\n @keyframes messageFadeIn {\r\n from {\r\n opacity: 0;\r\n transform: translateY(-10px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n @keyframes messageFadeOut {\r\n from {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n to {\r\n opacity: 0;\r\n transform: translateY(-10px);\r\n }\r\n }\r\n /* 新增:Antd风格ColorPicker样式 */\r\n .color-picker-modal {\r\n position: fixed;\r\n z-index: 99999;\r\n background: #fff;\r\n border-radius: 8px;\r\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);\r\n padding: 16px;\r\n width: 280px;\r\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\r\n }\r\n .color-picker-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 12px;\r\n }\r\n .color-picker-title {\r\n font-size: 14px;\r\n color: #1f2937;\r\n font-weight: 500;\r\n }\r\n .color-picker-close {\r\n width: 24px;\r\n height: 24px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n color: #6b7280;\r\n transition: all 0.2s;\r\n }\r\n .color-picker-close:hover {\r\n background: #f3f4f6;\r\n color: #1f2937;\r\n }\r\n .color-picker-body {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 12px;\r\n }\r\n .color-picker-spectrum {\r\n width: 100%;\r\n height: 160px;\r\n position: relative;\r\n border-radius: 4px;\r\n overflow: hidden;\r\n cursor: crosshair;\r\n }\r\n .color-picker-spectrum-gradient {\r\n width: 100%;\r\n height: 100%;\r\n background: linear-gradient(to right, #fff, rgba(255,255,255,0)),\r\n linear-gradient(to top, #000, rgba(0,0,0,0));\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n }\r\n .color-picker-spectrum-handle {\r\n position: absolute;\r\n width: 16px;\r\n height: 16px;\r\n border-radius: 50%;\r\n border: 2px solid #fff;\r\n box-shadow: 0 0 0 1px rgba(0,0,0,0.2);\r\n transform: translate(-8px, -8px);\r\n z-index: 10;\r\n }\r\n .color-picker-hue {\r\n width: 100%;\r\n height: 12px;\r\n position: relative;\r\n border-radius: 6px;\r\n overflow: hidden;\r\n cursor: pointer;\r\n background: linear-gradient(to right, \r\n #f00 0%, #ff0 17%, #0f0 33%, \r\n #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\r\n }\r\n .color-picker-hue-handle {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n width: 4px;\r\n background: #fff;\r\n box-shadow: 0 0 0 1px rgba(0,0,0,0.2);\r\n transform: translateX(-2px);\r\n z-index: 10;\r\n }\r\n .color-picker-input {\r\n display: flex;\r\n gap: 8px;\r\n align-items: center;\r\n }\r\n .color-picker-input input {\r\n flex: 1;\r\n padding: 6px 8px;\r\n border: 1px solid #d1d5db;\r\n border-radius: 4px;\r\n font-size: 13px;\r\n color: #1f2937;\r\n outline: none;\r\n transition: border-color 0.2s;\r\n }\r\n .color-picker-input input:focus {\r\n border-color: #3b82f6;\r\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);\r\n }\r\n .color-picker-preview {\r\n width: 24px;\r\n height: 24px;\r\n border-radius: 4px;\r\n border: 1px solid #d1d5db;\r\n }\r\n .color-picker-footer {\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 8px;\r\n margin-top: 8px;\r\n }\r\n .color-picker-btn {\r\n padding: 6px 12px;\r\n border-radius: 4px;\r\n font-size: 13px;\r\n font-weight: 500;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n }\r\n .color-picker-btn-cancel {\r\n border: 1px solid #d1d5db;\r\n background: #fff;\r\n color: #374151;\r\n }\r\n .color-picker-btn-cancel:hover {\r\n background: #f9fafb;\r\n border-color: #b3b9c6;\r\n }\r\n .color-picker-btn-confirm {\r\n border: 1px solid #3b82f6;\r\n background: #3b82f6;\r\n color: #fff;\r\n }\r\n .color-picker-btn-confirm:hover {\r\n background: #2563eb;\r\n border-color: #2563eb;\r\n }\r\n </style>\r\n `;\r\n\r\n shadow.innerHTML = messageStyle + `\r\n <style>\r\n * {\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n overflow: visible !important;\r\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\r\n }\r\n :host { \r\n display: block; \r\n position: fixed; \r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: auto;\r\n width: 150px; /* 适度加宽主面板 */\r\n height: 100vh !important; \r\n margin: 0; \r\n padding: 0; \r\n overflow: hidden !important; \r\n box-sizing: border-box;\r\n z-index: 999; \r\n }\r\n .main-container { \r\n position: absolute; \r\n top: 0; \r\n right: 0; \r\n height: 100vh; \r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n padding: 0px 0; /* 适度增加内边距 */\r\n }\r\n .text-sm { \r\n font-size: 12px; /* 调整为适中大小 */\r\n color: #444; \r\n line-height: 1.4; /* 适度增加行高 */\r\n }\r\n .btn { \r\n padding: 6px 12px; /* 适度增加按钮内边距 */\r\n border: 1px solid #ddd; \r\n border-radius: 6px; \r\n cursor: pointer; \r\n background: #f8f9fa; \r\n font-size: 12px; /* 调整为适中大小 */\r\n color: #333;\r\n transition: all 0.2s ease;\r\n font-weight: 500;\r\n }\r\n .btn:hover { \r\n background: #e9ecef; \r\n border-color: #ccc;\r\n box-shadow: 0 1px 3px rgba(0,0,0,0.1);\r\n }\r\n .btn:active {\r\n background: #dee2e6;\r\n box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);\r\n }\r\n .input-sm { \r\n width: 55px; /* 适度加宽 */\r\n padding: 6px 8px; /* 适度增加内边距 */\r\n border: 1px solid #ddd; \r\n border-radius: 6px; \r\n font-size: 12px; /* 调整为适中大小 */\r\n color: #333;\r\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\r\n }\r\n .input-md { \r\n width: 75px; /* 适度加宽 */\r\n padding: 6px 8px; /* 适度增加内边距 */\r\n border: 1px solid #ddd; \r\n border-radius: 6px; \r\n font-size: 12px; /* 调整为适中大小 */\r\n color: #333;\r\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\r\n }\r\n .input-sm:focus, .input-md:focus {\r\n outline: none;\r\n border-color: #4d90fe;\r\n box-shadow: 0 0 0 3px rgba(77, 144, 254, 0.1);\r\n }\r\n .select-sm { \r\n padding: 6px 8px; /* 适度增加内边距 */\r\n border: 1px solid #ddd; \r\n border-radius: 6px; \r\n font-size: 12px; /* 调整为适中大小 */\r\n color: #333;\r\n transition: border-color 0.2s ease;\r\n }\r\n .select-sm:focus {\r\n outline: none;\r\n border-color: #4d90fe;\r\n }\r\n .checkbox { \r\n vertical-align: middle; \r\n margin: 0 5px; /* 适度增加间距 */\r\n width: 15px; /* 适度加大 */\r\n height: 15px; /* 适度加大 */\r\n border-radius: 4px;\r\n cursor: pointer;\r\n }\r\n .radio { \r\n vertical-align: middle; \r\n margin: 0 5px; /* 适度增加间距 */\r\n width: 15px; /* 适度加大 */\r\n height: 15px; /* 适度加大 */\r\n cursor: pointer;\r\n }\r\n .color-picker { \r\n width: 38px; /* 适度加宽 */\r\n height: 28px; /* 适度加高 */\r\n padding: 0; \r\n border: 1px solid #ddd; \r\n cursor: pointer; \r\n border-radius: 6px;\r\n }\r\n\r\n /* 色条预览区 - 核心调整 */\r\n .preview-container { \r\n display: flex; \r\n align-items: flex-start; \r\n height: 100%; \r\n box-sizing: border-box; \r\n overflow: hidden;\r\n padding: 0 10px; /* 适度增加内边距 */\r\n }\r\n .color-bar { \r\n width: 65px; /* 适度加宽 */\r\n height: 100%; \r\n border: 1px solid #ddd; \r\n border-radius: 8px;\r\n box-sizing: border-box; \r\n box-shadow: 0 1px 3px rgba(0,0,0,0.1);\r\n }\r\n .value-labels { \r\n margin-left: 10px; /* 适度增加间距 */\r\n height: calc(100% - 20px); \r\n position: relative; \r\n width: 65px; /* 适度加宽标签容器 */\r\n }\r\n .label-item { \r\n position: absolute; \r\n font-size: 12px; /* 调整为适中大小 */\r\n color: #333; \r\n white-space: nowrap; \r\n transform: translateY(-50%);\r\n left: 0;\r\n right: 0;\r\n text-align: left;\r\n max-height: 22px;\r\n overflow: visible !important;\r\n line-height: 1.4; /* 适度增加行高 */\r\n font-weight: 500;\r\n }\r\n\r\n /* 设置面板 */\r\n .setting-panel {\r\n display: none;\r\n position: fixed; \r\n top: 20px;\r\n right: 160px; /* 适配主面板宽度调整 */\r\n background: white;\r\n border: 1px solid #ddd;\r\n border-radius: 12px;\r\n width: 540px; /* 适度加宽面板 */\r\n box-shadow: 0 4px 20px rgba(0,0,0,0.15);\r\n z-index: 10000; \r\n overflow: hidden;\r\n }\r\n .setting-panel.active { display: block; }\r\n\r\n .panel-header {\r\n padding: 10px 15px; /* 适度增加内边距 */\r\n background: #f8f9fa;\r\n border-bottom: 1px solid #eee;\r\n cursor: move;\r\n user-select: none;\r\n font-size: 14px; /* 调整为适中大小 */\r\n font-weight: 600;\r\n color: #333;\r\n border-radius: 12px 12px 0 0;\r\n }\r\n .panel-header:hover {\r\n background: #e9ecef;\r\n }\r\n\r\n .panel-content { display: flex; }\r\n\r\n .left-settings {\r\n flex: 1;\r\n padding: 15px; /* 适度增加内边距 */\r\n border-right: 1px solid #eee;\r\n }\r\n\r\n .right-colorbar {\r\n width: 215px; /* 适度加宽 */\r\n padding: 15px; /* 适度增加内边距 */\r\n }\r\n\r\n .section-title {\r\n font-size: 13px; /* 调整为适中大小 */\r\n font-weight: 600;\r\n margin: 15px 0 8px; /* 适度增加间距 */\r\n color: #222;\r\n padding-bottom: 4px; /* 适度增加下划线间距 */\r\n border-bottom: 1px solid #eee;\r\n }\r\n .section-title:first-child { \r\n margin-top: 0; \r\n margin-bottom: 12px;\r\n }\r\n\r\n .display-options { margin-bottom: 15px; font-size: 14px; }\r\n .display-option { margin: 8px 0; /* 适度增加间距 */ display: flex; align-items: center; gap: 8px; /* 适度增加间隙 */ }\r\n .display-option input[type=\"radio\"] { margin-left: 0; }\r\n\r\n .range-settings { margin: 15px 0; font-size: 14px; }\r\n .range-row { margin: 8px 0; /* 适度增加间距 */ display: flex; align-items: center; gap: 8px; /* 适度增加间隙 */ }\r\n .range-row label { text-align: right; font-weight: 500; color: #444; font-size: 14px; /* 调整为适中大小 */ }\r\n /* 新增:个数/增量选项样式 */\r\n .range-mode-option { margin: 8px 0; /* 适度增加间距 */ display: flex; align-items: center; gap: 8px; /* 适度增加间隙 */ }\r\n .range-mode-option input[type=\"radio\"] { margin-left: 0; }\r\n .input-disabled { \r\n background-color: #f8f9fa; \r\n cursor: not-allowed; \r\n border-color: #ddd; \r\n color: #888;\r\n }\r\n\r\n .label-settings { margin-bottom: 15px; font-size: 14px; }\r\n .label-option { margin: 8px 0; /* 适度增加间距 */ display: flex; align-items: center; gap: 8px; /* 适度增加间隙 */ }\r\n .precision-control { display: inline-flex; align-items: center; gap: 6px; /* 适度增加间隙 */ }\r\n\r\n .color-library { margin-bottom: 15px; font-size: 14px; }\r\n /* 自定义选择器样式 - 仅显示色条 */\r\n .custom-select-display {\r\n width: 100%;\r\n height: 32px; /* 适度加高 */\r\n border: 1px solid #ddd; \r\n border-radius: 8px;\r\n cursor: pointer;\r\n position: relative;\r\n overflow: hidden;\r\n background: white;\r\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\r\n }\r\n .custom-select-display:hover {\r\n border-color: #ccc;\r\n box-shadow: 0 1px 3px rgba(0,0,0,0.1);\r\n }\r\n /* 选中色条预览 - 占满整个显示容器 */\r\n .selected-color-bar {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n /* 下拉箭头样式 */\r\n .select-arrow {\r\n position: absolute;\r\n right: 12px; /* 适度调整位置 */\r\n top: 50%;\r\n transform: translateY(-50%);\r\n width: 0;\r\n height: 0;\r\n border-left: 6px solid transparent; /* 适度加大箭头 */\r\n border-right: 6px solid transparent; /* 适度加大箭头 */\r\n border-top: 6px solid #666; /* 适度加大箭头 */\r\n pointer-events: none;\r\n }\r\n /* 隐藏原生select */\r\n #colorLibrary {\r\n display: none !important;\r\n }\r\n /* 色库下拉框核心样式 */\r\n #libraryOptions {\r\n width: 100% !important;\r\n min-width: 250px; /* 适度加宽 */\r\n box-sizing: border-box;\r\n border-radius: 0 0 8px 8px;\r\n overflow: hidden;\r\n box-shadow: 0 4px 12px rgba(0,0,0,0.1);\r\n }\r\n .library-option {\r\n display: flex;\r\n align-items: center;\r\n padding: 8px 12px; /* 适度增加内边距 */\r\n gap: 10px; /* 适度增加间隙 */\r\n width: 100%;\r\n box-sizing: border-box;\r\n transition: background-color 0.2s ease;\r\n border-bottom: 1px solid #f0f0f0;\r\n }\r\n .library-option:last-child {\r\n border-bottom: none;\r\n }\r\n .option-color-bar {\r\n width: 190px; /* 适度加宽 */\r\n height: 22px; /* 适度加高 */\r\n border: 1px solid #ddd; \r\n border-radius: 4px;\r\n flex-shrink: 0;\r\n }\r\n .option-text {\r\n font-size: 12px; /* 保持原有大小 */\r\n color: #333;\r\n flex: 1;\r\n font-weight: 500;\r\n /* 新增省略显示样式 - 关键修改:增加 !important 强制生效 */\r\n white-space: nowrap !important; /* 强制不换行 */\r\n overflow: hidden !important; /* 隐藏超出内容 */\r\n text-overflow: ellipsis !important; /* 超出部分显示... */\r\n max-width: 80px !important; /* 限制最大宽度,可根据需要调整 */\r\n /* 悬浮提示相关 */\r\n position: relative;\r\n }\r\n\r\n .library-actions { display: flex; gap: 8px; /* 适度增加间隙 */ margin: 10px 0; }\r\n\r\n .bottom-buttons {\r\n display: flex;\r\n justify-content: space-between;\r\n padding: 10px 15px; /* 适度增加内边距 */\r\n border-top: 1px solid #eee;\r\n background: #f8f9fa;\r\n border-radius: 0 0 12px 12px;\r\n }\r\n .left-buttons { display: flex; gap: 8px; /* 适度增加间隙 */ }\r\n .right-buttons { display: flex; gap: 8px; /* 适度增加间隙 */ }\r\n\r\n /* 面板内色条样式 */\r\n .colorbar-preview {\r\n width: 85px; /* 适度加宽 */\r\n height: 490px; \r\n margin: 0 auto;\r\n }\r\n .colorbar-labels {\r\n margin-left: 10px; /* 适度增加间距 */\r\n height: 490px; \r\n position: relative; \r\n width: 65px; /* 适度加宽 */\r\n }\r\n .colorbar-label {\r\n position: absolute;\r\n font-size: 12px; /* 调整为适中大小 */\r\n color: #333;\r\n transform: translateY(-50%);\r\n white-space: nowrap; \r\n line-height: 1.4; /* 适度增加行高 */\r\n font-weight: 500;\r\n }\r\n /* 隐藏数字左侧正方形 */\r\n .color-marker {\r\n display: none; \r\n width: 16px; \r\n height: 16px; \r\n border: 1px solid #666;\r\n left: -24px; \r\n transform: translateY(-50%);\r\n box-sizing: border-box;\r\n border-radius: 0;\r\n cursor: ns-resize;\r\n z-index: 10;\r\n }\r\n .color-marker.dragging {\r\n border-width: 2px;\r\n border-color: #0066cc;\r\n box-shadow: 0 0 5px rgba(0, 102, 204, 0.8);\r\n }\r\n .colorbar-container { \r\n display: flex; \r\n justify-content: flex-start; \r\n margin: 10px 0 10px 12px; /* 适度调整间距 */\r\n }\r\n\r\n /* 移除了colorbar-actions相关样式 */\r\n </style>\r\n\r\n <div class=\"main-container\">\r\n <div class=\"preview-container\" id=\"colorBarPreview\">\r\n <canvas class=\"color-bar\" id=\"previewCanvas\"></canvas>\r\n <div class=\"value-labels\" id=\"valueLabels\"></div>\r\n </div>\r\n\r\n <div class=\"setting-panel\" id=\"settingPanel\">\r\n <div class=\"panel-header\" id=\"panelHandle\">色标设置</div>\r\n <div class=\"panel-content\">\r\n <div class=\"left-settings\">\r\n <div class=\"section-title\">色块</div>\r\n <div class=\"display-options\">\r\n <div class=\"display-option\">\r\n <input type=\"radio\" id=\"continuous\" name=\"displayMode\" class=\"radio\" checked>\r\n <label for=\"continuous\">连续显示</label>\r\n </div>\r\n <div class=\"display-option\">\r\n <input type=\"radio\" id=\"discrete\" name=\"displayMode\" class=\"radio\">\r\n <label for=\"discrete\">离散显示</label>\r\n <span class=\"text-sm\">数量由范围设置决定</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"section-title\">范围</div>\r\n <div class=\"range-settings\">\r\n <div class=\"range-row\">\r\n <label>最小值:</label>\r\n <input type=\"number\" id=\"minVal\" value=\"0\" class=\"input-md\">\r\n </div>\r\n <div class=\"range-row\">\r\n <label>最大值:</label>\r\n <input type=\"number\" id=\"maxVal\" value=\"60000\" class=\"input-md\">\r\n <input type=\"button\" value=\"设置\" class=\"btn\" id=\"setRange\">\r\n </div>\r\n <div class=\"range-mode-option\">\r\n <input type=\"radio\" id=\"countMode\" name=\"rangeMode\" class=\"radio\" checked>\r\n <label for=\"countMode\">个数:</label>\r\n <input type=\"number\" id=\"rangeCount\" value=\"16\" class=\"input-md\" min=\"2\">\r\n </div>\r\n <div class=\"range-mode-option\">\r\n <input type=\"radio\" id=\"stepMode\" name=\"rangeMode\" class=\"radio\">\r\n <label for=\"stepMode\">增量:</label>\r\n <input type=\"number\" id=\"rangeStep\" value=\"3750\" class=\"input-md\" min=\"1\" disabled>\r\n </div>\r\n </div>\r\n\r\n <div class=\"section-title\">标注</div>\r\n <div class=\"label-settings\">\r\n <div class=\"label-option\">\r\n <input type=\"radio\" id=\"integer\" name=\"labelType\" class=\"radio\" checked>\r\n <label for=\"integer\">整数</label>\r\n </div>\r\n <div class=\"label-option\">\r\n <input type=\"radio\" id=\"float\" name=\"labelType\" class=\"radio\">\r\n <label for=\"float\">浮点数</label>\r\n <div class=\"precision-control\">\r\n <label>精度</label>\r\n <input type=\"number\" id=\"precision\" class=\"input-sm\" value=\"1\" min=\"1\" max=\"10\">\r\n </div>\r\n <label>\r\n <input type=\"checkbox\" class=\"checkbox\" id=\"scientific\"> 科学计数\r\n </label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"section-title\">色库</div>\r\n <div class=\"color-library\">\r\n <div id=\"librarySelectContainer\" style=\"position: relative; width: 100%;\">\r\n <div class=\"custom-select-display\" id=\"customSelectDisplay\">\r\n <div class=\"selected-color-bar\" id=\"selectedColorBar\"></div>\r\n <div class=\"select-arrow\"></div>\r\n </div>\r\n <select id=\"colorLibrary\">\r\n <option value=\"default\">Default</option>\r\n <option value=\"BlkWhiClt\">BlkWhiClt</option>\r\n <option value=\"BlkWhiYlw\">BlkWhiYlw</option>\r\n <option value=\"BluWhiClt\">BluWhiClt</option>\r\n </select>\r\n <div id=\"libraryOptions\" style=\"position: absolute; top: 100%; left: 0; right: 0; background: white; border: 1px solid #ccc; border-top: none; border-radius: 0 0 3px 3px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); z-index: 10001; display: none;\">\r\n <div class=\"library-option\" data-value=\"default\">\r\n <div class=\"option-color-bar\" id=\"defaultColorBar\"></div>\r\n <span class=\"option-text\" title=\"Default\">Default</span>\r\n </div>\r\n <div class=\"library-option\" data-value=\"BlkWhiClt\">\r\n <div class=\"option-color-bar\" id=\"BlkWhiCltColorBar\"></div>\r\n <span class=\"option-text\" title=\"BlkWhiClt\">BlkWhiClt</span>\r\n </div>\r\n <div class=\"library-option\" data-value=\"BlkWhiYlw\">\r\n <div class=\"option-color-bar\" id=\"BlkWhiYlwColorBar\"></div>\r\n <span class=\"option-text\" title=\"BlkWhiYlw\">BlkWhiYlw</span>\r\n </div>\r\n <div class=\"library-option\" data-value=\"BluWhiClt\">\r\n <div class=\"option-color-bar\" id=\"BluWhiCltColorBar\"></div>\r\n <span class=\"option-text\" title=\"BluWhiClt\">BluWhiClt</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"library-actions\">\r\n <input type=\"button\" value=\"导入\" class=\"btn\" id=\"importLib\">\r\n <input type=\"button\" value=\"保存\" class=\"btn\" id=\"saveLib\">\r\n </div>\r\n <!-- 移除了添加到色库的复选框 -->\r\n </div>\r\n </div>\r\n\r\n <div class=\"right-colorbar\">\r\n <div class=\"colorbar-container\">\r\n <div class=\"colorbar-labels\" id=\"colorbarLabels\"></div>\r\n <canvas class=\"colorbar-preview\" id=\"panelColorbar\"></canvas>\r\n </div>\r\n \r\n <!-- 移除了colorbar-actions按钮组 -->\r\n \r\n </div>\r\n </div>\r\n\r\n <div class=\"bottom-buttons\">\r\n <div class=\"left-buttons\">\r\n <input type=\"button\" value=\"缺省\" class=\"btn\" id=\"resetDefault\">\r\n </div>\r\n <div class=\"right-buttons\">\r\n <input type=\"button\" value=\"确定\" class=\"btn\" id=\"confirm\">\r\n <input type=\"button\" value=\"取消\" class=\"btn\" id=\"cancel\">\r\n <input type=\"button\" value=\"应用\" class=\"btn\" id=\"apply\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- 消息提示容器 -->\r\n <div class=\"message-container\" id=\"messageContainer\"></div>\r\n `;\r\n\r\n // 获取DOM元素\r\n this.colorBarPreview = shadow.getElementById('colorBarPreview');\r\n this.previewCanvas = shadow.getElementById('previewCanvas');\r\n this.valueLabels = shadow.getElementById('valueLabels');\r\n this.settingPanel = shadow.getElementById('settingPanel');\r\n this.panelHandle = shadow.getElementById('panelHandle');\r\n this.minInput = shadow.getElementById('minVal');\r\n this.maxInput = shadow.getElementById('maxVal');\r\n this.setRangeBtn = shadow.getElementById('setRange');\r\n this.displayModeRadios = shadow.querySelectorAll('input[name=\"displayMode\"]');\r\n this.labelTypeRadios = shadow.querySelectorAll('input[name=\"labelType\"]');\r\n this.precisionInput = shadow.getElementById('precision');\r\n this.scientificCheckbox = shadow.getElementById('scientific');\r\n this.colorLibrarySelect = shadow.getElementById('colorLibrary');\r\n // 移除了addToLibCheckbox的获取\r\n this.colorbarLabels = shadow.getElementById('colorbarLabels');\r\n this.panelColorbar = shadow.getElementById('panelColorbar');\r\n this.resetBtn = shadow.getElementById('resetDefault');\r\n this.confirmBtn = shadow.getElementById('confirm');\r\n this.cancelBtn = shadow.getElementById('cancel');\r\n this.applyBtn = shadow.getElementById('apply');\r\n\r\n // 个数/增量相关元素\r\n this.rangeModeRadios = shadow.querySelectorAll('input[name=\"rangeMode\"]');\r\n this.rangeCountInput = shadow.getElementById('rangeCount');\r\n this.rangeStepInput = shadow.getElementById('rangeStep');\r\n\r\n // 色库下拉框自定义元素\r\n this.librarySelectContainer = shadow.getElementById('librarySelectContainer');\r\n this.libraryOptions = shadow.getElementById('libraryOptions');\r\n this.libraryOptionItems = shadow.querySelectorAll('.library-option');\r\n this.customSelectDisplay = shadow.getElementById('customSelectDisplay');\r\n this.selectedColorBar = shadow.getElementById('selectedColorBar');\r\n\r\n // 色库颜色条画布元素\r\n this.defaultColorBar = shadow.getElementById('defaultColorBar');\r\n this.BlkWhiCltColorBar = shadow.getElementById('BlkWhiCltColorBar');\r\n this.BlkWhiYlwColorBar = shadow.getElementById('BlkWhiYlwColorBar');\r\n this.BluWhiCltColorBar = shadow.getElementById('BluWhiCltColorBar');\r\n\r\n // 消息提示容器\r\n this.messageContainer = shadow.getElementById('messageContainer');\r\n\r\n // 初始状态\r\n const initialMin = this.hasAttribute('min') ? Number(this.getAttribute('min')) : 0;\r\n const initialMax = this.hasAttribute('max') ? Number(this.getAttribute('max')) : 60000;\r\n\r\n // 增加数值合法性校验\r\n this.initialMin = isNaN(initialMin) || initialMin < 0 ? 0 : initialMin;\r\n this.initialMax = isNaN(initialMax) || initialMax <= this.initialMin ? 60000 : initialMax;\r\n const initialCount = 16;\r\n const initialStep = (initialMax - initialMin) / initialCount;\r\n\r\n this.state = {\r\n min: this.initialMin,\r\n max: this.initialMax,\r\n start: 0,\r\n step: 4000,\r\n displayMode: 'continuous',\r\n labelType: 'integer',\r\n precision: 1,\r\n scientific: false,\r\n colorLibrary: 'default',\r\n // 移除了addToLib状态变量\r\n rangeMode: 'count',\r\n rangeCount: initialCount,\r\n rangeStep: initialStep,\r\n // 修改:originalStopRatios 改为和default色库一致的比例\r\n originalStopRatios: [0, 0.2, 0.4, 0.6, 0.8, 1],\r\n // 修改:stops的value基于min/max和比例计算,和default色库一致\r\n stops: [\r\n { value: initialMin + (initialMax - initialMin) * 0, color: '#0000FF' },\r\n { value: initialMin + (initialMax - initialMin) * 0.2, color: '#0080FF' },\r\n { value: initialMin + (initialMax - initialMin) * 0.4, color: '#00FFFF' },\r\n { value: initialMin + (initialMax - initialMin) * 0.6, color: '#00FF00' },\r\n { value: initialMin + (initialMax - initialMin) * 0.8, color: '#FFFF00' },\r\n { value: initialMin + (initialMax - initialMin) * 1, color: '#FF0000' }\r\n ],\r\n panelVisible: false,\r\n originalState: null,\r\n panelPosition: { top: 20, right: 160 } // 适配新的面板宽度\r\n };\r\n\r\n // 拖拽状态管理\r\n this.dragState = {\r\n isDragging: false,\r\n draggingStopIndex: -1,\r\n dragStartY: 0,\r\n dragStartValue: 0,\r\n canvasRect: null\r\n };\r\n\r\n // ColorPicker状态管理\r\n this.colorPickerState = {\r\n isOpen: false,\r\n targetStop: null, // 选中的色块\r\n hue: 0, // 色相 0-360\r\n saturation: 1, // 饱和度 0-1\r\n lightness: 0.5, // 亮度 0-1\r\n pickerElement: null, // 颜色选择器DOM\r\n isDraggingHue: false, // 是否拖拽色相条\r\n isDraggingSpectrum: false // 是否拖拽色域\r\n };\r\n\r\n // 初始化色库下拉框的颜色条\r\n this.initLibraryColorBars();\r\n this.renderSelectedColorBar('default');\r\n\r\n // ========== 新增:从localStorage加载保存的自定义色库 ==========\r\n this.loadCustomLibsFromStorage();\r\n\r\n // 绑定事件\r\n this.bindEvents();\r\n // 初始化渲染\r\n this.saveOriginalState();\r\n this.rangeStepInput.value = this.state.rangeStep;\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n }\r\n\r\n // 自定义错误消息提示方法(仿Ant Design message.error)\r\n showErrorMessage(content) {\r\n // 创建消息元素\r\n const messageItem = document.createElement('div');\r\n messageItem.className = 'message-item message-error';\r\n messageItem.innerHTML = `\r\n <span class=\"message-icon\">❌</span>\r\n <span class=\"message-content\">${content}</span>\r\n `;\r\n\r\n // 添加到容器\r\n this.messageContainer.appendChild(messageItem);\r\n\r\n // 3秒后自动消失\r\n setTimeout(() => {\r\n messageItem.style.animation = 'messageFadeOut 0.3s ease-in-out';\r\n setTimeout(() => {\r\n this.messageContainer.removeChild(messageItem);\r\n }, 300);\r\n }, 3000);\r\n }\r\n // 自定义成功消息提示方法(仿Ant Design message.success)\r\n showSuccessMessage(content) {\r\n // 创建消息元素\r\n const messageItem = document.createElement('div');\r\n messageItem.className = 'message-item message-success';\r\n messageItem.innerHTML = `\r\n <span class=\"message-icon\">✓</span>\r\n <span class=\"message-content\">${content}</span>\r\n `;\r\n\r\n // 添加到容器\r\n this.messageContainer.appendChild(messageItem);\r\n\r\n // 3秒后自动消失\r\n setTimeout(() => {\r\n messageItem.style.animation = 'messageFadeOut 0.3s ease-in-out';\r\n setTimeout(() => {\r\n this.messageContainer.removeChild(messageItem);\r\n }, 300);\r\n }, 3000);\r\n }\r\n\r\n // 渲染选中的色条\r\n renderSelectedColorBar(lib) {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = 320; // 适配加宽的选择器\r\n canvas.height = 32; // 适配加高的选择器\r\n canvas.style.width = '100%';\r\n canvas.style.height = '100%';\r\n this.selectedColorBar.innerHTML = '';\r\n this.selectedColorBar.appendChild(canvas);\r\n\r\n const ctx = canvas.getContext('2d');\r\n const gradient = ctx.createLinearGradient(0, 0, canvas.width, 0);\r\n\r\n // 先检查是否是自定义色库\r\n if (this.customColorLibs && this.customColorLibs[lib]) {\r\n const customLib = this.customColorLibs[lib];\r\n customLib.ratios.forEach((ratio, index) => {\r\n gradient.addColorStop(ratio, customLib.stops[index].color);\r\n });\r\n } else {\r\n // 原有逻辑保持不变\r\n switch (lib) {\r\n case 'default':\r\n gradient.addColorStop(0, '#0000FF');\r\n gradient.addColorStop(0.2, '#0080FF');\r\n gradient.addColorStop(0.4, '#00FFFF');\r\n gradient.addColorStop(0.6, '#00FF00');\r\n gradient.addColorStop(0.8, '#FFFF00');\r\n gradient.addColorStop(1, '#FF0000');\r\n break;\r\n case 'BlkWhiClt':\r\n gradient.addColorStop(0, '#000000');\r\n gradient.addColorStop(0.25, '#666666');\r\n gradient.addColorStop(0.5, '#999999');\r\n gradient.addColorStop(0.75, '#CCCCCC');\r\n gradient.addColorStop(1, '#FFFFFF');\r\n break;\r\n case 'BlkWhiYlw':\r\n gradient.addColorStop(0, '#000000');\r\n gradient.addColorStop(0.33, '#888800');\r\n gradient.addColorStop(0.66, '#FFFF00');\r\n gradient.addColorStop(1, '#FFFFFF');\r\n break;\r\n case 'BluWhiClt':\r\n gradient.addColorStop(0, '#00008B');\r\n gradient.addColorStop(0.25, '#1E90FF');\r\n gradient.addColorStop(0.5, '#87CEFA');\r\n gradient.addColorStop(0.75, '#E0FFFF');\r\n gradient.addColorStop(1, '#FFFFFF');\r\n break;\r\n }\r\n }\r\n\r\n ctx.fillStyle = gradient;\r\n ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n ctx.strokeStyle = '#ccc';\r\n ctx.lineWidth = 1;\r\n ctx.strokeRect(0, 0, canvas.width, canvas.height);\r\n }\r\n\r\n // 初始化色库下拉选项的颜色条\r\n initLibraryColorBars() {\r\n this.renderLibraryColorBar(this.defaultColorBar, [\r\n { color: '#0000FF', pos: 0 },\r\n { color: '#0080FF', pos: 0.2 },\r\n { color: '#00FFFF', pos: 0.4 },\r\n { color: '#00FF00', pos: 0.6 },\r\n { color: '#FFFF00', pos: 0.8 },\r\n { color: '#FF0000', pos: 1 }\r\n ]);\r\n\r\n this.renderLibraryColorBar(this.BlkWhiCltColorBar, [\r\n { color: '#000000', pos: 0 },\r\n { color: '#666666', pos: 0.25 },\r\n { color: '#999999', pos: 0.5 },\r\n { color: '#CCCCCC', pos: 0.75 },\r\n { color: '#FFFFFF', pos: 1 }\r\n ]);\r\n\r\n this.renderLibraryColorBar(this.BlkWhiYlwColorBar, [\r\n { color: '#000000', pos: 0 },\r\n { color: '#888800', pos: 0.33 },\r\n { color: '#FFFF00', pos: 0.66 },\r\n { color: '#FFFFFF', pos: 1 }\r\n ]);\r\n\r\n this.renderLibraryColorBar(this.BluWhiCltColorBar, [\r\n { color: '#00008B', pos: 0 },\r\n { color: '#1E90FF', pos: 0.25 },\r\n { color: '#87CEFA', pos: 0.5 },\r\n { color: '#E0FFFF', pos: 0.75 },\r\n { color: '#FFFFFF', pos: 1 }\r\n ]);\r\n }\r\n\r\n // 渲染单个色库选项的颜色条\r\n renderLibraryColorBar(container, colorStops) {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = 190; // 匹配加宽的option-color-bar\r\n canvas.height = 22; // 匹配加高的option-color-bar\r\n canvas.style.width = '100%';\r\n canvas.style.height = '100%';\r\n container.innerHTML = '';\r\n container.appendChild(canvas);\r\n\r\n const ctx = canvas.getContext('2d');\r\n const gradient = ctx.createLinearGradient(0, 0, canvas.width, 0);\r\n\r\n colorStops.forEach(stop => {\r\n gradient.addColorStop(stop.pos, stop.color);\r\n });\r\n\r\n ctx.fillStyle = gradient;\r\n ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n ctx.strokeStyle = '#ccc';\r\n ctx.lineWidth = 1;\r\n ctx.strokeRect(0, 0, canvas.width, canvas.height);\r\n }\r\n\r\n // 计算增量默认值\r\n calculateDefaultStep(min, max, count) {\r\n return Math.max(1, (max - min) / Math.max(2, count));\r\n }\r\n\r\n // 生成随机HEX颜色\r\n generateRandomColor() {\r\n const letters = '0123456789ABCDEF';\r\n let color = '#';\r\n for (let i = 0; i < 6; i++) {\r\n color += letters[Math.floor(Math.random() * 16)];\r\n }\r\n return color;\r\n }\r\n\r\n // 根据个数/增量模式计算标注步长\r\n calculateStepByRangeMode(min, max) {\r\n const { rangeMode, rangeCount, rangeStep } = this.state;\r\n\r\n if (rangeMode === 'count') {\r\n return (max - min) / (Math.max(2, rangeCount) - 1);\r\n } else {\r\n return Math.max(1, rangeStep);\r\n }\r\n }\r\n\r\n // 计算离散模式下的块数量\r\n calculateDiscreteBlockCount(min, max) {\r\n const { rangeMode, rangeCount, rangeStep } = this.state;\r\n\r\n if (rangeMode === 'count') {\r\n return Math.max(2, rangeCount);\r\n } else {\r\n return Math.max(2, Math.ceil((max - min) / Math.max(1, rangeStep)));\r\n }\r\n }\r\n\r\n // 动态计算合理的标注步长\r\n calculateOptimalStep(min, max) {\r\n if (this.state.rangeMode) {\r\n return this.calculateStepByRangeMode(min, max);\r\n }\r\n\r\n const range = max - min;\r\n const targetLabels = 16;\r\n let step = Math.pow(10, Math.floor(Math.log10(range / targetLabels)));\r\n\r\n const steps = [step, step * 2, step * 5, step * 10];\r\n let optimalStep = step;\r\n for (const s of steps) {\r\n if (range / s <= targetLabels + 2) {\r\n optimalStep = s;\r\n break;\r\n }\r\n }\r\n\r\n return optimalStep;\r\n }\r\n\r\n // 【新增】打开颜色选择器\r\n openColorPicker(x, y) {\r\n // 如果已打开,先关闭\r\n if (this.colorPickerState.isOpen) {\r\n this.closeColorPicker();\r\n }\r\n\r\n // 创建ColorPicker DOM\r\n const picker = document.createElement('div');\r\n picker.className = 'color-picker-modal';\r\n\r\n // ========== 修正后的边界检测逻辑 ==========\r\n // 弹窗实际尺寸(和CSS定义一致)\r\n const pickerWidth = 280;\r\n const pickerHeight = 320;\r\n\r\n // 获取浏览器视口尺寸\r\n const viewportWidth = window.innerWidth;\r\n const viewportHeight = window.innerHeight;\r\n\r\n // 基础位置:优先显示在鼠标右下方,避免遮挡点击位置\r\n let left = x + 10;\r\n let top = y + 10;\r\n\r\n // 右边界修正:如果超出右侧,就显示在鼠标左侧\r\n if (left + pickerWidth > viewportWidth) {\r\n left = x - pickerWidth - 10;\r\n // 确保左边界不小于0\r\n left = Math.max(10, left);\r\n }\r\n\r\n // 下边界修正:如果超出底部,就显示在鼠标上方\r\n if (top + pickerHeight > viewportHeight) {\r\n top = y - pickerHeight - 10;\r\n // 确保上边界不小于0\r\n top = Math.max(10, top);\r\n }\r\n\r\n // 最终兜底:确保弹窗完全在视口内\r\n left = Math.min(left, viewportWidth - pickerWidth - 10);\r\n top = Math.min(top, viewportHeight - pickerHeight - 10);\r\n\r\n // 应用位置\r\n picker.style.left = `${left}px`;\r\n picker.style.top = `${top}px`;\r\n // ========== 边界检测结束 ==========\r\n\r\n // 生成当前颜色的HEX值\r\n const currentColor = chroma.hsl(\r\n this.colorPickerState.hue,\r\n this.colorPickerState.saturation,\r\n this.colorPickerState.lightness\r\n ).hex();\r\n\r\n // ColorPicker HTML结构(保持不变)\r\n picker.innerHTML = `\r\n <div class=\"color-picker-header\">\r\n <div class=\"color-picker-title\">选择颜色</div>\r\n <div class=\"color-picker-close\" id=\"cp-close\">✕</div>\r\n </div>\r\n <div class=\"color-picker-body\">\r\n <div class=\"color-picker-spectrum\" id=\"cp-spectrum\">\r\n <div class=\"color-picker-spectrum-gradient\"></div>\r\n <div class=\"color-picker-spectrum-handle\" id=\"cp-spectrum-handle\" \r\n style=\"left: ${this.colorPickerState.saturation * 100}%; top: ${(1 - this.colorPickerState.lightness) * 100}%; background: ${currentColor}\"></div>\r\n </div>\r\n <div class=\"color-picker-hue\" id=\"cp-hue\">\r\n <div class=\"color-picker-hue-handle\" id=\"cp-hue-handle\" \r\n style=\"left: ${(this.colorPickerState.hue / 360) * 100}%\"></div>\r\n </div>\r\n <div class=\"color-picker-input\">\r\n <input type=\"text\" id=\"cp-input\" value=\"${currentColor}\" maxlength=\"7\">\r\n <div class=\"color-picker-preview\" id=\"cp-preview\" style=\"background: ${currentColor}\"></div>\r\n </div>\r\n </div>\r\n <div class=\"color-picker-footer\">\r\n <button class=\"color-picker-btn color-picker-btn-cancel\" id=\"cp-cancel\">取消</button>\r\n <button class=\"color-picker-btn color-picker-btn-confirm\" id=\"cp-confirm\">确认</button>\r\n </div>\r\n `;\r\n\r\n // 剩余代码完全保持不变(添加到shadow DOM、绑定事件等)\r\n this.shadowRoot.appendChild(picker);\r\n this.colorPickerState.pickerElement = picker;\r\n this.colorPickerState.isOpen = true;\r\n\r\n\r\n // 获取ColorPicker元素\r\n const spectrum = picker.querySelector('#cp-spectrum');\r\n const spectrumHandle = picker.querySelector('#cp-spectrum-handle');\r\n const hueBar = picker.querySelector('#cp-hue');\r\n const hueHandle = picker.querySelector('#cp-hue-handle');\r\n const colorInput = picker.querySelector('#cp-input');\r\n const preview = picker.querySelector('#cp-preview');\r\n const closeBtn = picker.querySelector('#cp-close');\r\n const cancelBtn = picker.querySelector('#cp-cancel');\r\n const confirmBtn = picker.querySelector('#cp-confirm');\r\n const _this = this;\r\n\r\n // 更新色域背景色(根据当前色相)\r\n const updateSpectrumBg = () => {\r\n const hueColor = chroma.hsl(_this.colorPickerState.hue, 1, 0.5).hex();\r\n spectrum.style.background = hueColor;\r\n };\r\n updateSpectrumBg();\r\n\r\n // 更新颜色预览和输入框\r\n const updateColorPreview = () => {\r\n const hex = chroma.hsl(\r\n _this.colorPickerState.hue,\r\n _this.colorPickerState.saturation,\r\n _this.colorPickerState.lightness\r\n ).hex();\r\n colorInput.value = hex;\r\n preview.style.background = hex;\r\n spectrumHandle.style.background = hex;\r\n };\r\n\r\n // 色域拖拽逻辑\r\n spectrum.addEventListener('mousedown', (e) => {\r\n _this.colorPickerState.isDraggingSpectrum = true;\r\n const rect = spectrum.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n // 计算饱和度和亮度\r\n _this.colorPickerState.saturation = Math.max(0, Math.min(1, x / rect.width));\r\n _this.colorPickerState.lightness = Math.max(0, Math.min(1, 1 - (y / rect.height)));\r\n // 更新手柄位置和颜色\r\n spectrumHandle.style.left = `${_this.colorPickerState.saturation * 100}%`;\r\n spectrumHandle.style.top = `${(1 - _this.colorPickerState.lightness) * 100}%`;\r\n updateColorPreview();\r\n });\r\n\r\n // 色相条拖拽逻辑\r\n hueBar.addEventListener('mousedown', (e) => {\r\n _this.colorPickerState.isDraggingHue = true;\r\n const rect = hueBar.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n // 计算色相\r\n _this.colorPickerState.hue = Math.max(0, Math.min(360, (x / rect.width) * 360));\r\n // 更新手柄位置\r\n hueHandle.style.left = `${(x / rect.width) * 100}%`;\r\n updateSpectrumBg();\r\n updateColorPreview();\r\n });\r\n\r\n // 全局鼠标移动事件\r\n document.addEventListener('mousemove', (e) => {\r\n // 拖拽色域\r\n if (_this.colorPickerState.isDraggingSpectrum) {\r\n const rect = spectrum.getBoundingClientRect();\r\n const x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\r\n const y = Math.max(0, Math.min(rect.height, e.clientY - rect.top));\r\n _this.colorPickerState.saturation = x / rect.width;\r\n _this.colorPickerState.lightness = 1 - (y / rect.height);\r\n spectrumHandle.style.left = `${_this.colorPickerState.saturation * 100}%`;\r\n spectrumHandle.style.top = `${(1 - _this.colorPickerState.lightness) * 100}%`;\r\n updateColorPreview();\r\n }\r\n\r\n // 拖拽色相\r\n if (_this.colorPickerState.isDraggingHue) {\r\n const rect = hueBar.getBoundingClientRect();\r\n const x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\r\n _this.colorPickerState.hue = (x / rect.width) * 360;\r\n hueHandle.style.left = `${(x / rect.width) * 100}%`;\r\n updateSpectrumBg();\r\n updateColorPreview();\r\n }\r\n });\r\n\r\n // 全局鼠标松开事件\r\n document.addEventListener('mouseup', () => {\r\n _this.colorPickerState.isDraggingSpectrum = false;\r\n _this.colorPickerState.isDraggingHue = false;\r\n });\r\n\r\n // 输入框事件\r\n colorInput.addEventListener('input', (e) => {\r\n const value = e.target.value.trim();\r\n // 验证HEX颜色格式\r\n if (/^#([0-9A-Fa-f]{6})$/.test(value)) {\r\n try {\r\n const hsl = chroma(value).hsl();\r\n _this.colorPickerState.hue = hsl[0];\r\n _this.colorPickerState.saturation = hsl[1];\r\n _this.colorPickerState.lightness = hsl[2];\r\n // 更新手柄位置\r\n spectrumHandle.style.left = `${_this.colorPickerState.saturation * 100}%`;\r\n spectrumHandle.style.top = `${(1 - _this.colorPickerState.lightness) * 100}%`;\r\n hueHandle.style.left = `${(_this.colorPickerState.hue / 360) * 100}%`;\r\n updateSpectrumBg();\r\n preview.style.background = value;\r\n } catch (err) {\r\n _this.showErrorMessage('无效的颜色值');\r\n }\r\n }\r\n });\r\n\r\n // 关闭按钮\r\n closeBtn.addEventListener('click', () => {\r\n _this.closeColorPicker();\r\n });\r\n\r\n // 取消按钮\r\n cancelBtn.addEventListener('click', () => {\r\n _this.closeColorPicker();\r\n });\r\n\r\n // 确认按钮\r\n confirmBtn.addEventListener('click', () => {\r\n const hex = colorInput.value.trim();\r\n if (/^#([0-9A-Fa-f]{6})$/.test(hex)) {\r\n // 更新目标色块颜色\r\n _this.colorPickerState.targetStop.color = hex;\r\n // 重新渲染\r\n _this.renderPanelColorbar();\r\n _this.renderColorBarPreview();\r\n // 关闭选择器\r\n _this.closeColorPicker();\r\n } else {\r\n _this.showErrorMessage('请输入有效的HEX颜色值(如#FF0000)');\r\n }\r\n });\r\n this.clickOutsideHandler = clickOutside;\r\n // 点击选择器外部关闭\r\n const clickOutside = function (e) {\r\n if (_this.colorPickerState.pickerElement && !_this.colorPickerState.pickerElement.contains(e.target)) {\r\n _this.closeColorPicker();\r\n document.removeEventListener('click', clickOutside);\r\n }\r\n };\r\n document.addEventListener('click', clickOutside);\r\n }\r\n\r\n // 【新增】关闭颜色选择器\r\n closeColorPicker() {\r\n // 移除全局clickOutside事件\r\n document.removeEventListener('click', this.clickOutsideHandler);\r\n\r\n if (this.colorPickerState.pickerElement) {\r\n this.shadowRoot.removeChild(this.colorPickerState.pickerElement);\r\n }\r\n this.colorPickerState = {\r\n ...this.colorPickerState,\r\n isOpen: false,\r\n pickerElement: null,\r\n isDraggingHue: false,\r\n isDraggingSpectrum: false\r\n };\r\n }\r\n\r\n // 事件绑定\r\n bindEvents() {\r\n // ========== 新增:绑定导入/保存按钮事件 ==========\r\n this.importLibBtn = this.shadowRoot.getElementById('importLib');\r\n this.saveLibBtn = this.shadowRoot.getElementById('saveLib');\r\n\r\n // 保存按钮点击事件\r\n this.saveLibBtn.addEventListener('click', () => {\r\n this.exportColorScaleToTxt();\r\n });\r\n\r\n // 导入按钮点击事件\r\n this.importLibBtn.addEventListener('click', () => {\r\n // 创建隐藏的文件选择器\r\n const fileInput = document.createElement('input');\r\n fileInput.type = 'file';\r\n fileInput.accept = '.txt';\r\n\r\n // 文件选择事件\r\n fileInput.addEventListener('change', (e) => {\r\n const file = e.target.files[0];\r\n if (file) {\r\n this.importColorScaleFromTxt(file);\r\n }\r\n });\r\n\r\n // 触发文件选择对话框\r\n fileInput.click();\r\n });\r\n\r\n const _this = this;\r\n\r\n this.colorBarPreview.addEventListener('dblclick', (e) => {\r\n e.stopPropagation();\r\n this.state.panelVisible = true;\r\n // 新增这一行:打开面板时重新保存当前状态作为取消的恢复基准\r\n this.saveOriginalState();\r\n this.settingPanel.classList.add('active');\r\n this.updatePanelPosition();\r\n });\r\n\r\n // 面板拖拽\r\n let isDraggingPanel = false;\r\n let startX, startY;\r\n let initialTop, initialRight;\r\n\r\n this.panelHandle.addEventListener('mousedown', (e) => {\r\n isDraggingPanel = true;\r\n startX = e.clientX;\r\n startY = e.clientY;\r\n initialTop = this.state.panelPosition.top;\r\n initialRight = this.state.panelPosition.right;\r\n this.panelHandle.style.background = '#e0e0e0';\r\n document.body.style.cursor = 'move';\r\n });\r\n\r\n document.addEventListener('mousemove', (e) => {\r\n if (!isDraggingPanel) return;\r\n const deltaX = e.clientX - startX;\r\n const deltaY = e.clientY - startY;\r\n this.state.panelPosition = {\r\n top: initialTop + deltaY,\r\n right: initialRight - deltaX\r\n };\r\n this.updatePanelPosition();\r\n });\r\n\r\n document.addEventListener('mouseup', () => {\r\n if (isDraggingPanel) {\r\n isDraggingPanel = false;\r\n this.panelHandle.style.background = '#f0f0f0';\r\n document.body.style.cursor = '';\r\n }\r\n });\r\n\r\n // 范围设置\r\n this.setRangeBtn.addEventListener('click', () => {\r\n const min = Number(this.minInput.value);\r\n const max = Number(this.maxInput.value);\r\n if (isNaN(min) || isNaN(max) || min >= max) {\r\n this.showErrorMessage('请输入有效范围(最小值 < 最大值)');\r\n return;\r\n }\r\n\r\n if (this.state.rangeMode === 'count') {\r\n const count = Number(this.rangeCountInput.value);\r\n if (isNaN(count) || count < 2) {\r\n this.showErrorMessage('个数必须是大于等于2的数字');\r\n this.rangeCountInput.value = this.state.rangeCount;\r\n return;\r\n }\r\n this.state.rangeCount = count;\r\n\r\n const newStep = this.calculateDefaultStep(min, max, count);\r\n this.state.rangeStep = newStep;\r\n this.rangeStepInput.value = newStep;\r\n } else {\r\n const step = Number(this.rangeStepInput.value);\r\n if (isNaN(step) || step < 1) {\r\n this.showErrorMessage('增量必须是大于等于1的数字');\r\n this.rangeStepInput.value = this.state.rangeStep;\r\n return;\r\n }\r\n this.state.rangeStep = step;\r\n }\r\n\r\n this.state.min = min;\r\n this.state.max = max;\r\n\r\n this.state.step = this.calculateOptimalStep(min, max);\r\n\r\n this.state.stops = this.state.originalStopRatios.map((ratio, index) => {\r\n return {\r\n value: min + (max - min) * ratio,\r\n color: this.state.stops[index]?.color || this.state.stops[0].color\r\n };\r\n });\r\n\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n });\r\n\r\n // 个数/增量模式切换事件\r\n this.rangeModeRadios.forEach(radio => {\r\n radio.addEventListener('change', (e) => {\r\n const mode = e.target.id === 'countMode' ? 'count' : 'step';\r\n this.state.rangeMode = mode;\r\n\r\n if (mode === 'count') {\r\n this.rangeCountInput.disabled = false;\r\n this.rangeCountInput.classList.remove('input-disabled');\r\n this.rangeStepInput.disabled = true;\r\n this.rangeStepInput.classList.add('input-disabled');\r\n } else {\r\n this.rangeCountInput.disabled = true;\r\n this.rangeCountInput.classList.add('input-disabled');\r\n this.rangeStepInput.disabled = false;\r\n this.rangeStepInput.classList.remove('input-disabled');\r\n }\r\n\r\n if (this.state.min < this.state.max) {\r\n this.state.step = this.calculateStepByRangeMode(this.state.min, this.state.max);\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n }\r\n });\r\n });\r\n\r\n // 个数输入框变更事件\r\n this.rangeCountInput.addEventListener('change', (e) => {\r\n const val = Number(e.target.value);\r\n if (!isNaN(val) && val >= 2) {\r\n this.state.rangeCount = val;\r\n\r\n if (this.state.min < this.state.max) {\r\n const newStep = this.calculateDefaultStep(this.state.min, this.state.max, val);\r\n this.state.rangeStep = newStep;\r\n this.rangeStepInput.value = newStep;\r\n }\r\n } else {\r\n this.showErrorMessage('个数必须是大于等于2的数字');\r\n e.target.value = this.state.rangeCount;\r\n }\r\n if (this.state.min < this.state.max) {\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n }\r\n });\r\n\r\n // 增量输入框变更事件\r\n this.rangeStepInput.addEventListener('change', (e) => {\r\n const val = Number(e.target.value);\r\n if (!isNaN(val) && val >= 1) {\r\n this.state.rangeStep = val;\r\n } else {\r\n this.showErrorMessage('增量必须是大于等于1的数字');\r\n e.target.value = this.state.rangeStep;\r\n }\r\n if (this.state.min < this.state.max) {\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n }\r\n });\r\n\r\n // 其他事件绑定\r\n this.displayModeRadios.forEach(radio => {\r\n radio.addEventListener('change', (e) => {\r\n this.state.displayMode = e.target.id;\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n });\r\n });\r\n\r\n this.labelTypeRadios.forEach(radio => {\r\n radio.addEventListener('change', (e) => {\r\n this.state.labelType = e.target.id;\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n });\r\n });\r\n\r\n this.precisionInput.addEventListener('change', (e) => {\r\n let val = Number(e.target.value);\r\n if (isNaN(val)) {\r\n val = 1;\r\n e.target.value = 1;\r\n } else if (val < 1) {\r\n val = 1;\r\n e.target.value = 1;\r\n } else if (val > 10) {\r\n val = 10;\r\n e.target.value = 10;\r\n }\r\n this.state.precision = val;\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n });\r\n\r\n this.scientificCheckbox.addEventListener('change', (e) => {\r\n this.state.scientific = e.target.checked;\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n });\r\n\r\n // 色库下拉框事件\r\n this.librarySelectContainer.addEventListener('click', (e) => {\r\n e.stopPropagation();\r\n this.libraryOptions.style.display = this.libraryOptions.style.display === 'block' ? 'none' : 'block';\r\n });\r\n\r\n document.addEventListener('click', () => {\r\n this.libraryOptions.style.display = 'none';\r\n });\r\n\r\n this.libraryOptionItems.forEach(item => {\r\n item.addEventListener('click', (e) => {\r\n e.stopPropagation();\r\n const value = item.dataset.value;\r\n this.colorLibrarySelect.value = value;\r\n this.state.colorLibrary = value;\r\n\r\n this.renderSelectedColorBar(value);\r\n\r\n this.updateLibraryStops(value);\r\n\r\n this.libraryOptions.style.display = 'none';\r\n\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n });\r\n\r\n item.addEventListener('mouseenter', () => {\r\n item.style.background = '#f5f5f5';\r\n });\r\n item.addEventListener('mouseleave', () => {\r\n item.style.background = 'white';\r\n });\r\n });\r\n\r\n this.colorLibrarySelect.addEventListener('change', (e) => {\r\n const lib = e.target.value;\r\n this.state.colorLibrary = lib;\r\n\r\n this.renderSelectedColorBar(lib);\r\n\r\n this.updateLibraryStops(lib);\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n });\r\n\r\n // 移除了addToLibCheckbox的change事件绑定\r\n\r\n this.resetBtn.addEventListener('click', () => {\r\n const resetMin = this.initialMin;\r\n const resetMax = this.initialMax;\r\n const resetCount = 16;\r\n const resetStep = this.calculateDefaultStep(resetMin, resetMax, resetCount);\r\n\r\n this.state = {\r\n ...this.state,\r\n min: resetMin,\r\n max: resetMax,\r\n start: 0,\r\n step: 4000,\r\n displayMode: 'continuous',\r\n labelType: 'integer',\r\n precision: 1,\r\n scientific: false,\r\n colorLibrary: 'default',\r\n // 移除了addToLib的重置\r\n rangeMode: 'count',\r\n rangeCount: resetCount,\r\n rangeStep: resetStep,\r\n // 修改:重置时的originalStopRatios也改为default比例\r\n originalStopRatios: [0, 0.2, 0.4, 0.6, 0.8, 1],\r\n // 修改:重置时的stops也基于比例计算\r\n stops: [\r\n { value: resetMin + (resetMax - resetMin) * 0, color: '#0000FF' },\r\n { value: resetMin + (resetMax - resetMin) * 0.2, color: '#0080FF' },\r\n { value: resetMin + (resetMax - resetMin) * 0.4, color: '#00FFFF' },\r\n { value: resetMin + (resetMax - resetMin) * 0.6, color: '#00FF00' },\r\n { value: resetMin + (resetMax - resetMin) * 0.8, color: '#FFFF00' },\r\n { value: resetMin + (resetMax - resetMin) * 1, color: '#FF0000' }\r\n ]\r\n };\r\n this.minInput.value = resetMin;\r\n this.maxInput.value = resetMax;\r\n this.displayModeRadios[0].checked = true;\r\n this.labelTypeRadios[0].checked = true;\r\n this.precisionInput.value = 1;\r\n this.scientificCheckbox.checked = false;\r\n this.colorLibrarySelect.value = 'default';\r\n // 移除了addToLibCheckbox的重置\r\n this.rangeModeRadios[0].checked = true;\r\n this.rangeCountInput.value = resetCount;\r\n this.rangeStepInput.value = resetStep;\r\n this.rangeCountInput.disabled = false;\r\n this.rangeCountInput.classList.remove('input-disabled');\r\n this.rangeStepInput.disabled = true;\r\n this.rangeStepInput.classList.add('input-disabled');\r\n\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n });\r\n\r\n this.confirmBtn.addEventListener('click', () => {\r\n this.saveOriginalState();\r\n this.state.panelVisible = false;\r\n this.settingPanel.classList.remove('active');\r\n this.dispatchEvent(new CustomEvent('scaleConfirm', {\r\n detail: JSON.parse(JSON.stringify(this.state)),\r\n bubbles: true,\r\n composed: true\r\n }));\r\n });\r\n\r\n this.cancelBtn.addEventListener('click', () => {\r\n if (this.state.originalState) {\r\n this.state = JSON.parse(JSON.stringify(this.state.originalState));\r\n this.minInput.value = this.state.min;\r\n this.maxInput.value = this.state.max;\r\n this.displayModeRadios.forEach(radio => {\r\n radio.checked = radio.id === this.state.displayMode;\r\n });\r\n this.labelTypeRadios.forEach(radio => {\r\n radio.checked = radio.id === this.state.labelType;\r\n });\r\n this.precisionInput.value = this.state.precision;\r\n this.scientificCheckbox.checked = this.state.scientific;\r\n this.colorLibrarySelect.value = this.state.colorLibrary;\r\n // 移除了addToLibCheckbox的重置\r\n this.rangeModeRadios.forEach(radio => {\r\n radio.checked = (radio.id === 'countMode' && this.state.rangeMode === 'count') ||\r\n (radio.id === 'stepMode' && this.state.rangeMode === 'step');\r\n });\r\n this.rangeCountInput.value = this.state.rangeCount;\r\n this.rangeStepInput.value = this.state.rangeStep;\r\n this.rangeCountInput.disabled = this.state.rangeMode !== 'count';\r\n this.rangeStepInput.disabled = this.state.rangeMode !== 'step';\r\n if (this.state.rangeMode === 'count') {\r\n this.rangeCountInput.classList.remove('input-disabled');\r\n this.rangeStepInput.classList.add('input-disabled');\r\n } else {\r\n this.rangeCountInput.classList.add('input-disabled');\r\n this.rangeStepInput.classList.remove('input-disabled');\r\n }\r\n\r\n this.updatePanelPosition();\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n }\r\n this.state.panelVisible = false;\r\n this.settingPanel.classList.remove('active');\r\n });\r\n\r\n this.applyBtn.addEventListener('click', () => {\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n this.dispatchEvent(new CustomEvent('scaleApply', {\r\n detail: JSON.parse(JSON.stringify(this.state)),\r\n bubbles: true,\r\n composed: true\r\n }));\r\n });\r\n\r\n // 双击新增色块\r\n this.panelColorbar.addEventListener('dblclick', function (e) {\r\n if (_this.state.displayMode !== 'continuous') return;\r\n\r\n e.stopPropagation();\r\n\r\n const rect = this.getBoundingClientRect();\r\n const y = e.clientY - rect.top;\r\n const clickValue = _this.getValueFromY(y);\r\n\r\n const tolerance = (_this.state.max - _this.state.min) * 0.03;\r\n const targetIndex = _this.state.stops.findIndex(stop =>\r\n Math.abs(stop.value - clickValue) < tolerance\r\n );\r\n\r\n if (targetIndex !== -1) {\r\n if (_this.state.stops.length > 2) {\r\n // 直接删除,不再显示确认弹窗\r\n _this.state.stops.splice(targetIndex, 1);\r\n _this.state.originalStopRatios = _this.state.stops.map(stop => (stop.value - _this.state.min) / (_this.state.max - _this.state.min));\r\n _this.renderPanelColorbar();\r\n _this.renderColorBarPreview();\r\n } else {\r\n // 使用自定义错误提示替代alert\r\n _this.showErrorMessage('至少需要保留2个色块以保证渐变效果,请不要删除最后2个色块!');\r\n }\r\n } else {\r\n const newColor = _this.generateRandomColor();\r\n\r\n _this.state.stops.push({ value: clickValue, color: newColor });\r\n _this.state.stops.sort((a, b) => a.value - b.value);\r\n _this.state.originalStopRatios = _this.state.stops.map(stop => (stop.value - _this.state.min) / (_this.state.max - _this.state.min));\r\n _this.renderPanelColorbar();\r\n _this.renderColorBarPreview();\r\n\r\n // 移除了alert弹窗,实现直接添加\r\n // alert(`已新增色块,值:${_this.formatNumber(clickValue)},颜色:${newColor}`);\r\n }\r\n });\r\n\r\n // 右键点击颜色块修改颜色(替换为Antd风格ColorPicker)\r\n this.panelColorbar.addEventListener('contextmenu', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n const rect = this.getBoundingClientRect();\r\n const y = e.clientY - rect.top;\r\n const clickValue = _this.getValueFromY(y);\r\n\r\n const tolerance = (_this.state.max - _this.state.min) * 0.03;\r\n const targetStop = _this.state.stops.find(stop => Math.abs(stop.value - clickValue) < tolerance);\r\n\r\n if (targetStop) {\r\n // 初始化ColorPicker状态\r\n _this.colorPickerState.targetStop = targetStop;\r\n // 将目标颜色转换为HSL\r\n const hsl = chroma(targetStop.color).hsl();\r\n _this.colorPickerState.hue = hsl[0];\r\n _this.colorPickerState.saturation = hsl[1];\r\n _this.colorPickerState.lightness = hsl[2];\r\n\r\n // 打开ColorPicker\r\n _this.openColorPicker(e.clientX, e.clientY);\r\n }\r\n });\r\n\r\n // 色块拖拽逻辑\r\n this.panelColorbar.addEventListener('mousedown', (e) => {\r\n if (this.state.displayMode !== 'continuous') return;\r\n\r\n const rect = this.panelColorbar.getBoundingClientRect();\r\n const y = e.clientY - rect.top;\r\n this.dragState.draggingStopIndex = this.findClosestStop(y);\r\n\r\n if (this.dragState.draggingStopIndex !== -1) {\r\n this.dragState.isDragging = true;\r\n this.dragState.dragStartY = e.clientY;\r\n this.dragState.dragStartValue = this.state.stops[this.dragState.draggingStopIndex].value;\r\n this.dragState.canvasRect = this.panelColorbar.getBoundingClientRect();\r\n\r\n document.body.style.cursor = 'ns-resize';\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n document.addEventListener('mousemove', (e) => {\r\n if (!this.dragState.isDragging || this.dragState.draggingStopIndex === -1) return;\r\n\r\n const y = e.clientY - this.dragState.canvasRect.top;\r\n const newValue = this.getValueFromY(y);\r\n\r\n const { min, max, stops } = this.state;\r\n const currentStop = stops[this.dragState.draggingStopIndex];\r\n\r\n const sortedStops = [...stops].sort((a, b) => a.value - b.value);\r\n const currentIndexInSorted = sortedStops.findIndex(s =>\r\n Math.abs(s.value - currentStop.value) < 1\r\n );\r\n\r\n let clampedValue = newValue;\r\n if (currentIndexInSorted > 0) {\r\n clampedValue = Math.max(sortedStops[currentIndexInSorted - 1].value + 1, clampedValue);\r\n } else {\r\n clampedValue = Math.max(min, clampedValue);\r\n }\r\n\r\n if (currentIndexInSorted < sortedStops.length - 1) {\r\n clampedValue = Math.min(sortedStops[currentIndexInSorted + 1].value - 1, clampedValue);\r\n } else {\r\n clampedValue = Math.min(max, clampedValue);\r\n }\r\n\r\n stops[this.dragState.draggingStopIndex].value = clampedValue;\r\n this.state.originalStopRatios = this.state.stops.map(stop => (stop.value - min) / (max - min));\r\n\r\n this.renderPanelColorbar();\r\n this.renderColorBarPreview();\r\n });\r\n\r\n document.addEventListener('mouseup', () => {\r\n if (this.dragState.isDragging) {\r\n this.dragState = {\r\n isDragging: false,\r\n draggingStopIndex: -1,\r\n dragStartY: 0,\r\n dragStartValue: 0,\r\n canvasRect: null\r\n };\r\n\r\n document.body.style.cursor = '';\r\n }\r\n });\r\n\r\n document.addEventListener('mouseleave', () => {\r\n if (this.dragState.isDragging) {\r\n document.dispatchEvent(new MouseEvent('mouseup'));\r\n }\r\n });\r\n }\r\n\r\n // 更新色库对应的色标配置\r\n // 更新色库对应的色标配置\r\n updateLibraryStops(lib) {\r\n const { min, max } = this.state;\r\n\r\n // 优先处理自定义色库\r\n if (this.customColorLibs && this.customColorLibs[lib]) {\r\n const customLib = this.customColorLibs[lib];\r\n this.state.originalStopRatios = customLib.ratios;\r\n // 关键:根据当前的min/max重新计算value,而不是使用保存的旧值\r\n this.state.stops = customLib.stops.map((stop, index) => ({\r\n value: min + (max - min) * customLib.ratios[index],\r\n color: stop.color\r\n }));\r\n return;\r\n }\r\n\r\n // 原有内置色库逻辑保持不变\r\n switch (lib) {\r\n case 'default':\r\n this.state.originalStopRatios = [0, 0.2, 0.4, 0.6, 0.8, 1];\r\n this.state.stops = [\r\n { value: min, color: '#0000FF' },\r\n { value: min + (max - min) * 0.2, color: '#0080FF' },\r\n { value: min + (max - min) * 0.4, color: '#00FFFF' },\r\n { value: min + (max - min) * 0.6, color: '#00FF00' },\r\n { value: min + (max - min) * 0.8, color: '#FFFF00' },\r\n { value: max, color: '#FF0000' }\r\n ];\r\n break;\r\n case 'BlkWhiClt':\r\n this.state.originalStopRatios = [0, 0.25, 0.5, 0.75, 1];\r\n this.state.stops = [\r\n { value: min, color: '#000000' },\r\n { value: min + (max - min) * 0.25, color: '#666666' },\r\n { value: min + (max - min) * 0.5, color: '#999999' },\r\n { value: min + (max - min) * 0.75, color: '#CCCCCC' },\r\n { value: max, color: '#FFFFFF' }\r\n ];\r\n break;\r\n case 'BlkWhiYlw':\r\n this.state.originalStopRatios = [0, 0.33, 0.66, 1];\r\n this.state.stops = [\r\n { value: min, color: '#000000' },\r\n { value: min + (max - min) * 0.33, color: '#888800' },\r\n { value: min + (max - min) * 0.66, color: '#FFFF00' },\r\n { value: max, color: '#FFFFFF' }\r\n ];\r\n break;\r\n case 'BluWhiClt':\r\n this.state.originalStopRatios = [0, 0.25, 0.5, 0.75, 1];\r\n this.state.stops = [\r\n { value: min, color: '#00008B' },\r\n { value: min + (max - min) * 0.25, color: '#1E90FF' },\r\n { value: min + (max - min) * 0.5, color: '#87CEFA' },\r\n { value: min + (max - min) * 0.75, color: '#E0FFFF' },\r\n { value: max, color: '#FFFFFF' }\r\n ];\r\n break;\r\n }\r\n }\r\n\r\n // Y坐标转数值计算\r\n getValueFromY(y) {\r\n const { min, max } = this.state;\r\n const canvasHeight = 490;\r\n const usableHeight = 470;\r\n\r\n const clampedY = Math.max(10, Math.min(canvasHeight - 10, y));\r\n const percent = 1 - ((clampedY - 10) / usableHeight);\r\n return min + (max - min) * percent;\r\n }\r\n\r\n // 精准找到鼠标点击的stop索引\r\n findClosestStop(y) {\r\n const { stops, min, max } = this.state;\r\n if (stops.length === 0) return -1;\r\n\r\n const clickValue = this.getValueFromY(y);\r\n const tolerance = (max - min) * 0.03;\r\n\r\n let closestIndex = -1;\r\n let minDiff = Infinity;\r\n\r\n stops.forEach((stop, index) => {\r\n const diff = Math.abs(stop.value - clickValue);\r\n if (diff < minDiff && diff < tolerance) {\r\n minDiff = diff;\r\n closestIndex = index;\r\n }\r\n });\r\n\r\n return closestIndex;\r\n }\r\n\r\n // 更新面板位置\r\n updatePanelPosition() {\r\n this.settingPanel.style.top = `${this.state.panelPosition.top}px`;\r\n this.settingPanel.style.right = `${this.state.panelPosition.right}px`;\r\n }\r\n\r\n // 保存原始状态\r\n saveOriginalState() {\r\n this.state.originalState = JSON.parse(JSON.stringify(this.state));\r\n }\r\n\r\n // 格式化数字\r\n formatNumber(num) {\r\n const { labelType, precision, scientific } = this.state;\r\n if (scientific) {\r\n return num.toExponential(precision);\r\n }\r\n if (labelType === 'float') {\r\n return num.toFixed(precision);\r\n }\r\n return Math.round(num).toString();\r\n }\r\n\r\n // 渲染色条预览\r\n renderColorBarPreview() {\r\n const canvas = this.previewCanvas;\r\n const labelsContainer = this.valueLabels;\r\n const { min, max, step, stops, displayMode } = this.state;\r\n\r\n const containerHeight = this.colorBarPreview.clientHeight;\r\n canvas.width = 65; // 适配加宽的色条\r\n canvas.height = containerHeight;\r\n const ctx = canvas.getContext('2d');\r\n\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n if (displayMode === 'continuous') {\r\n const sortedStops = [...stops].sort((a, b) => a.value - b.value);\r\n const gradient = ctx.createLinearGradient(0, 0, 0, canvas.height);\r\n sortedStops.forEach(stop => {\r\n const percent = (stop.value - min) / (max - min);\r\n const reversedPercent = 1 - percent;\r\n gradient.addColorStop(reversedPercent, stop.color);\r\n });\r\n ctx.fillStyle = gradient;\r\n ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n labelsContainer.innerHTML = '';\r\n const usableHeight = containerHeight - 20;\r\n\r\n let currentVal = min;\r\n while (currentVal <= max) {\r\n const label = document.createElement('div');\r\n label.className = 'label-item';\r\n label.dataset.value = this.formatNumber(currentVal);\r\n label.textContent = this.formatNumber(currentVal);\r\n\r\n const percent = (currentVal - min) / (max - min);\r\n const pixelTop = 10 + (usableHeight * (1 - percent));\r\n\r\n label.style.position = 'absolute';\r\n label.style.top = `${pixelTop}px`;\r\n label.style.transform = 'translateY(-50%)';\r\n\r\n labelsContainer.appendChild(label);\r\n\r\n currentVal += step;\r\n }\r\n } else if (displayMode === 'discrete') {\r\n const blockCount = this.calculateDiscreteBlockCount(min, max);\r\n const blockHeight = containerHeight / blockCount;\r\n const discreteStep = (max - min) / blockCount;\r\n\r\n const colorScale = chroma.scale(\r\n stops.sort((a, b) => a.value - b.value).map(s => s.color)\r\n ).domain([min, max]);\r\n\r\n for (let i = 0; i < blockCount; i++) {\r\n const reversedIndex = blockCount - 1 - i;\r\n const blockStart = min + reversedIndex * discreteStep;\r\n const blockEnd = Math.min(blockStart + discreteStep, max);\r\n const blockMidValue = (blockStart + blockEnd) / 2;\r\n\r\n const y = i * blockHeight;\r\n const height = Math.min(blockHeight, containerHeight - y);\r\n\r\n const blockColor = colorScale(blockMidValue).hex();\r\n ctx.fillStyle = blockColor;\r\n ctx.fillRect(0, y, canvas.width, height);\r\n\r\n ctx.strokeStyle = '#ffffff';\r\n ctx.lineWidth = 1;\r\n ctx.strokeRect(0, y, canvas.width, height);\r\n }\r\n\r\n labelsContainer.innerHTML = '';\r\n for (let i = 0; i < blockCount; i++) {\r\n const reversedIndex = blockCount - 1 - i;\r\n const blockStart = min + reversedIndex * discreteStep;\r\n const blockEnd = Math.min(blockStart + discreteStep, max);\r\n const labelText = `${this.formatNumber(blockStart)}-${this.formatNumber(blockEnd)}`;\r\n\r\n const label = document.createElement('div');\r\n label.className = 'label-item';\r\n label.textContent = labelText;\r\n\r\n const pixelTop = i * blockHeight + blockHeight / 2;\r\n label.style.position = 'absolute';\r\n label.style.top = `${pixelTop}px`;\r\n label.style.transform = 'translateY(-50%)';\r\n\r\n labelsContainer.appendChild(label);\r\n }\r\n }\r\n }\r\n\r\n // 面板内色标渲染\r\n renderPanelColorbar() {\r\n const canvas = this.panelColorbar;\r\n const labelsContainer = this.colorbarLabels;\r\n const { min, max, step, stops, displayMode } = this.state;\r\n\r\n canvas.width = 100;\r\n canvas.height = 490;\r\n const ctx = canvas.getContext('2d');\r\n\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n ctx.imageSmoothingEnabled = false;\r\n\r\n if (displayMode === 'continuous') {\r\n const sortedStops = [...stops].sort((a, b) => a.value - b.value);\r\n const gradient = ctx.createLinearGradient(0, 10, 0, canvas.height - 10);\r\n sortedStops.forEach(stop => {\r\n const percent = (stop.value - min) / (max - min);\r\n const reversedPercent = 1 - percent;\r\n gradient.addColorStop(reversedPercent, stop.color);\r\n });\r\n\r\n ctx.fillStyle = gradient;\r\n ctx.fillRect(0, 10, 65, 470); // 适配加宽的色条\r\n\r\n sortedStops.forEach(stop => {\r\n const baseColor = stop.color && /^#([0-9A-Fa-f]{6})$/.test(stop.color)\r\n ? stop.color\r\n : '#0000FF';\r\n const fillColor = baseColor;\r\n\r\n const percent = (stop.value - min) / (max - min);\r\n const reversedPercent = 1 - percent;\r\n const y = 10 + 470 * reversedPercent;\r\n\r\n const barRightX = 65; // 适配加宽的色条\r\n const blockW = 16;\r\n const blockH = 12;\r\n const triangleW = 8;\r\n\r\n ctx.save();\r\n ctx.beginPath();\r\n ctx.moveTo(barRightX, y);\r\n ctx.lineTo(barRightX + triangleW, y - blockH / 2);\r\n ctx.lineTo(barRightX + triangleW + blockW, y - blockH / 2);\r\n ctx.lineTo(barRightX + triangleW + blockW, y + blockH / 2);\r\n ctx.lineTo(barRightX + triangleW, y + blockH / 2);\r\n ctx.closePath();\r\n\r\n ctx.fillStyle = fillColor;\r\n ctx.fill();\r\n\r\n ctx.strokeStyle = '#000000';\r\n ctx.lineWidth = 2;\r\n ctx.lineJoin = 'round';\r\n ctx.stroke();\r\n\r\n ctx.restore();\r\n });\r\n\r\n // 生成数值标签(使用动态计算的step)\r\n labelsContainer.innerHTML = '';\r\n const containerHeight = 490;\r\n\r\n // 修复:从min开始,按step递增,直到超过max\r\n let currentVal = min;\r\n while (currentVal <= max) {\r\n const percent = (currentVal - min) / (max - min);\r\n const pixelTop = 10 + 470 * (1 - percent); // 基数改为470\r\n\r\n const labelWrapper = document.createElement('div');\r\n labelWrapper.style.position = 'absolute';\r\n labelWrapper.style.top = `${pixelTop}px`;\r\n labelWrapper.style.transform = 'translateY(-50%)';\r\n labelWrapper.style.left = '0';\r\n\r\n // 移除数字左侧的marker元素\r\n const label = document.createElement('div');\r\n label.className = 'colorbar-label';\r\n label.textContent = this.formatNumber(currentVal);\r\n labelWrapper.appendChild(label);\r\n\r\n labelsContainer.appendChild(labelWrapper);\r\n\r\n // 增加步长,避免死循环\r\n currentVal += step;\r\n }\r\n } else if (displayMode === 'discrete') {\r\n // 离散显示:根据范围的个数/增量来计算块数量\r\n const blockCount = this.calculateDiscreteBlockCount(min, max);\r\n const discreteStep = (max - min) / blockCount;\r\n const blockHeight = 470 / blockCount; // 基于470px可用高度计算\r\n\r\n // 创建颜色比例尺(完全复用连续显示的颜色配置)\r\n const colorScale = chroma.scale(\r\n stops.sort((a, b) => a.value - b.value).map(s => s.color)\r\n ).domain([min, max]);\r\n\r\n // 绘制离散色块 - 反转顺序,最大值在上\r\n for (let i = 0; i < blockCount; i++) {\r\n // 反转索引:让最大值对应的色块显示在顶部\r\n const reversedIndex = blockCount - 1 - i;\r\n const blockStart = min + reversedIndex * discreteStep;\r\n const blockEnd = Math.min(blockStart + discreteStep, max);\r\n const blockMidValue = (blockStart + blockEnd) / 2;\r\n\r\n // 计算色块位置(高值在上,从顶部10px开始)\r\n const y = 10 + i * blockHeight;\r\n const height = Math.min(blockHeight, 470 - i * blockHeight);\r\n\r\n // 获取当前块的颜色(精准匹配连续渐变对应位置)\r\n const blockColor = colorScale(blockMidValue).hex();\r\n ctx.fillStyle = blockColor;\r\n ctx.fillRect(0, y, 60, height);\r\n\r\n // 绘制分隔线\r\n ctx.strokeStyle = '#ffffff';\r\n ctx.lineWidth = 1;\r\n ctx.strokeRect(0, y, 60, height);\r\n }\r\n\r\n // 渲染离散区间标签 - 根据个数/增量动态生成\r\n labelsContainer.innerHTML = '';\r\n for (let i = 0; i < blockCount; i++) {\r\n // 反转索引:让最大值对应的标签显示在顶部\r\n const reversedIndex = blockCount - 1 - i;\r\n const blockStart = min + reversedIndex * discreteStep;\r\n const blockEnd = Math.min(blockStart + discreteStep, max);\r\n const labelText = `${this.formatNumber(blockStart)}-${this.formatNumber(blockEnd)}`;\r\n\r\n const labelWrapper = document.createElement('div');\r\n const pixelTop = 10 + i * blockHeight + blockHeight / 2;\r\n labelWrapper.style.position = 'absolute';\r\n labelWrapper.style.top = `${pixelTop}px`;\r\n labelWrapper.style.transform = 'translateY(-50%)';\r\n labelWrapper.style.left = '0';\r\n\r\n const label = document.createElement('div');\r\n label.className = 'colorbar-label';\r\n label.textContent = labelText;\r\n labelWrapper.appendChild(label);\r\n\r\n labelsContainer.appendChild(labelWrapper);\r\n }\r\n }\r\n }\r\n\r\n // 对外暴露的获取颜色方法\r\n getColor(value) {\r\n // 处理数组输入\r\n if (Array.isArray(value)) {\r\n return value.map(val => this.getSingleColor(val));\r\n }\r\n // 处理单个数值输入\r\n return this.getSingleColor(value);\r\n }\r\n\r\n // ========== 新增:导出色条为TXT文件 ==========\r\n exportColorScaleToTxt() {\r\n const { min, max, stops, colorLibrary } = this.state;\r\n\r\n // 构造要保存的数据结构\r\n const colorScaleData = {\r\n name: `${colorLibrary}_${new Date().getTime()}`, // 生成唯一名称\r\n min: min,\r\n max: max,\r\n stops: stops.map(stop => ({\r\n value: stop.value,\r\n color: stop.color,\r\n ratio: (stop.value - min) / (max - min) // 保存比例,方便导入后适配新范围\r\n }))\r\n };\r\n\r\n // 转换为JSON字符串并格式化\r\n const jsonString = JSON.stringify(colorScaleData, null, 2);\r\n\r\n // 创建Blob对象(TXT格式)\r\n const blob = new Blob([jsonString], { type: 'text/plain' });\r\n\r\n // 创建下载链接\r\n const url = URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = `color_scale_${colorScaleData.name}.txt`;\r\n document.body.appendChild(a);\r\n\r\n // 触发下载\r\n a.click();\r\n\r\n // 清理\r\n setTimeout(() => {\r\n document.body.removeChild(a);\r\n URL.revokeObjectURL(url);\r\n }, 100);\r\n\r\n this.showSuccessMessage('色条数据已保存为TXT文件');\r\n }\r\n\r\n // ========== 新增:从TXT文件导入色条 ==========\r\n importColorScaleFromTxt(file) {\r\n return new Promise((resolve, reject) => {\r\n if (!file) {\r\n reject('未选择文件');\r\n return;\r\n }\r\n\r\n // 验证文件类型\r\n if (file.type !== 'text/plain' && !file.name.endsWith('.txt')) {\r\n this.showErrorMessage('请选择TXT格式的文件');\r\n reject('文件类型错误');\r\n return;\r\n }\r\n\r\n const reader = new FileReader();\r\n\r\n // 读取文件成功\r\n reader.onload = (e) => {\r\n try {\r\n // 解析JSON数据\r\n const colorScaleData = JSON.parse(e.target.result);\r\n\r\n // 验证数据结构\r\n if (!colorScaleData.name || !Array.isArray(colorScaleData.stops)) {\r\n this.showErrorMessage('TXT文件格式错误:缺少必要字段');\r\n reject('数据格式错误');\r\n return;\r\n }\r\n\r\n // 适配当前的min/max(使用保存的比例重新计算value)\r\n const { min, max } = this.state;\r\n const adaptedStops = colorScaleData.stops.map(stop => ({\r\n value: min + (max - min) * stop.ratio,\r\n color: stop.color\r\n }));\r\n\r\n // 生成唯一标识(避免重复)\r\n const uniqueKey = `custom_${Date.now()}`;\r\n const customLibName = colorScaleData.name || `自定义色条_${new Date().toLocaleString()}`;\r\n\r\n // 1. 添加到原生select\r\n const option = document.createElement('option');\r\n option.value = uniqueKey;\r\n option.textContent = customLibName;\r\n this.colorLibrarySelect.appendChild(option);\r\n\r\n // 2. 添加到自定义下拉选项\r\n const customOption = document.createElement('div');\r\n customOption.className = 'library-option';\r\n customOption.dataset.value = uniqueKey;\r\n customOption.innerHTML = `\r\n <div class=\"option-color-bar\" id=\"${uniqueKey}ColorBar\"></div>\r\n <span class=\"option-text\" title=\"${customLibName}\">${customLibName}</span>\r\n `;\r\n this.libraryOptions.appendChild(customOption);\r\n\r\n // 3. 渲染自定义色条预览\r\n const customColorBar = this.shadowRoot.getElementById(`${uniqueKey}ColorBar`);\r\n this.renderLibraryColorBar(customColorBar,\r\n adaptedStops.map(stop => ({\r\n color: stop.color,\r\n pos: (stop.value - min) / (max - min)\r\n }))\r\n );\r\n\r\n // 4. 绑定事件(和其他选项保持一致)\r\n customOption.addEventListener('click', (e) => {\r\n e.stopPropagation();\r\n const value = customOption.dataset.value;\r\n this.colorLibrarySelect.value = value;\r\n this.state.colorLibrary = value;\r\n\r\n // 渲染选中的色条预览\r\n this.renderSelectedColorBar(value);\r\n\r\n // 关键:使用统一的updateLibraryStops方法\r\n this.updateLibraryStops(value);\r\n\r\n this.libraryOptions.style.display = 'none';\r\n this.renderColorBarPreview();\r\n this.renderPanelColorbar();\r\n });\r\n\r\n customOption.addEventListener('mouseenter', () => {\r\n customOption.style.background = '#f5f5f5';\r\n });\r\n customOption.addEventListener('mouseleave', () => {\r\n customOption.style.background = 'white';\r\n });\r\n\r\n // 5. 更新updateLibraryStops方法的映射(临时存储,刷新后丢失,如需持久化需用localStorage)\r\n // 5. 更新自定义色库映射并保存到localStorage\r\n this.customColorLibs = this.customColorLibs || {};\r\n this.customColorLibs[uniqueKey] = {\r\n name: customLibName,\r\n stops: adaptedStops,\r\n ratios: adaptedStops.map(stop => (stop.value - min) / (max - min))\r\n };\r\n\r\n // ========== 新增:保存到localStorage ==========\r\n try {\r\n localStorage.setItem('chromaColorCustomLibs', JSON.stringify(this.customColorLibs));\r\n } catch (err) {\r\n console.error('保存自定义色库到缓存失败:', err);\r\n this.showErrorMessage('色库导入成功,但缓存保存失败(可能存储空间不足)');\r\n }\r\n\r\n this.showSuccessMessage(`成功导入色条:${customLibName}`);\r\n resolve(uniqueKey);\r\n\r\n } catch (err) {\r\n this.showErrorMessage('解析TXT文件失败:' + err.message);\r\n reject(err);\r\n }\r\n };\r\n\r\n // 读取文件失败\r\n reader.onerror = () => {\r\n this.showErrorMessage('读取文件失败');\r\n reject('文件读取错误');\r\n };\r\n\r\n // 开始读取文件\r\n reader.readAsText(file);\r\n\r\n });\r\n }\r\n\r\n // ========== 新增:从localStorage加载自定义色库 ==========\r\n loadCustomLibsFromStorage() {\r\n try {\r\n const savedLibs = localStorage.getItem('chromaColorCustomLibs');\r\n if (!savedLibs) return;\r\n\r\n this.customColorLibs = JSON.parse(savedLibs);\r\n const { min, max } = this.state;\r\n\r\n // 遍历加载所有保存的自定义色库\r\n Object.keys(this.customColorLibs).forEach(key => {\r\n const lib = this.customColorLibs[key];\r\n\r\n // 1. 添加到原生select\r\n const option = document.createElement('option');\r\n option.value = key;\r\n option.textContent = lib.name;\r\n this.colorLibrarySelect.appendChild(option);\r\n\r\n // 2. 添加到自定义下拉选项\r\n const customOption = document.createElement('div');\r\n customOption.className = 'library-option';\r\n customOption.dataset.value = key;\r\n customOption.innerHTML = `\r\n <div class=\"option-color-bar\" id=\"${key}ColorBar\"></div>\r\n <span class=\"option-text\" title=\"${lib.name}\">${lib.name}</span>\r\n `;\r\n this.libraryOptions.appendChild(customOption);\r\n\r\n // 3. 渲染自定义色条预览\r\n const customColorBar = this.shadowRoot.getElementById(`${key}ColorBar`);\r\n this.renderLibraryColorBar(customColorBar,\r\n lib.stops.map((stop, index) => ({\r\n color: stop.color,\r\n pos: lib.ratios[index] // 使用保存的比例,而不是计算值\r\n }))\r\n );\r\n\r\n // 4. 绑定事件(简化,统一使用内置逻辑)\r\n const _this = this;\r\n customOption.addEventListener('click', (e) => {\r\n e.stopPropagation();\r\n const value = customOption.dataset.value;\r\n _this.colorLibrarySelect.value = value;\r\n _this.state.colorLibrary = value;\r\n\r\n // 关键:使用统一的updateLibraryStops方法更新配置\r\n _this.updateLibraryStops(value);\r\n // 渲染选中的色条预览\r\n _this.renderSelectedColorBar(value);\r\n\r\n _this.libraryOptions.style.display = 'none';\r\n _this.renderColorBarPreview();\r\n _this.renderPanelColorbar();\r\n });\r\n\r\n customOption.addEventListener('mouseenter', () => {\r\n customOption.style.background = '#f5f5f5';\r\n });\r\n customOption.addEventListener('mouseleave', () => {\r\n customOption.style.background = 'white';\r\n });\r\n });\r\n } catch (err) {\r\n console.error('加载保存的自定义色库失败:', err);\r\n this.showErrorMessage('加载保存的色库失败,将使用默认配置');\r\n }\r\n }\r\n\r\n // 内部辅助方法:获取单个数值对应的颜色\r\n getSingleColor(num) {\r\n const { min, max, stops, displayMode } = this.state;\r\n\r\n // 【关键修改】边界值处理:不在范围内直接返回null\r\n if (num < min || num > max) {\r\n return null;\r\n }\r\n\r\n // 基于chroma-js计算渐变颜色(和色条渲染逻辑保持一致)\r\n const sortedStops = [...stops].sort((a, b) => a.value - b.value);\r\n const colorScale = chroma.scale(\r\n sortedStops.map(s => s.color)\r\n ).domain(\r\n sortedStops.map(s => s.value)\r\n );\r\n\r\n return colorScale(num).hex();\r\n }\r\n}\r\n\r\n// 注册自定义元素\r\nif (!customElements.get('chroma-color-scale')) {\r\n customElements.define('chroma-color-scale', ChromaColorScale);\r\n}"],"names":["min","max","PI","_input","rgb2hsl","round","floor","cos","sqrt","rgb2hsv","pow","sin","atan2","log","sign","interpolator","abs","bezier","random","colors","brewer","ChromaColorScale","HTMLElement","observedAttributes","attributeChangedCallback","name","oldValue","newValue","numValue","Number","isNaN","state","showErrorMessage","minInput","value","maxInput","step","calculateOptimalStep","renderColorBarPreview","renderPanelColorbar","constructor","shadow","attachShadow","mode","messageStyle","innerHTML","colorBarPreview","getElementById","previewCanvas","valueLabels","settingPanel","panelHandle","setRangeBtn","displayModeRadios","querySelectorAll","labelTypeRadios","precisionInput","scientificCheckbox","colorLibrarySelect","colorbarLabels","panelColorbar","resetBtn","confirmBtn","cancelBtn","applyBtn","rangeModeRadios","rangeCountInput","rangeStepInput","librarySelectContainer","libraryOptions","libraryOptionItems","customSelectDisplay","selectedColorBar","defaultColorBar","BlkWhiCltColorBar","BlkWhiYlwColorBar","BluWhiCltColorBar","messageContainer","initialMin","hasAttribute","getAttribute","initialMax","initialCount","initialStep","start","displayMode","labelType","precision","scientific","colorLibrary","rangeMode","rangeCount","rangeStep","originalStopRatios","stops","color","panelVisible","originalState","panelPosition","top","right","dragState","isDragging","draggingStopIndex","dragStartY","dragStartValue","canvasRect","colorPickerState","isOpen","targetStop","hue","saturation","lightness","pickerElement","isDraggingHue","isDraggingSpectrum","initLibraryColorBars","renderSelectedColorBar","loadCustomLibsFromStorage","bindEvents","saveOriginalState","content","messageItem","document","createElement","className","appendChild","setTimeout","style","animation","removeChild","showSuccessMessage","lib","canvas","width","height","ctx","getContext","gradient","createLinearGradient","customColorLibs","customLib","ratios","forEach","ratio","index","addColorStop","fillStyle","fillRect","strokeStyle","lineWidth","strokeRect","renderLibraryColorBar","pos","container","colorStops","stop","calculateDefaultStep","count","Math","generateRandomColor","letters","i","calculateStepByRangeMode","calculateDiscreteBlockCount","ceil","range","targetLabels","log10","steps","optimalStep","s","openColorPicker","x","y","closeColorPicker","picker","pickerWidth","pickerHeight","viewportWidth","window","innerWidth","viewportHeight","innerHeight","left","currentColor","chroma","hsl","hex","shadowRoot","spectrum","querySelector","spectrumHandle","hueBar","hueHandle","colorInput","preview","closeBtn","_this","updateSpectrumBg","hueColor","background","updateColorPreview","addEventListener","e","rect","getBoundingClientRect","clientX","clientY","target","trim","test","err","clickOutsideHandler","clickOutside","contains","removeEventListener","importLibBtn","saveLibBtn","exportColorScaleToTxt","fileInput","type","accept","file","files","importColorScaleFromTxt","click","stopPropagation","classList","add","updatePanelPosition","isDraggingPanel","startX","startY","initialTop","initialRight","body","cursor","deltaX","deltaY","newStep","map","radio","id","disabled","remove","val","checked","display","item","dataset","updateLibraryStops","resetMin","resetMax","resetCount","resetStep","dispatchEvent","CustomEvent","detail","JSON","parse","stringify","bubbles","composed","clickValue","getValueFromY","tolerance","targetIndex","findIndex","length","splice","newColor","push","sort","a","b","preventDefault","find","findClosestStop","currentStop","sortedStops","currentIndexInSorted","clampedValue","MouseEvent","canvasHeight","usableHeight","clampedY","percent","closestIndex","minDiff","Infinity","diff","formatNumber","num","toExponential","toFixed","toString","labelsContainer","containerHeight","clientHeight","clearRect","reversedPercent","currentVal","label","textContent","pixelTop","position","transform","blockCount","blockHeight","discreteStep","colorScale","scale","domain","reversedIndex","blockStart","blockEnd","blockMidValue","blockColor","labelText","imageSmoothingEnabled","baseColor","fillColor","barRightX","blockW","blockH","triangleW","save","beginPath","moveTo","lineTo","closePath","fill","lineJoin","stroke","restore","labelWrapper","getColor","Array","isArray","getSingleColor","colorScaleData","Date","getTime","jsonString","blob","Blob","url","URL","createObjectURL","href","download","revokeObjectURL","Promise","resolve","reject","endsWith","reader","FileReader","onload","result","adaptedStops","uniqueKey","now","customLibName","toLocaleString","option","customOption","customColorBar","localStorage","setItem","console","error","message","onerror","readAsText","savedLibs","getItem","Object","keys","key","customElements","get","define"],"mappings":"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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAK,CAAA,CAAA;AAEDH,IAAAA,MAAM,CAACI,SAAS,GAAGD,YAAY,GAAG,CAAA;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAK,CAAA,CAAA;;AAED;IACA,IAAI,CAACE,eAAe,GAAGL,MAAM,CAACM,cAAc,CAAC,iBAAiB,CAAC,CAAA;IAC/D,IAAI,CAACC,aAAa,GAAGP,MAAM,CAACM,cAAc,CAAC,eAAe,CAAC,CAAA;IAC3D,IAAI,CAACE,WAAW,GAAGR,MAAM,CAACM,cAAc,CAAC,aAAa,CAAC,CAAA;IACvD,IAAI,CAACG,YAAY,GAAGT,MAAM,CAACM,cAAc,CAAC,cAAc,CAAC,CAAA;IACzD,IAAI,CAACI,WAAW,GAAGV,M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"}
|