dozy 1.0.104 → 1.0.105

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../node_modules/fast-content-type-parse/index.js","../src/modules/Store.ts","../src/x/Functions.ts","../src/x/Dozy.ts","../node_modules/nanoid/url-alphabet/index.js","../node_modules/nanoid/index.browser.js","../src/x/WebFunctions.ts","../src/modules/EnableScaler.ts","../src/modules/XCode.ts","../node_modules/universal-user-agent/index.js","../node_modules/before-after-hook/lib/register.js","../node_modules/before-after-hook/lib/add.js","../node_modules/before-after-hook/lib/remove.js","../node_modules/before-after-hook/index.js","../node_modules/@octokit/endpoint/dist-bundle/index.js","../node_modules/@octokit/request/dist-bundle/index.js","../node_modules/json-with-bigint/json-with-bigint.js","../node_modules/@octokit/request-error/dist-src/index.js","../node_modules/@octokit/graphql/dist-bundle/index.js","../node_modules/@octokit/auth-token/dist-bundle/index.js","../node_modules/@octokit/core/dist-src/version.js","../node_modules/@octokit/core/dist-src/index.js","../src/modules/RepoStore.ts","../src/modules/InterTypes/InterType.ts","../src/modules/gens/GensDirectives.ts","../src/modules/gens/GensStyleIds.ts","../src/modules/gens/Gens.ts","../node_modules/culori/src/index.js","../node_modules/culori/src/rgb/parseNumber.js","../node_modules/culori/src/colors/named.js","../node_modules/culori/src/rgb/parseNamed.js","../node_modules/culori/src/rgb/parseHex.js","../node_modules/culori/src/util/regex.js","../node_modules/culori/src/rgb/parseRgbLegacy.js","../node_modules/culori/src/_prepare.js","../node_modules/culori/src/converter.js","../node_modules/culori/src/modes.js","../node_modules/culori/src/parse.js","../node_modules/culori/src/rgb/parseRgb.js","../node_modules/culori/src/rgb/parseTransparent.js","../node_modules/culori/src/interpolate/lerp.js","../node_modules/culori/src/interpolate/piecewise.js","../node_modules/culori/src/interpolate/linear.js","../node_modules/culori/src/fixup/alpha.js","../node_modules/culori/src/rgb/definition.js","../node_modules/culori/src/a98/convertA98ToXyz65.js","../node_modules/culori/src/a98/convertXyz65ToA98.js","../node_modules/culori/src/lrgb/convertRgbToLrgb.js","../node_modules/culori/src/xyz65/convertRgbToXyz65.js","../node_modules/culori/src/lrgb/convertLrgbToRgb.js","../node_modules/culori/src/xyz65/convertXyz65ToRgb.js","../node_modules/culori/src/a98/definition.js","../node_modules/culori/src/util/normalizeHue.js","../node_modules/culori/src/fixup/hue.js","../node_modules/culori/src/cubehelix/constants.js","../node_modules/culori/src/cubehelix/convertRgbToCubehelix.js","../node_modules/culori/src/cubehelix/convertCubehelixToRgb.js","../node_modules/culori/src/difference.js","../node_modules/culori/src/average.js","../node_modules/culori/src/cubehelix/definition.js","../node_modules/culori/src/lch/convertLabToLch.js","../node_modules/culori/src/lch/convertLchToLab.js","../node_modules/culori/src/xyz65/constants.js","../node_modules/culori/src/constants.js","../node_modules/culori/src/lab65/convertLab65ToXyz65.js","../node_modules/culori/src/lab65/convertLab65ToRgb.js","../node_modules/culori/src/lab65/convertXyz65ToLab65.js","../node_modules/culori/src/lab65/convertRgbToLab65.js","../node_modules/culori/src/dlch/constants.js","../node_modules/culori/src/dlch/convertDlchToLab65.js","../node_modules/culori/src/dlch/convertLab65ToDlch.js","../node_modules/culori/src/dlab/definition.js","../node_modules/culori/src/dlch/definition.js","../node_modules/culori/src/hsi/convertHsiToRgb.js","../node_modules/culori/src/hsi/convertRgbToHsi.js","../node_modules/culori/src/hsi/definition.js","../node_modules/culori/src/hsl/convertHslToRgb.js","../node_modules/culori/src/hsl/convertRgbToHsl.js","../node_modules/culori/src/util/hue.js","../node_modules/culori/src/hsl/parseHslLegacy.js","../node_modules/culori/src/hsl/parseHsl.js","../node_modules/culori/src/hsl/definition.js","../node_modules/culori/src/hsv/convertHsvToRgb.js","../node_modules/culori/src/hsv/convertRgbToHsv.js","../node_modules/culori/src/hsv/definition.js","../node_modules/culori/src/hwb/convertHwbToRgb.js","../node_modules/culori/src/hwb/convertRgbToHwb.js","../node_modules/culori/src/hwb/parseHwb.js","../node_modules/culori/src/hwb/definition.js","../node_modules/culori/src/hdr/constants.js","../node_modules/culori/src/hdr/transfer.js","../node_modules/culori/src/itp/convertItpToXyz65.js","../node_modules/culori/src/itp/convertXyz65ToItp.js","../node_modules/culori/src/itp/definition.js","../node_modules/culori/src/jab/convertXyz65ToJab.js","../node_modules/culori/src/jab/convertJabToXyz65.js","../node_modules/culori/src/jab/convertRgbToJab.js","../node_modules/culori/src/jab/convertJabToRgb.js","../node_modules/culori/src/jab/definition.js","../node_modules/culori/src/jch/convertJabToJch.js","../node_modules/culori/src/jch/convertJchToJab.js","../node_modules/culori/src/jch/definition.js","../node_modules/culori/src/xyz50/constants.js","../node_modules/culori/src/lab/convertLabToXyz50.js","../node_modules/culori/src/xyz50/convertXyz50ToRgb.js","../node_modules/culori/src/lab/convertLabToRgb.js","../node_modules/culori/src/xyz50/convertRgbToXyz50.js","../node_modules/culori/src/lab/convertXyz50ToLab.js","../node_modules/culori/src/lab/convertRgbToLab.js","../node_modules/culori/src/lab/parseLab.js","../node_modules/culori/src/lab/definition.js","../node_modules/culori/src/lab65/definition.js","../node_modules/culori/src/lch/parseLch.js","../node_modules/culori/src/lch/definition.js","../node_modules/culori/src/lch65/definition.js","../node_modules/culori/src/lchuv/convertLuvToLchuv.js","../node_modules/culori/src/lchuv/convertLchuvToLuv.js","../node_modules/culori/src/luv/convertXyz50ToLuv.js","../node_modules/culori/src/luv/convertLuvToXyz50.js","../node_modules/culori/src/lchuv/definition.js","../node_modules/culori/src/lrgb/definition.js","../node_modules/culori/src/luv/definition.js","../node_modules/culori/src/oklab/convertLrgbToOklab.js","../node_modules/culori/src/oklab/convertRgbToOklab.js","../node_modules/culori/src/oklab/convertOklabToLrgb.js","../node_modules/culori/src/oklab/convertOklabToRgb.js","../node_modules/culori/src/okhsl/helpers.js","../node_modules/culori/src/okhsl/convertOklabToOkhsl.js","../node_modules/culori/src/okhsl/convertOkhslToOklab.js","../node_modules/culori/src/okhsl/modeOkhsl.js","../node_modules/culori/src/okhsv/convertOklabToOkhsv.js","../node_modules/culori/src/okhsv/convertOkhsvToOklab.js","../node_modules/culori/src/okhsv/modeOkhsv.js","../node_modules/culori/src/oklab/parseOklab.js","../node_modules/culori/src/oklab/definition.js","../node_modules/culori/src/oklch/parseOklch.js","../node_modules/culori/src/oklch/definition.js","../node_modules/culori/src/p3/convertP3ToXyz65.js","../node_modules/culori/src/p3/convertXyz65ToP3.js","../node_modules/culori/src/p3/definition.js","../node_modules/culori/src/prophoto/convertXyz50ToProphoto.js","../node_modules/culori/src/prophoto/convertProphotoToXyz50.js","../node_modules/culori/src/prophoto/definition.js","../node_modules/culori/src/rec2020/convertXyz65ToRec2020.js","../node_modules/culori/src/rec2020/convertRec2020ToXyz65.js","../node_modules/culori/src/rec2020/definition.js","../node_modules/culori/src/xyb/constants.js","../node_modules/culori/src/xyb/convertRgbToXyb.js","../node_modules/culori/src/xyb/convertXybToRgb.js","../node_modules/culori/src/xyb/definition.js","../node_modules/culori/src/xyz50/definition.js","../node_modules/culori/src/xyz65/convertXyz65ToXyz50.js","../node_modules/culori/src/xyz65/convertXyz50ToXyz65.js","../node_modules/culori/src/xyz65/definition.js","../node_modules/culori/src/yiq/convertRgbToYiq.js","../node_modules/culori/src/yiq/convertYiqToRgb.js","../node_modules/culori/src/yiq/definition.js","../node_modules/culori/src/round.js","../node_modules/culori/src/formatter.js","../node_modules/culori/src/blend.js","../node_modules/culori/src/random.js","../node_modules/culori/src/map.js","../node_modules/culori/src/util/normalizePositions.js","../node_modules/culori/src/easing/midpoint.js","../node_modules/culori/src/interpolate/interpolate.js","../node_modules/culori/src/interpolate/splineBasis.js","../node_modules/culori/src/interpolate/splineNatural.js","../node_modules/culori/src/interpolate/splineMonotone.js","../node_modules/culori/src/easing/gamma.js","../node_modules/culori/src/samples.js","../node_modules/culori/src/clamp.js","../node_modules/culori/src/nearest.js","../node_modules/culori/src/filter.js","../node_modules/culori/src/deficiency.js","../node_modules/culori/src/easing/smoothstep.js","../node_modules/culori/src/easing/smootherstep.js","../node_modules/culori/src/easing/inOutSine.js","../node_modules/culori/src/wcag.js","../src/modules/Color.ts","../src/index.ts"],"names":["exports","NullObject","parse","safeParse","s","min","M","e","f","c","r","p","num","abs","k","scaler","name","method","hook","value","text","digits","VERSION","isPlainObject","fetch","withDefaults","request","endpoint","noop","auth","hsl","definition_default","rgb","definition","interpolator","a98","fn","hue","lab","sum","val","f2","hsv","vn","d0","u_fn","v_fn","un","lchuv","luv","k2","k3","C1","r2","b","b2","gamma","linearize","prophoto","α","β","rec2020","transfer","xyz65","xyz50","random","res","isfn","clamp","lerp"],"mappings":"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","file":"index.js","sourcesContent":["'use strict'\n\nconst NullObject = function NullObject () { }\nNullObject.prototype = Object.create(null)\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nconst paramRE = /; *([!#$%&'*+.^\\w`|~-]+)=(\"(?:[\\v\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\v\\u0020-\\u00ff])*\"|[!#$%&'*+.^\\w`|~-]+) */gu\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nconst quotedPairRE = /\\\\([\\v\\u0020-\\u00ff])/gu\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nconst mediaTypeRE = /^[!#$%&'*+.^\\w|~-]+\\/[!#$%&'*+.^\\w|~-]+$/u\n\n// default ContentType to prevent repeated object creation\nconst defaultContentType = { type: '', parameters: new NullObject() }\nObject.freeze(defaultContentType.parameters)\nObject.freeze(defaultContentType)\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} header\n * @return {Object}\n * @public\n */\n\nfunction parse (header) {\n if (typeof header !== 'string') {\n throw new TypeError('argument header is required and must be a string')\n }\n\n let index = header.indexOf(';')\n const type = index !== -1\n ? header.slice(0, index).trim()\n : header.trim()\n\n if (mediaTypeRE.test(type) === false) {\n throw new TypeError('invalid media type')\n }\n\n const result = {\n type: type.toLowerCase(),\n parameters: new NullObject()\n }\n\n // parse parameters\n if (index === -1) {\n return result\n }\n\n let key\n let match\n let value\n\n paramRE.lastIndex = index\n\n while ((match = paramRE.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .slice(1, value.length - 1)\n\n quotedPairRE.test(value) && (value = value.replace(quotedPairRE, '$1'))\n }\n\n result.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n\n return result\n}\n\nfunction safeParse (header) {\n if (typeof header !== 'string') {\n return defaultContentType\n }\n\n let index = header.indexOf(';')\n const type = index !== -1\n ? header.slice(0, index).trim()\n : header.trim()\n\n if (mediaTypeRE.test(type) === false) {\n return defaultContentType\n }\n\n const result = {\n type: type.toLowerCase(),\n parameters: new NullObject()\n }\n\n // parse parameters\n if (index === -1) {\n return result\n }\n\n let key\n let match\n let value\n\n paramRE.lastIndex = index\n\n while ((match = paramRE.exec(header))) {\n if (match.index !== index) {\n return defaultContentType\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .slice(1, value.length - 1)\n\n quotedPairRE.test(value) && (value = value.replace(quotedPairRE, '$1'))\n }\n\n result.parameters[key] = value\n }\n\n if (index !== header.length) {\n return defaultContentType\n }\n\n return result\n}\n\nmodule.exports.default = { parse, safeParse }\nmodule.exports.parse = parse\nmodule.exports.safeParse = safeParse\nmodule.exports.defaultContentType = defaultContentType\n","// --- JSON ---\nexport const $jsonParse = JSON.parse\nexport const $jsonStringify = JSON.stringify\n\n// --- Object ---\nexport const $keys = Object.keys as <T extends object>(obj: T) => (keyof T & string)[]\nexport const $entries = Object.entries as <T extends object>(\n\tobj: T,\n) => [keyof T & string, T[keyof T]][]\nexport const $values = Object.values\nexport const $assign = Object.assign\nexport const $defineProperty = Object.defineProperty\nexport const $freeze = Object.freeze\nexport const $is = Object.is\n\n// --- Array ---\nexport const $arrayFrom = Array.from\nexport const $arrayIsArray = Array.isArray\n\n// --- String ---\nexport const $stringFromCharCode = String.fromCharCode\nexport const $stringFromCodePoint = String.fromCodePoint\n\n// --- Number ---\nexport const $numberIsNaN = Number.isNaN\nexport const $numberIsFinite = Number.isFinite\n\n// --- Math ---\nexport const $math = Math\n\n// --- Date ---\nexport const $now = Date.now\nexport const $date = Date\n\n// --- Promise ---\nexport const $promise = Promise\n\n// --- URL / URLSearchParams ---\nexport const $URL = URL\nexport const $URLSearchParams = URLSearchParams\n\n// --- StructuredClone ---\nexport const $clone = globalThis.structuredClone\n\n// --- DOM(仅在浏览器中存在)---\nexport const $window = typeof window === 'undefined' ? undefined : window\nexport const $document = typeof document === 'undefined' ? undefined : document\nexport const $location = typeof window === 'undefined' ? undefined : window.location\nexport const $open = typeof window === 'undefined' ? undefined : window.open\nexport const $setTimeout = typeof window === 'undefined' ? undefined : window.setTimeout\nexport const $clearTimeout = typeof window === 'undefined' ? undefined : window.clearTimeout\nexport const $setInterval = typeof window === 'undefined' ? undefined : window.setInterval\nexport const $clearInterval = typeof window === 'undefined' ? undefined : window.clearInterval\n\n// --- Fetch / Headers / Request / Response ---\nexport const $fetch = typeof fetch === 'undefined' ? undefined : fetch\nexport const $Headers = typeof Headers === 'undefined' ? undefined : Headers\nexport const $Request = typeof Request === 'undefined' ? undefined : Request\nexport const $Response = typeof Response === 'undefined' ? undefined : Response\n\n// --- Console ---\n\n/**\n * 输出一个值到控制台,并原样返回该值。\n *\n * 适合在表达式链中做内联调试。\n *\n * @typeParam T 第一个参数的类型。\n * @param a 主要输出值,同时也是返回值。\n * @param x 其余会继续传给 `console.log` 的附加参数。\n * @returns 原样返回传入的 `a`。\n */\nexport const $log = <T>(a?: T, ...x: any[]) => {\n\tconsole.log(a, ...x) // Allow user to override console.log\n\treturn a\n}\n\n// --- Crypto ---\nexport const $crypto = typeof crypto === 'undefined' ? undefined : crypto\n","import { AxiosError } from 'axios'\nimport { $keys, $jsonParse, $jsonStringify } from '../modules/Store'\nimport { Any, Null } from '../modules/InterTypes/InterType'\n\n/**\n * 判断一个值是否为非 `null` 的对象。\n *\n * @param value 要检测的值。\n * @returns 当值是对象且不为 `null` 时返回 `true`,否则返回 `false`。\n */\nexport function $isObject(value: unknown): value is Record<string, unknown> {\n\treturn value !== null && typeof value === 'object'\n}\n\n/**\n * 使用当前运行环境中可用的最佳方式深拷贝一个值。\n *\n * 行为说明:\n * - 优先使用 `structuredClone`。\n * - 不可用时回退到 `JSON.stringify` / `JSON.parse`。\n * - JSON 方案会丢失函数、`undefined`、循环引用以及部分类实例信息。\n *\n * @typeParam T 输入与返回值的类型。\n * @param value 源值。\n * @returns 返回深拷贝后的结果,但具体保真度取决于底层拷贝方案。\n */\nexport function $deepClone<T>(value: T): T {\n\tif (typeof structuredClone === 'function') {\n\t\t// @ts-ignore -- structuredClone exists in modern runtimes\n\t\treturn structuredClone(value)\n\t}\n\treturn JSON.parse(JSON.stringify(value))\n}\n// export function debounce<T extends (...args: any[]) => any>(fn: T, wait = 200) {\n// \tlet timer: ReturnType<typeof setTimeout> | null = null\n// \treturn function (...args: Parameters<T>) {\n// \t\tif (timer) clearTimeout(timer)\n// \t\ttimer = setTimeout(() => fn(...args), wait)\n// \t} as (...args: Parameters<T>) => void\n// }\n// export function throttle<T extends (...args: any[]) => any>(fn: T, limit = 200) {\n\n/**\n * 将字符串首字母转为大写。\n *\n * @param s 输入字符串。\n * @returns 如果输入为空则原样返回;否则返回首字符大写后的字符串。\n */\n// \tlet inThrottle = false\n// \treturn function (...args: Parameters<T>) {\n// \t\tif (!inThrottle) {\n// \t\t\tfn(...args)\n// \t\t\tinThrottle = true\n// \t\t\tsetTimeout(() => (inThrottle = false), limit)\n// \t\t}\n// \t} as (...args: Parameters<T>) => void\n// }\nexport function $capitalize(s: string) {\n\tif (!s) return s\n\treturn s.charAt(0).toUpperCase() + s.slice(1)\n}\n\n/**\n * 将数字限制在闭区间 `[min, max]` 内。\n *\n * @param n 输入数字。\n * @param min 最小值。\n * @param max 最大值。\n * @returns 小于最小值时返回 `min`,大于最大值时返回 `max`,否则返回原值。\n */\nexport function $clamp(n: number, min: number, max: number) {\n\treturn Math.min(max, Math.max(min, n))\n}\n\n/**\n * 将一个对象中的配置项合并到目标对象中。\n *\n * 行为说明:\n * - 如果 `obj` 不存在,则直接返回 `thiz`。\n * - 当源字段和目标字段都是对象时,会尝试调用目标上的 `$loadOpt` 继续递归合并。\n * - 否则直接覆盖赋值。\n *\n * @param thiz 目标对象,会被原地修改。\n * @param obj 可选的源对象。\n * @returns 返回被修改后的目标对象 `thiz`。\n */\nexport function $loadOpt(thiz: Object, obj?: Object): any {\n\tif (!obj) return thiz\n\tlet ks = $keys(obj)\n\tfor (const it of ks) {\n\t\tlet x = (<any>obj)[it]\n\t\tlet w = (<any>thiz)[it]\n\t\tif (x instanceof Object && w instanceof Object) w.$loadOpt(x)\n\t\telse {\n\t\t\tlet zhis = <any>thiz\n\t\t\tzhis[it] = x\n\t\t}\n\t}\n\treturn thiz\n}\n\n/**\n * 抛出一个带指定消息的 `Error`。\n *\n * @param msg 错误消息。\n * @returns 不会返回。\n * @throws 始终抛出 `Error`。\n */\nexport function errMsg(msg: string) {\n\tthrow new Error(msg)\n}\n\n/**\n * 去掉 HTML 标记并返回纯文本内容。\n *\n * @param fragment HTML 片段字符串。\n * @returns 返回去除换行并裁剪首尾空白后的纯文本。\n */\nexport function $pureText(fragment: string) {\n\treturn (new DOMParser().parseFromString(fragment, 'text/html').body.textContent || '')\n\t\t.replace(/\\n/g, '')\n\t\t.trim()\n}\n\n/**\n * 判断一个值是否为普通对象记录。\n *\n * @param o 要检测的值。\n * @returns 非 `null` 对象时返回 `true`,否则返回 `false`。\n */\nexport function $oc(o: any): o is Record<string, any> {\n\treturn typeof o === 'object' && o !== null\n}\n\n/**\n * 判断一个值是否为字符串,并可选要求其非空。\n *\n * @param s 要检测的值。\n * @param val 为真时,除了要求是字符串外,还要求 `!!s` 为真。\n * @returns 是否满足对应的字符串条件。\n */\nexport function $s(s: any, val?: boolean): s is string {\n\tif (typeof s !== 'string') return false\n\treturn val ? !!s : true\n}\n\n/**\n * 判断一个值是否为有限数字。\n *\n * @param n 要检测的值。\n * @returns 只有在值是数字且不是 `NaN`、`Infinity`、`-Infinity` 时才返回 `true`。\n */\nexport function $sc(n: any): n is number {\n\tif (typeof n !== 'number') return false\n\treturn isFinite(n)\n}\n\n/**\n * 对循环索引执行加减步进,并保证结果始终落在循环范围内。\n *\n * @param v 当前值。\n * @param t 循环长度,也可理解为上边界(不包含)。\n * @param plus 步进值,默认为 `1`。\n * @returns 返回落在 `[0, t)` 区间内的循环结果。\n */\nexport function $lplus(v: number, t: number, plus: number = 1) {\n\tv += plus\n\twhile (v >= t) v -= t\n\twhile (v < 0) v += t\n\treturn v\n}\n\n/**\n * 使用循环索引方式读取数组项。\n *\n * @param arr 源数组。\n * @param i 目标索引,可以是负数,也可以超过数组长度。\n * @returns 返回折算后的数组项;如果数组为空则返回 `undefined`。\n */\nexport function $lindex(arr: Array<any>, i: number) {\n\tlet l = arr.length\n\tif (l === 0) return\n\twhile (i >= l) {\n\t\ti -= l\n\t}\n\twhile (i < 0) {\n\t\ti += l\n\t}\n\treturn arr[i]\n}\n\n/**\n * 校验一个简单标识符是否合法。\n *\n * 允许字符:字母、数字、连字符 `-`、下划线 `_`。\n *\n * @param id 待校验的标识符。\n * @returns 当 `id` 非空且符合规则时返回 `true`,否则返回 `false`。\n */\nexport function $validName(id?: string): id is string {\n\treturn !!id && /^[a-zA-Z0-9-_]+$/.test(id)\n}\n\nexport type FileType = 'text' | 'image' | 'audio' | 'video' | 'font' | 'unknown'\n\n/**\n * 根据文件扩展名推断文件的大致类型。\n *\n * @param fileName 文件名或路径。\n * @returns 可能返回 `text`、`image`、`audio`、`video`、`font` 或 `unknown`。\n */\nexport function $getFileType(fileName: string): FileType {\n\tconst extension = fileName.split('.').pop()?.toLowerCase()\n\tif (!extension) return 'unknown'\n\n\tconst textExtensions = ['txt', 'csv', 'json', 'xml', 'html', 'css', 'js', 'ts', 'md', 'log']\n\tconst imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'svg', 'webp']\n\tconst audioExtensions = ['mp3', 'wav', 'ogg', 'aac', 'flac', 'm4a']\n\tconst videoExtensions = ['mp4', 'webm', 'ogv', 'mov', 'avi', 'mkv']\n\tconst fontExtensions = ['woff', 'woff2', 'ttf', 'otf']\n\n\tif (textExtensions.includes(extension)) return 'text'\n\tif (imageExtensions.includes(extension)) return 'image'\n\tif (audioExtensions.includes(extension)) return 'audio'\n\tif (videoExtensions.includes(extension)) return 'video'\n\tif (fontExtensions.includes(extension)) return 'font'\n\n\treturn 'unknown'\n}\n\n/**\n * 判断一个字符串是否看起来像 URL,允许省略协议头。\n *\n * @param url 待检测的 URL 字符串。\n * @returns 输入为空时返回 `false`;否则返回是否匹配内部 URL 规则。\n */\nexport function $isValidOrBriefURL(url?: string) {\n\tif (!url) return false\n\tlet pattern = new RegExp(\n\t\t'^(https?:\\\\/\\\\/)?' + // protocol\n\t\t\t'((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\n\t\t\t'((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\n\t\t\t'(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\n\t\t\t'(\\\\?[;&a-z\\\\d%_.~+=-]*)?' + // query string\n\t\t\t'(\\\\#[-a-z\\\\d_]*)?$',\n\t\t'i',\n\t)\n\treturn pattern.test(url)\n}\n\n/**\n * 补全 URL: 如果缺少协议头 (http:// 或 https://) 则自动补上 https://。\n * 适用于用户输入的简写 URL, 例如 `a.ac` → `https://a.ac`。\n *\n * @param url 待补全的 URL 字符串。\n * @returns 补全后的 URL;空字符串原样返回。\n */\nexport function $ensureUrl(url: string): string {\n\tif (!url) return url\n\tif (!/^https?:\\/\\//i.test(url)) {\n\t\treturn 'https://' + url\n\t}\n\treturn url\n}\n\n/**\n * 将 tick 时间格式化为可读字符串。\n *\n * @param stampTicks 时间值,默认规则下 40 tick = 1 秒。\n * @param short 为 `true` 时返回 `MM:SS`,否则返回 `HH:MM:SS`。\n * @param unitS 为 `true` 时表示传入值单位是秒,函数内部会自动换算成 tick。\n * @param exact 为 `true` 时会在末尾追加 `%xx`,表示更细的余数信息。\n * @returns 返回格式化后的时间字符串;若输入不是有效数字,则按 `short` 返回 `00:00` 或 `00:00:00`。\n */\nexport function $getTimeString(\n\tstampTicks: number,\n\tshort: boolean,\n\tunitS: boolean = false,\n\texact: boolean = false,\n) {\n\tif (!$sc(stampTicks)) return short ? '00:00' : '00:00:00'\n\tshort ? '00:00' : '00:00:00'\n\tif (unitS) stampTicks *= 40\n\tlet h = stampTicks / (40 * 60 * 60)\n\th = Math.floor(h)\n\tlet m = stampTicks\n\tif (!short) m %= 40 * 60 * 60\n\tm /= 40 * 60\n\tm = Math.floor(m)\n\tlet s = stampTicks % (40 * 60)\n\ts /= 40\n\ts = Math.floor(s)\n\tlet sp = ((stampTicks % 40) / 40) * 100\n\tsp = Math.floor(sp)\n\tlet H = String(h).padStart(2, '0')\n\tlet M = String(m).padStart(2, '0')\n\tlet S = String(s).padStart(2, '0')\n\tlet result = short ? '' + M + ':' + S : '' + H + ':' + M + ':' + S\n\treturn exact ? result + '%' + String(sp).padStart(2, '0') : result\n}\n\n/**\n * 在指定范围内生成随机整数。\n *\n * 参数语义:\n * - 只传 `start` 时,返回 `[0, start)` 范围内的整数。\n * - 同时传 `start`、`end` 时,返回 `[start, end)` 范围内的整数。\n *\n * @param start 当 `end` 省略时表示上限;否则表示下限。\n * @param end 可选的上限(不包含)。\n * @returns 返回目标范围内的随机整数;当范围无效时返回 `0`。\n */\nexport function $magic(start: number, end?: number): number {\n\tif (typeof end !== 'number') {\n\t\tif (start <= 1) return 0\n\t\treturn Math.floor(Math.random() * start)\n\t} else {\n\t\tif (end <= start) return 0\n\t\tconst range = end - start\n\t\treturn start + Math.floor(Math.random() * range)\n\t}\n}\n\n// use nanoid\n/**\n * 生成指定长度的伪随机字母数字字符串。\n *\n * @param len 目标长度,小于 `1` 时会被强制改为 `1`。\n * @returns 返回长度恰好为 `len` 的随机字符串。\n */\nexport function $randomByte(len: number = 32) {\n\tif (len < 1) len = 1\n\tlet s = ''\n\twhile (s.length < len) s += Math.random().toString(36).substring(2)\n\treturn s.substring(0, len)\n}\n\n/**\n * 解析 JSON 字符串,并读取其中某个点路径对应的值。\n *\n * @param s JSON 字符串。\n * @param path 可选的点分隔路径,如 `a.b.c`。\n * @param def 当输入为空或路径读取失败时使用的默认值。\n * @returns 返回读取到的值;如果失败则返回 `def`。\n */\nexport function $rsValue(s: string = '', path?: string, def?: any) {\n\tif (!s) return def\n\treturn $rvalue($jsonParse(s), path, def)\n}\n\n/**\n * 按点路径给对象设置嵌套值。\n *\n * @param obj 目标对象。\n * @param path 点分隔属性路径。\n * @param value 要设置的值。\n * @returns 返回最终写入的值。\n */\nexport function $rsetValue(obj: Object, path: string, value: any) {\n\treturn $rvalue(obj, path, value, true, true)\n}\n\n/**\n * 使用点路径读取或设置对象中的嵌套属性。\n *\n * @param obj 目标对象。\n * @param path 可选的点分隔路径;如果不传,则直接返回 `obj` 本身。\n * @param def 默认值;在设置模式下也会作为要写入的值。\n * @param sdef 为 `true` 时,缺失的中间对象或最终值可以按需用 `def` 创建。\n * @param set 为 `true` 时强制进入设置模式,并把 `def` 写入最终路径。\n * @returns 可能返回读取到的值、写入的值、默认值 `def`,或者原对象 `obj`,具体取决于路径情况与参数组合。\n */\nexport function $rvalue(\n\tobj: Object,\n\tpath?: string,\n\tdef?: any,\n\tsdef: boolean = false,\n\tset: boolean = false,\n) {\n\tif (set) sdef = true\n\tif (!obj) return def\n\tlet ps = path ? path.split('.') : []\n\tlet target: { [x: string]: any } = obj\n\tlet i = -1\n\tfor (let sub of ps) {\n\t\ti++\n\t\tlet end = i == ps.length - 1\n\t\tif (end) {\n\t\t\tif (set) {\n\t\t\t\ttarget[sub] = def\n\t\t\t\treturn def\n\t\t\t}\n\t\t\tif ($hasKey(target, sub)) return target[sub]\n\t\t\tif (sdef) target[sub] = def\n\t\t\treturn def\n\t\t} else {\n\t\t\tif ($hasKey(target, sub)) {\n\t\t\t\ttarget = target[sub]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (sdef) {\n\t\t\t\ttarget[sub] = {}\n\t\t\t\ttarget = target[sub]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn def\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * 判断对象是否直接拥有某个属性。\n *\n * @param obj 要检查的对象。\n * @param key 属性名。\n * @returns 只有当属性是对象自身属性时才返回 `true`。\n */\nexport function $hasKey(obj: Object, key: string) {\n\treturn Object.hasOwnProperty.call(obj, key)\n}\n\n/**\n * 安全地把未知值转换成适合日志或调试展示的短字符串。\n *\n * @param a 要序列化的值。\n * @param maxLength 最大输出长度;小于等于 `0` 时表示不截断。\n * @param deep 内部递归深度,用于处理序列化失败时的错误对象。\n * @returns 返回字符串结果;必要时会附带截断标记或失败提示。\n */\nfunction _maybeString(a: any, maxLength: number = 600, deep: number = 0) {\n\tlet x = ''\n\tif (deep >= 6) x = '[Too deep]'\n\telse\n\t\ttry {\n\t\t\tx = (JSON.stringify(a) ?? String(a)) || '[never]'\n\t\t} catch (err) {\n\t\t\tx = 'Failed to stringify: ' + _maybeString(err, undefined, deep + 1)\n\t\t}\n\tif (maxLength > 0 && x.length > maxLength) {\n\t\tx = x.slice(0, maxLength) + '...'\n\t}\n\treturn x\n}\n\n/**\n * `_maybeString` 的对外包装函数。\n *\n * @param a 要转成字符串的值。\n * @param maxLength 最大输出长度,默认为 `600`。\n * @returns 返回相对安全的字符串表示。\n */\nexport function maybeString(a: any, maxLength: number = 600) {\n\treturn _maybeString(a, maxLength)\n}\n\n/**\n * 将未知错误尽量转换为可读的错误消息。\n *\n * @param e 未知的错误值。\n * @returns 返回尽可能提取出的错误消息;若是 Axios 错误且响应中存在 `data.msg`,会优先使用它。\n */\nexport function errToString(e: unknown): string {\n\tif (e instanceof AxiosError) {\n\t\tconst o = e.response?.data?.msg\n\t\tif ($s(o, true)) return o\n\t}\n\treturn (e instanceof Error ? e.message : String(e)) || 'ERROR'\n}\n\n/**\n * 以一个固定的小概率返回 `true`。\n *\n * @returns 当 `Math.random() > 0.8` 时返回 `true`,否则返回 `false`。\n */\nexport function smallChance() {\n\treturn Math.random() > 0.8\n}\n\n/**\n * 判断一个值是否是指定构造函数的普通实例。\n *\n * @param obj 要检测的值。\n * @param clas 期望的构造函数,默认为 `Object`。\n * @returns 当 `obj` 非空且其 `constructor === clas` 时返回 `true`。\n */\nexport function $isPlainClass(obj: any, clas: Function = Object): boolean {\n\treturn typeof obj === 'object' && obj !== null && obj.constructor === clas\n}\n\n/**\n * 将 Unicode 字符串编码为 Base64。\n *\n * @param str 源字符串。\n * @returns 返回 Base64 字符串。\n */\nexport function $encodeUnicodeToBase64(str: string) {\n\treturn btoa(unescape(encodeURIComponent(str)))\n}\n\n/**\n * 将 Base64 字符串解码回 Unicode 文本。\n *\n * @param base64 Base64 编码字符串。\n * @returns 返回解码后的 Unicode 字符串。\n */\nexport function $decodeBase64ToUnicode(base64: string) {\n\treturn decodeURIComponent(escape(atob(base64)))\n}\n\n/**\n * 读取浏览器 `File`,并返回不带 data URL 前缀的纯 Base64 内容。\n *\n * @param file 要读取的文件对象。\n * @returns 返回一个 Promise,成功时得到纯 Base64 字符串。\n * @throws 当文件读取失败或结果不是字符串时,Promise 会被拒绝。\n */\nexport async function $fileToBase64(file: File): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader()\n\t\treader.onload = () => {\n\t\t\tconst result = reader.result\n\t\t\tif (typeof result === 'string') {\n\t\t\t\tresolve(result.split(',')[1]) // Remove the \"data:*/*;base64,\" prefix\n\t\t\t} else {\n\t\t\t\treject(new Error('Failed to convert file to Base64.'))\n\t\t\t}\n\t\t}\n\t\treader.onerror = () => {\n\t\t\treject(new Error('Error reading file.'))\n\t\t}\n\t\treader.readAsDataURL(file)\n\t})\n}\n\n/**\n * 将 Base64 字符串解码为原始字节数组。\n *\n * @param base64 纯 Base64 字符串。\n * @returns 返回解码后的 `Uint8Array`。\n */\nexport function $decodeBase64ToBinary(base64: string) {\n\tconst binaryStr = atob(base64)\n\tconst bytes = new Uint8Array(binaryStr.length)\n\tfor (let i = 0; i < binaryStr.length; i++) {\n\t\tbytes[i] = binaryStr.charCodeAt(i)\n\t}\n\treturn bytes\n}\n\n/**\n * 仅在边界值有效时,将数字限制到对应范围内。\n *\n * @param v 输入值。\n * @param min 可选最小值。\n * @param max 可选最大值。\n * @returns 返回处理后的结果值。\n */\nexport function $setRange(v: number, min?: number, max?: number) {\n\tif ($sc(min) && <number>min > v) v = <number>min\n\tif ($sc(max) && <number>max < v) v = <number>max\n\treturn v\n}\n\n/**\n * 判断一个值是否位于某个中心点的对称范围内。\n *\n * @param v 要检测的值。\n * @param mid 中心值。\n * @param range 左右两侧允许的偏移范围。\n * @returns 当 `v` 位于 `[mid - range, mid + range]` 区间内时返回 `true`。\n */\nexport function $inRange2(v: number, mid: number, range: number) {\n\treturn $inRange(v, mid - range, mid + range)\n}\n\n/**\n * 判断一个数是否位于可选的最小值和最大值之间。\n *\n * @param v 要检测的值。\n * @param min 可选最小值。\n * @param max 可选最大值。\n * @returns 如果违反任一已提供边界则返回 `false`,否则返回 `true`。\n */\nexport function $inRange(v: number, min?: number, max?: number) {\n\tif ($sc(min) && <number>min > v) return false\n\tif ($sc(max) && <number>max < v) return false\n\treturn true\n}\n\n/**\n * 按指定分隔符拆分字符串。\n *\n * @param str 原始字符串。\n * @param cut 分隔符,默认为 `^`。\n * @returns 返回 `str.split(cut)` 的结果数组。\n */\nexport function $strings(str: string, cut: string = '^') {\n\treturn str.split(cut)\n}\n\n/**\n * 生成一个按成对字符串参数进行处理的辅助函数。\n *\n * 规则说明:\n * - 如果只传了一个参数且其中包含 `^`,会先按 `^` 拆分。\n * - 然后按 `(s1, s2)` 两两配对执行处理。\n * - 如果某组缺少第二项,运行时该参数会是 `undefined`。\n *\n * @param f 成对处理函数。\n * @param gap 每组结果之间插入的分隔字符串。\n * @returns 返回一个新函数,用于把字符串列表合成为最终字符串。\n */\nexport function $genSSF(\n\tf: (s1: string, s2: string) => string,\n\tgap: string = '',\n): (...args: string[]) => string {\n\treturn (...args: string[]) => {\n\t\tlet ss = args.length === 1 && args[0].includes('^') ? $strings(args[0]) : args\n\t\tlet v = ''\n\t\tlet i = Math.ceil(ss.length / 2)\n\t\tfor (let c = 0; c < i; c++) {\n\t\t\tif (v) v += gap\n\t\t\tlet r = ss[c * 2]\n\t\t\tlet t = ss[c * 2 + 1]\n\t\t\tv += f(r, t)\n\t\t}\n\t\treturn v\n\t}\n}\n\n/**\n * 规范化多行字符串中的空白字符。\n *\n * @param s 输入字符串。\n * @returns 返回压缩多余空行、规范行内空白并去除首尾空白后的字符串。\n */\nexport function xtrim(s: string) {\n\treturn s\n\t\t.replace(/(\\r?\\n)+/g, '\\n')\n\t\t.replace(/[^\\S\\n]+/g, ' ')\n\t\t.replace(/(^\\s*|\\s*$)/g, '')\n}\n\n/**\n * 根据键值选择映射项,并在映射值为函数时执行它。\n *\n * @typeParam T 键类型。\n * @typeParam V 非函数映射值类型。\n * @param val 当前要选择的键。\n * @param fs 键到函数或普通值的映射表。\n * @returns 如果命中项是函数则返回函数执行结果,否则返回映射值本身。\n */\nexport function $if<T extends string | number | symbol, V>(val: T, fs: Record<T, Function | V>) {\n\tconst f = fs[val]\n\tif (typeof f === 'function') return f()\n\treturn f as V\n}\n\n/**\n * 获取数组或长度值对应的最后一个有效索引。\n *\n * @param items 数组本身或数字长度。\n * @returns 返回 `max(length - 1, 0)` 的结果。\n */\nexport function $lastIndex(items: Array<any> | number) {\n\tlet i = $sc(items) ? <number>items : (<Array<any>>items).length\n\ti -= 1\n\treturn i >= 0 ? i : 0\n}\n\n/**\n * 将稀疏数组中的空洞补成显式的 `undefined`。\n *\n * 注意:该函数会修改原数组,同时返回一个浅拷贝。\n *\n * @typeParam T 元素类型。\n * @param arr 可能包含空洞的数组。\n * @returns 返回浅拷贝后的数组。\n */\nexport function $replaceHolesWithUndefined<T>(arr: Array<T | undefined>): Array<T | undefined> {\n\tconst newArr = arr.slice()\n\tfor (let i = 0; i < newArr.length; i++) {\n\t\tif (!(i in newArr)) {\n\t\t\tarr[i] = undefined\n\t\t}\n\t}\n\treturn newArr\n}\n\n/**\n * 将字符串稳定映射到 `[0, max)` 范围内的整数。\n *\n * @param str 源字符串。\n * @param max 上界(不包含)。\n * @returns 返回确定性的整数结果;即使字符串为空,也会得到合法范围内的值。\n */\nexport function $stringToRange(str: string, max: number): number {\n\tstr ||= ''\n\tlet hash = 5381\n\tfor (let i = 0; i < str.length; i++) {\n\t\thash = (hash * 33) ^ str.charCodeAt(i)\n\t}\n\thash = Math.abs(hash)\n\tconst goldenRatioConjugate = 0.61803398875\n\tlet value = (hash * goldenRatioConjugate) % 1\n\treturn Math.floor(value * max)\n}\n\n/**\n * 去掉路径开头的 `/`。\n *\n * @param path 输入路径。\n * @returns 如果路径有前导斜杠则返回去掉后的结果,否则原样返回。\n */\nexport function $rmvSlash(path: string) {\n\treturn path.startsWith('/') ? path.slice(1) : path\n}\n\n/**\n * 解析紧凑编码的路径参数字符串。\n *\n * 规则:\n * - 单个 `-` 表示参数分隔。\n * - 双 `--` 表示字面量 `-`。\n * - `_` 与 `%20` 会被还原为空格。\n * - 双下划线 `__` 用于保留字面量下划线。\n *\n * @param path 编码后的路径字符串。\n * @returns 返回解码后的参数数组。\n */\nexport function $parseParams(path: string): (string | undefined)[] {\n\tpath = $rmvSlash(path)\n\tconst parts: string[] = []\n\tlet current = ''\n\tlet i = 0\n\tconst UNDERSCORE_PLACEHOLDER = 'PLACEHOLDER_' + Math.random().toString(36).slice(2, 10)\n\twhile (i < path.length) {\n\t\tif (path[i] === '-') {\n\t\t\tif (path[i + 1] === '-') {\n\t\t\t\tcurrent += '-'\n\t\t\t\ti += 2\n\t\t\t} else {\n\t\t\t\tparts.push(current)\n\t\t\t\tcurrent = ''\n\t\t\t\ti++\n\t\t\t}\n\t\t} else {\n\t\t\tcurrent += path[i]\n\t\t\ti++\n\t\t}\n\t}\n\tif (current) parts.push(current)\n\tconst decoded = parts.map((p) =>\n\t\tp\n\t\t\t.replace(/__/g, UNDERSCORE_PLACEHOLDER)\n\t\t\t.replace(/_/g, ' ')\n\t\t\t.replace(/%20/g, ' ')\n\t\t\t.replace(new RegExp(UNDERSCORE_PLACEHOLDER, 'g'), '_'),\n\t)\n\treturn decoded\n}\n\n/**\n * 给数字或数字字符串添加千分位分隔符。\n *\n * @param num 数字或可转为字符串的数字值。\n * @returns 返回带千分位逗号的字符串。\n */\nexport function $formatWithCommas(num: number | string): string {\n\tconst [integerPart, decimalPart] = num.toString().split('.')\n\tconst formattedInt = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n\treturn decimalPart ? `${formattedInt}.${decimalPart}` : formattedInt\n}\n\n/**\n * 校验邮箱地址是否符合支持 Unicode 字母的规则。\n *\n * @param email 待校验邮箱。\n * @returns 符合规则时返回 `true`,否则返回 `false`。\n */\nexport function $isValidEmailWithUnicode(email?: string) {\n\temail = email || ''\n\tconst regex = /^[\\p{L}\\p{N}._%+-]+@(?:[\\p{L}\\p{N}-]+\\.)+[\\p{L}]{2,}$/u\n\treturn regex.test(email)\n}\n\n/**\n * 校验邮箱格式,不合法时直接抛错。\n *\n * @param email 待校验邮箱。\n * @returns 合法时无返回值。\n * @throws 当邮箱不合法时抛出错误。\n */\nexport function $checkValidEmailWithUnicode(email?: string) {\n\tif (!$isValidEmailWithUnicode(email)) errMsg('Invalid email address')\n}\n\nexport const shanghaiDateFormatter = new Intl.DateTimeFormat('zh-CN', {\n\ttimeZone: 'Asia/Shanghai',\n\tyear: 'numeric',\n\tmonth: 'numeric',\n\tday: 'numeric',\n\thour: '2-digit',\n\tminute: '2-digit',\n\thour12: false,\n})\n/**\n * 将日期输入格式化为 `YYYY年M月D日 HH:mm`。\n *\n * @param dateInput 任何可被 `Date` 构造函数接受的输入。\n * @returns 返回格式化后的日期字符串。\n */\nexport function $formatDate(dateInput: string | number | Date): string {\n\tconst date = new Date(dateInput)\n\tconst parts = shanghaiDateFormatter.formatToParts(date)\n\tconst getPart = (type: Intl.DateTimeFormatPartTypes) =>\n\t\tparts.find((part) => part.type === type)?.value ?? ''\n\n\tconst year = getPart('year')\n\tconst month = getPart('month')\n\tconst day = getPart('day')\n\tconst hour = getPart('hour')\n\tconst minute = getPart('minute')\n\n\treturn `${year}年${month}月${day}日 ${hour}:${minute}`\n}\n\n/**\n * 格式化数值为字符串,先放大再保留指定小数位数,并添加千分位分隔符。\n *\n * 行为说明:\n * - 先将数值乘以 10^bits 进行放大。\n * - 然后使用 `toFixed(bits)` 保留指定位数的小数。\n * - 最后通过 `$formatWithCommas` 添加千分位逗号分隔符。\n * - 当输入不是有效数字时返回 `'-'`。\n *\n * @param points 要格式化的数值。\n * @param bits 放大倍数的指数,同时也是小数位数,默认为 `2`。\n * @returns 返回格式化后的字符串(含千分位);输入无效时返回 `'-'`。\n *\n * @example\n * $formatPoints(1.23, 2) // 返回 \"123.00\"\n * $formatPoints(12.34, 2) // 返回 \"1,234.00\"\n * $formatPoints(0.5, 3) // 返回 \"500.000\"\n */\nexport function $formatPoints(points?: number, bits = 2) {\n\tif (!$sc(points)) return '-'\n\treturn $formatWithCommas((points * Math.pow(10, -bits)).toFixed(bits))\n}\n\n/**\n * 格式化数值为带符号和颜色的显示元组,并添加千分位分隔符。\n *\n * 行为说明:\n * - 先将数值乘以 10^bits 进行放大,然后使用 `toFixed(bits)` 格式化。\n * - 通过 `$formatWithCommas` 添加千分位逗号分隔符。\n * - 根据数值正负自动添加符号前缀并分配对应颜色。\n * - 正数:前缀 `'+'`,颜色 `'#0a0'`(绿色)。\n * - 负数:前缀 `'-'`,颜色 `'#a00'`(红色)。\n * - 零或其他:无前缀,颜色 `'#333'`(深灰色)。\n * - 当输入不是有效数字时返回 `['+?', '#333']`。\n *\n * @param points 要格式化的数值。\n * @param bits 放大倍数的指数,同时也是小数位数,默认为 `2`。\n * @returns 返回包含显示文本(含千分位)和颜色的元组 `[display, color]`。\n *\n * @example\n * $formatPointsWithChange(1.23, 2) // 返回 [\"+123.00\", \"#0a0\"]\n * $formatPointsWithChange(12.34, 2) // 返回 [\"+1,234.00\", \"#0a0\"]\n * $formatPointsWithChange(-0.5, 2) // 返回 [\"-50.00\", \"#a00\"]\n * $formatPointsWithChange(0, 2) // 返回 [\"0.00\", \"#333\"]\n */\nexport function $formatPointsWithChange(\n\tpoints?: number,\n\tbits = 2,\n): [display: string, color: string] {\n\tlet color = '#333'\n\tif (!$sc(points)) return ['+?', color]\n\tlet prefix = ''\n\tif (points > 0) {\n\t\tprefix = '+'\n\t\tcolor = '#0a0'\n\t} else if (points < 0) {\n\t\tcolor = '#a00'\n\t}\n\treturn [prefix + $formatWithCommas((points * Math.pow(10, -bits)).toFixed(bits)), color]\n}\n\nconst BYTE_UNITS = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB']\n\n/**\n * 字节数语义化显示,格式与 npm `pretty-bytes` 库一致(1000 进制)。\n *\n * 行为说明:\n * - 0 / NaN / undefined 返回 `'0 B'`。\n * - 负数与官方一致:记录符号 → 取绝对值计算 → 前缀拼回 `'-'`。\n * - 保留 3 位有效数字,单位前后有空格。\n *\n * @param n 字节数。\n * @returns 返回语义化字符串。\n *\n * @example\n * $humanizeBytes(0) // 返回 \"0 B\"\n * $humanizeBytes(1234) // 返回 \"1.23 kB\"\n * $humanizeBytes(12345678) // 返回 \"12.3 MB\"\n * $humanizeBytes(1500000000) // 返回 \"1.5 GB\"\n * $humanizeBytes(-1234) // 返回 \"-1.23 kB\"\n */\nexport function $humanizeBytes(n?: number): string {\n\tif (!n) return '0 B'\n\tconst sign = n < 0 ? '-' : ''\n\tconst abs = Math.abs(n)\n\tlet i = Math.floor(Math.log(abs) / Math.log(1000))\n\tif (i >= BYTE_UNITS.length) i = BYTE_UNITS.length - 1\n\tconst v = abs / Math.pow(1000, i)\n\tconst num = v >= 100 ? v.toFixed(0) : v >= 10 ? v.toFixed(1) : v.toFixed(2)\n\treturn `${sign}${num} ${BYTE_UNITS[i]}`\n}\n\n/**\n * 以 k 为单位、保留 1 位小数;整数部分每 3 位加英文逗号。\n *\n * 行为说明:\n * - NaN / undefined 当作 0 处理。\n * - 负数:记录符号 → 取绝对值计算 → 前缀拼回 `'-'`。\n * - 小数四舍五入到 1 位,进位到 10 时整数部分 +1、小数归零。\n *\n * @param n 待格式化的整数。\n * @returns 返回语义化字符串。\n *\n * @example\n * $formatK(0) // 返回 \"0.0 k\"\n * $formatK(999) // 返回 \"1.0 k\"\n * $formatK(12345) // 返回 \"12.3 k\"\n * $formatK(1234567) // 返回 \"1,234.6 k\"\n * $formatK(-12345) // 返回 \"-12.3 k\"\n */\nexport function $formatK(n?: number): string {\n\tconst x = n ?? 0\n\tconst sign = x < 0 ? '-' : ''\n\tconst k = Math.abs(x) / 1000\n\tlet intPart = Math.floor(k)\n\tlet deci = Math.round((k - intPart) * 10)\n\tif (deci === 10) {\n\t\tintPart += 1\n\t\tdeci = 0\n\t}\n\treturn `${sign}${$formatWithCommas(intPart)}.${deci} k`\n}\n\n/**\n * 将错误转换成一个始终包含 `msg` 字段的对象。\n *\n * @typeParam T 附加字段对象类型。\n * @param error 错误来源。\n * @param defVal 可选的附加字段对象。\n * @returns 返回 `{ msg }` 或 `{ msg, ...defVal }`。\n */\nexport function errCode<T extends Any>(error: any, defVal?: T) {\n\tconst msg = errToString(error)\n\treturn defVal ? { msg, ...defVal } : { msg }\n}\n\n/**\n * 抛出统一的“内容不正确”错误。\n *\n * @returns 不会返回。\n * @throws 始终抛出错误。\n */\nexport function errContent() {\n\terrMsg('内容不正确')\n}\n\n/**\n * 抛出统一的“参数不正确”错误。\n *\n * @returns 不会返回。\n * @throws 始终抛出错误。\n */\nexport function errArg() {\n\terrMsg('参数不正确')\n}\n\n/**\n * 抛出统一的“未登录”错误。\n *\n * @returns 不会返回。\n * @throws 始终抛出错误。\n */\nexport function errNotLoggedIn() {\n\terrMsg('你还没有登录')\n}\n\n/**\n * 抛出统一的“没有权限”错误。\n *\n * @returns 不会返回。\n * @throws 始终抛出错误。\n */\nexport function err403() {\n\terrMsg('你没有这个权限')\n}\n\n/**\n * 判断当前 UTC 时间是否接近指定的 UTC 整点。\n *\n * 当前实现允许前后约 3 分钟误差,并处理跨天情况。\n *\n * @param targetHour 目标 UTC 小时,通常应在 `0-23` 范围内。\n * @returns 如果当前 UTC 时间与目标小时足够接近,则返回 `true`。\n */\nexport function isNowAroundUtcHour(targetHour: number) {\n\tconst now = new Date()\n\n\t// 获取当前 UTC 小时和分钟\n\tconst utcHour = now.getUTCHours()\n\tconst utcMinute = now.getUTCMinutes()\n\n\t// 计算目标时间(UTC)的时间戳(以分钟为单位)\n\tconst targetTimeInMinutes = targetHour * 60\n\n\t// 当前时间的总 UTC 分钟\n\tconst nowTimeInMinutes = utcHour * 60 + utcMinute\n\n\t// 差值(正负都接受)\n\tconst diff = Math.abs(nowTimeInMinutes - targetTimeInMinutes)\n\n\t// 处理跨天情况,例如 targetHour 是 0,而当前时间是 23:58 UTC\n\tconst diffAlt = 1440 - diff // 24 * 60 = 1440\n\n\treturn diff <= 3 || diffAlt <= 3\n}\n\n/**\n * 将纯 base64 字符串解码为字节数组,兼容 Node 与浏览器环境。\n *\n * 说明:\n * - 优先使用浏览器 `atob`,失败后回退到 Node `Buffer`。\n * - 若输入为空或无法解码,返回空数组(长度为 0)。\n *\n * 返回值约定:\n * - 一定返回 `Uint8Array`(不会返回 null/undefined)。\n */\nfunction $decodeBase64ToBytes(base64: string) {\n\tconst pure = base64.trim()\n\n\tif (!pure) {\n\t\treturn new Uint8Array(0)\n\t}\n\n\ttry {\n\t\tif (typeof atob === 'function') {\n\t\t\tconst binary = atob(pure)\n\t\t\tconst bytes = new Uint8Array(binary.length)\n\t\t\tfor (let i = 0; i < binary.length; i++) {\n\t\t\t\tbytes[i] = binary.charCodeAt(i)\n\t\t\t}\n\t\t\treturn bytes\n\t\t}\n\t} catch {\n\t\t// noop\n\t}\n\n\ttry {\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\treturn Uint8Array.from(Buffer.from(pure, 'base64'))\n\t\t}\n\t} catch {\n\t\t// noop\n\t}\n\n\treturn new Uint8Array(0)\n}\n\n/**\n * 将字节数组指定区间转成 ASCII 字符串。\n *\n * 说明:\n * - 仅做逐字节 ASCII 转换,不做编码探测。\n * - 当区间越界时会自动截断到可读范围。\n *\n * 返回值约定:\n * - 一定返回 `string`(不会返回 null/undefined)。\n */\nfunction $bytesToAscii(bytes: Uint8Array, start: number, end: number) {\n\tlet out = ''\n\tfor (let i = start; i < end && i < bytes.length; i++) {\n\t\tout += String.fromCharCode(bytes[i])\n\t}\n\treturn out\n}\n\n/**\n * 清洗 base64 输入,统一得到“纯 base64”(不含 data URL 前缀)。\n *\n * 说明:\n * - 会移除 `data:*;base64,` 前缀。\n * - 会移除所有空白字符并 trim。\n * - 会校验 base64 格式;不合法时返回 null。\n * - 非字符串输入会返回 null。\n *\n * 返回值约定:\n * - 返回合法的纯 base64;不合法时返回 `null`。\n */\nexport function $purifyBase64(input: string | Null): string | null {\n\tif (typeof input !== 'string') {\n\t\treturn null\n\t}\n\n\tconst cleaned = input\n\t\t.replace(/^data:[^;]+;base64,/i, '')\n\t\t.replace(/\\s+/g, '')\n\t\t.trim()\n\n\tif (!cleaned) {\n\t\treturn null\n\t}\n\n\tif (!/^[A-Za-z0-9+/]+={0,2}$/.test(cleaned)) {\n\t\treturn null\n\t}\n\n\tif (cleaned.length % 4 !== 0) {\n\t\treturn null\n\t}\n\n\treturn cleaned\n}\n\n/**\n * 基于“纯 base64”推断文件 mime 类型。\n *\n * 说明:\n * - 图片:jpeg/png/gif/webp/bmp/tiff/avif/heic/x-icon/svg+xml。\n * - 音频:mpeg(mp3)/wav/ogg/flac/aac/m4a。\n * - 视频:mp4/webm/quicktime(mov)/x-msvideo(avi)/x-matroska(mkv)。\n * - 文档:pdf/msword(doc)/vnd.ms-excel(xls)/vnd.ms-powerpoint(ppt)/\n * vnd.openxmlformats-officedocument.*(docx/xlsx/pptx)。\n * - 压缩包:zip/x-rar-compressed/x-7z-compressed/gzip/x-tar。\n * - 其它:xml。\n * - 输入可为纯 base64 或 data URL,内部会先清洗。\n * - 无法识别时回退为 `application/octet-stream`。\n *\n * 返回值约定:\n * - 一定返回非空 mime 字符串(不会返回 null/undefined/空串)。\n */\nexport function $inferMimeTypeFormPureBase64(pureBase64: string | Null) {\n\tconst normalized = $purifyBase64(pureBase64)\n\tif (!normalized) {\n\t\treturn 'application/octet-stream'\n\t}\n\tconst bytes = $decodeBase64ToBytes(normalized)\n\n\t// === 图片 ===\n\tif (bytes.length >= 3 && bytes[0] === 0xff && bytes[1] === 0xd8 && bytes[2] === 0xff) {\n\t\treturn 'image/jpeg'\n\t}\n\tif (\n\t\tbytes.length >= 8 &&\n\t\tbytes[0] === 0x89 &&\n\t\tbytes[1] === 0x50 &&\n\t\tbytes[2] === 0x4e &&\n\t\tbytes[3] === 0x47 &&\n\t\tbytes[4] === 0x0d &&\n\t\tbytes[5] === 0x0a &&\n\t\tbytes[6] === 0x1a &&\n\t\tbytes[7] === 0x0a\n\t) {\n\t\treturn 'image/png'\n\t}\n\tif (\n\t\tbytes.length >= 6 &&\n\t\t($bytesToAscii(bytes, 0, 6) === 'GIF87a' || $bytesToAscii(bytes, 0, 6) === 'GIF89a')\n\t) {\n\t\treturn 'image/gif'\n\t}\n\tif (bytes.length >= 2 && bytes[0] === 0x42 && bytes[1] === 0x4d) {\n\t\treturn 'image/bmp'\n\t}\n\tif (\n\t\tbytes.length >= 4 &&\n\t\t((bytes[0] === 0x49 && bytes[1] === 0x49 && bytes[2] === 0x2a && bytes[3] === 0x00) ||\n\t\t\t(bytes[0] === 0x4d && bytes[1] === 0x4d && bytes[2] === 0x00 && bytes[3] === 0x2a))\n\t) {\n\t\treturn 'image/tiff'\n\t}\n\tif (\n\t\tbytes.length >= 8 &&\n\t\tbytes[0] === 0x00 &&\n\t\tbytes[1] === 0x00 &&\n\t\tbytes[2] === 0x01 &&\n\t\tbytes[3] === 0x00\n\t) {\n\t\treturn 'image/x-icon'\n\t}\n\n\t// SVG:常见以 `<?xml` 或 `<svg` 开头\n\tconst head = $bytesToAscii(bytes, 0, Math.min(bytes.length, 256)).trimStart().toLowerCase()\n\tif (head.startsWith('<svg') || (head.startsWith('<?xml') && head.includes('<svg'))) {\n\t\treturn 'image/svg+xml'\n\t}\n\n\t// === RIFF 容器(webp / wav / avi) ===\n\tif (bytes.length >= 12 && $bytesToAscii(bytes, 0, 4) === 'RIFF') {\n\t\tconst sub = $bytesToAscii(bytes, 8, 12)\n\t\tif (sub === 'WEBP') return 'image/webp'\n\t\tif (sub === 'WAVE') return 'audio/wav'\n\t\tif (sub === 'AVI ') return 'video/x-msvideo'\n\t}\n\n\t// === ISO BMFF 容器(mp4 / mov / avif / heic / m4a) ===\n\tif (bytes.length >= 12 && $bytesToAscii(bytes, 4, 8) === 'ftyp') {\n\t\tconst brand = $bytesToAscii(bytes, 8, 12)\n\t\tif (brand === 'avif' || brand === 'avis') return 'image/avif'\n\t\tif (brand === 'heic' || brand === 'heix' || brand === 'hevc' || brand === 'hevx')\n\t\t\treturn 'image/heic'\n\t\tif (brand === 'qt ') return 'video/quicktime'\n\t\tif (brand === 'M4A ' || brand === 'M4B ' || brand === 'M4P ') return 'audio/mp4'\n\t\t// 其余 ftyp 品牌(mp42/isom/iso2/avc1/mmp4/dash/...)当作 mp4 视频\n\t\treturn 'video/mp4'\n\t}\n\n\t// === EBML(webm / mkv) ===\n\tif (\n\t\tbytes.length >= 4 &&\n\t\tbytes[0] === 0x1a &&\n\t\tbytes[1] === 0x45 &&\n\t\tbytes[2] === 0xdf &&\n\t\tbytes[3] === 0xa3\n\t) {\n\t\t// 在前 4KB 内找 DocType;webm 字符串出现则判定 webm,否则按 mkv\n\t\tconst sniffEnd = Math.min(bytes.length, 4096)\n\t\tconst sniff = $bytesToAscii(bytes, 0, sniffEnd)\n\t\tif (sniff.includes('webm')) return 'video/webm'\n\t\treturn 'video/x-matroska'\n\t}\n\n\t// === 音频 ===\n\tif (bytes.length >= 4 && $bytesToAscii(bytes, 0, 4) === 'OggS') {\n\t\treturn 'audio/ogg'\n\t}\n\tif (bytes.length >= 4 && $bytesToAscii(bytes, 0, 4) === 'fLaC') {\n\t\treturn 'audio/flac'\n\t}\n\t// MP3:ID3v2 头 或 帧同步 0xFF Ex/Fx\n\tif (bytes.length >= 3 && $bytesToAscii(bytes, 0, 3) === 'ID3') {\n\t\treturn 'audio/mpeg'\n\t}\n\tif (bytes.length >= 2 && bytes[0] === 0xff && (bytes[1] & 0xe0) === 0xe0) {\n\t\t// AAC ADTS 同步字 (FF F1 / FF F9)\n\t\tif (bytes[1] === 0xf1 || bytes[1] === 0xf9) return 'audio/aac'\n\t\treturn 'audio/mpeg'\n\t}\n\n\t// === 文档 ===\n\tif (bytes.length >= 4 && $bytesToAscii(bytes, 0, 4) === '%PDF') {\n\t\treturn 'application/pdf'\n\t}\n\t// CFB(老 Office:doc/xls/ppt)\n\tif (\n\t\tbytes.length >= 8 &&\n\t\tbytes[0] === 0xd0 &&\n\t\tbytes[1] === 0xcf &&\n\t\tbytes[2] === 0x11 &&\n\t\tbytes[3] === 0xe0 &&\n\t\tbytes[4] === 0xa1 &&\n\t\tbytes[5] === 0xb1 &&\n\t\tbytes[6] === 0x1a &&\n\t\tbytes[7] === 0xe1\n\t) {\n\t\treturn 'application/x-cfb'\n\t}\n\n\t// === 压缩包(含 OOXML:docx/xlsx/pptx 也是 zip) ===\n\tif (\n\t\tbytes.length >= 4 &&\n\t\tbytes[0] === 0x50 &&\n\t\tbytes[1] === 0x4b &&\n\t\t(bytes[2] === 0x03 || bytes[2] === 0x05 || bytes[2] === 0x07) &&\n\t\t(bytes[3] === 0x04 || bytes[3] === 0x06 || bytes[3] === 0x08)\n\t) {\n\t\t// 在前 4KB 内嗅探 OOXML 特征文件名,以区分 docx/xlsx/pptx\n\t\tconst sniffEnd = Math.min(bytes.length, 4096)\n\t\tconst sniff = $bytesToAscii(bytes, 0, sniffEnd)\n\t\tif (sniff.includes('word/')) {\n\t\t\treturn 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n\t\t}\n\t\tif (sniff.includes('xl/')) {\n\t\t\treturn 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t}\n\t\tif (sniff.includes('ppt/')) {\n\t\t\treturn 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\n\t\t}\n\t\treturn 'application/zip'\n\t}\n\tif (\n\t\tbytes.length >= 7 &&\n\t\tbytes[0] === 0x52 &&\n\t\tbytes[1] === 0x61 &&\n\t\tbytes[2] === 0x72 &&\n\t\tbytes[3] === 0x21 &&\n\t\tbytes[4] === 0x1a &&\n\t\tbytes[5] === 0x07\n\t) {\n\t\treturn 'application/x-rar-compressed'\n\t}\n\tif (\n\t\tbytes.length >= 6 &&\n\t\tbytes[0] === 0x37 &&\n\t\tbytes[1] === 0x7a &&\n\t\tbytes[2] === 0xbc &&\n\t\tbytes[3] === 0xaf &&\n\t\tbytes[4] === 0x27 &&\n\t\tbytes[5] === 0x1c\n\t) {\n\t\treturn 'application/x-7z-compressed'\n\t}\n\tif (bytes.length >= 2 && bytes[0] === 0x1f && bytes[1] === 0x8b) {\n\t\treturn 'application/gzip'\n\t}\n\t// tar:在偏移 257 处有 \"ustar\"\n\tif (bytes.length >= 265 && $bytesToAscii(bytes, 257, 262) === 'ustar') {\n\t\treturn 'application/x-tar'\n\t}\n\n\t// === XML / 通用文本 ===\n\tif (head.startsWith('<?xml')) {\n\t\treturn 'application/xml'\n\t}\n\n\treturn 'application/octet-stream'\n}\n\n/**\n * 基于“纯 base64”推断文件后缀。\n *\n * 说明:\n * - 覆盖 `$inferMimeTypeFormPureBase64` 支持的全部类型。\n * - 输入可为纯 base64 或 data URL,内部会先清洗。\n * - 无法识别时回退为 `bin`。\n *\n * 返回值约定:\n * - 一定返回非空后缀字符串(不含点号,不会返回 null/undefined/空串)。\n */\nexport function $inferExtensionFormPureBase64(pureBase64: string | Null) {\n\tconst mime = $inferMimeTypeFormPureBase64(pureBase64)\n\tswitch (mime) {\n\t\t// 图片\n\t\tcase 'image/jpeg':\n\t\t\treturn 'jpg'\n\t\tcase 'image/png':\n\t\t\treturn 'png'\n\t\tcase 'image/gif':\n\t\t\treturn 'gif'\n\t\tcase 'image/webp':\n\t\t\treturn 'webp'\n\t\tcase 'image/bmp':\n\t\t\treturn 'bmp'\n\t\tcase 'image/tiff':\n\t\t\treturn 'tiff'\n\t\tcase 'image/avif':\n\t\t\treturn 'avif'\n\t\tcase 'image/heic':\n\t\t\treturn 'heic'\n\t\tcase 'image/x-icon':\n\t\t\treturn 'ico'\n\t\tcase 'image/svg+xml':\n\t\t\treturn 'svg'\n\t\t// 音频\n\t\tcase 'audio/mpeg':\n\t\t\treturn 'mp3'\n\t\tcase 'audio/wav':\n\t\t\treturn 'wav'\n\t\tcase 'audio/ogg':\n\t\t\treturn 'ogg'\n\t\tcase 'audio/flac':\n\t\t\treturn 'flac'\n\t\tcase 'audio/aac':\n\t\t\treturn 'aac'\n\t\tcase 'audio/mp4':\n\t\t\treturn 'm4a'\n\t\t// 视频\n\t\tcase 'video/mp4':\n\t\t\treturn 'mp4'\n\t\tcase 'video/webm':\n\t\t\treturn 'webm'\n\t\tcase 'video/quicktime':\n\t\t\treturn 'mov'\n\t\tcase 'video/x-msvideo':\n\t\t\treturn 'avi'\n\t\tcase 'video/x-matroska':\n\t\t\treturn 'mkv'\n\t\t// 文档\n\t\tcase 'application/pdf':\n\t\t\treturn 'pdf'\n\t\tcase 'application/x-cfb':\n\t\t\treturn 'doc'\n\t\tcase 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n\t\t\treturn 'docx'\n\t\tcase 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n\t\t\treturn 'xlsx'\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n\t\t\treturn 'pptx'\n\t\t// 压缩包\n\t\tcase 'application/zip':\n\t\t\treturn 'zip'\n\t\tcase 'application/x-rar-compressed':\n\t\t\treturn 'rar'\n\t\tcase 'application/x-7z-compressed':\n\t\t\treturn '7z'\n\t\tcase 'application/gzip':\n\t\t\treturn 'gz'\n\t\tcase 'application/x-tar':\n\t\t\treturn 'tar'\n\t\t// 其它\n\t\tcase 'application/xml':\n\t\t\treturn 'xml'\n\t\tdefault:\n\t\t\treturn 'bin'\n\t}\n}\n\n/**\n * 将“纯 base64 或 data URL”统一转成标准 data URL。\n *\n * 说明:\n * - 如果输入本来是 data URL,会清洗并标准化后返回。\n * - 如果输入是纯 base64,会自动推断 mime 并补齐 `data:*;base64,` 前缀。\n * - 非字符串、空字符串或不合法内容返回 null。\n *\n * 返回值约定:\n * - 返回标准 data URL;若输入不合法则返回 `null`。\n */\nexport function $toDataUrlFromBase64(base64WithDataOrPure: string | Null): string | null {\n\tif (typeof base64WithDataOrPure !== 'string') {\n\t\treturn null\n\t}\n\tconst pure = $purifyBase64(base64WithDataOrPure)\n\tif (!pure) {\n\t\treturn null\n\t}\n\ttry {\n\t\tconst mime =\n\t\t\t/^data:([^;]+);base64,/i.exec(base64WithDataOrPure.trim())?.[1] ||\n\t\t\t$inferMimeTypeFormPureBase64(pure)\n\t\treturn `data:${mime};base64,${pure}`\n\t} catch {\n\t\treturn null\n\t}\n}\n\nexport const $getHue = (json: Object) => {\n\tlet f = ''\n\ttry {\n\t\tf = $jsonStringify(json)\n\t} catch (e) {\n\t\tf = String(json)\n\t}\n\treturn $stringToRange(f, 360)\n}\n\nexport const $borderColor = (json: any) => `hsl(${$getHue(json)}, 100%, 33%)`\nexport const $backgroundColor = (json: any) => `hsl(${$getHue(json)}, 100%, 40%)`\n","// export type LogFilter = (msg: string) => boolean // true means filter out\n\nimport { $loadOpt } from './Functions'\n\nexport type DozyConfigItem = {}\nexport type DozyConfig = Partial<DozyConfigItem>\n\nclass Dozy {\n\t/**\n\t * 将用户传入的配置合并到当前运行时配置对象中。\n\t *\n\t * 行为说明:\n\t * - 通过 `$loadOpt` 逐字段合并。\n\t * - 当两边字段都是对象时,会继续执行嵌套合并。\n\t * - 现有属性可能会被新值覆盖。\n\t *\n\t * @param config 要合并进 `this.config` 的部分配置对象。\n\t * @returns 无返回值;内部 `config` 会被原地更新。\n\t */\n\tloadConfig(config: DozyConfig) {\n\t\t$loadOpt(this.config, config)\n\t}\n\tconfig: DozyConfig = {}\n}\nexport const dozy = new Dozy()\n","export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n","/* @ts-self-types=\"./index.d.ts\" */\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << Math.log2(alphabet.length - 1)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step | 0\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length >= size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","import { nanoid } from 'nanoid'\nimport imageCompression, { Options } from 'browser-image-compression'\nimport { $toDataUrlFromBase64 } from './Functions'\n\n/**\n * 将当前历史记录替换为规范化后的路径。\n *\n * @param s 目标路径;如果没有以 `/` 开头会自动补上。\n * @returns 无返回值。\n */\nexport function web$setPathTarget(s: string) {\n\tif (!s.startsWith('/')) s = '/' + s\n\thistory.replaceState(null, '', s)\n}\n\n/**\n * 读取并规范化当前浏览器地址信息。\n *\n * 行为说明:\n * - 会识别 `#/...` 这种 hash 路由跳转,并把地址改写成规范路径。\n * - 会去掉 `path` 前导 `/` 以及结尾的 `.html` / `.htm`。\n * - 会去掉 `search` 前面的 `?`。\n *\n * @returns 返回一个描述当前地址状态的对象,包含 `href`、`origin`、`target`、`host`、`path`、`search`、`standardJump` 等字段。\n */\nexport function web$pathStartData() {\n\tlet o = {\n\t\thref: '',\n\t\torigin: '',\n\t\ttarget: '',\n\t\thost: '',\n\t\tpath: '',\n\t\tsearch: '',\n\t\tstandardJump: false,\n\t}\n\tlet current = window.location.href\n\to.href = current\n\tlet index = current.indexOf('/', current.indexOf(':') + 3)\n\to.origin = current.substring(0, index)\n\to.target = current.substring(index)\n\to.host = o.origin.substring(o.origin.indexOf(':') + 3)\n\tlet hash = window.location.hash\n\to.standardJump = hash.startsWith('#/')\n\tif (o.standardJump) {\n\t\to.target = hash.substring(1)\n\t\tweb$setPathTarget(o.target)\n\t}\n\tlet xx = window.location.pathname\n\txx = xx.startsWith('/') ? xx.substring(1) : xx\n\tif (xx.endsWith('.html')) xx = xx.substring(0, xx.length - 5)\n\tif (xx.endsWith('.htm')) xx = xx.substring(0, xx.length - 4)\n\tif (xx.endsWith('/')) xx = xx.substring(0, xx.length - 1)\n\to.path = xx\n\tlet x = window.location.search\n\to.search = !x.startsWith('?') || x.length < 2 ? '' : x.substring(1)\n\treturn o\n}\nlet failed = false\n\n/**\n * 在浏览器中开启轻量级的生产环境防调试保护。\n *\n * 副作用包括:\n * - 禁用右键菜单。\n * - 阻止 `F12` 和 `Ctrl+Shift+I`。\n * - 周期性检测开发者工具是否可能被打开,若触发则跳转离开当前页。\n *\n * @returns 无返回值;在服务端环境下不会执行任何逻辑。\n */\nexport function web$enableProdProtector() {\n\tif (typeof window === 'undefined') return\n\tdocument.oncontextmenu = function (event: any) {\n\t\tif (window.event) {\n\t\t\tevent = window.event\n\t\t}\n\t\ttry {\n\t\t\tlet the = event.srcElement\n\t\t\tif (\n\t\t\t\t!(\n\t\t\t\t\t(the.tagName == 'INPUT' && the.type.toLowerCase() == 'text') ||\n\t\t\t\t\tthe.tagName == 'TEXTAREA'\n\t\t\t\t)\n\t\t\t)\n\t\t\t\treturn false\n\t\t\treturn false\n\t\t} catch (e) {\n\t\t\treturn false\n\t\t}\n\t}\n\tdocument.addEventListener('keydown', (event: KeyboardEvent) => {\n\t\tif (event.key === 'F12' || (event.ctrlKey && event.shiftKey && event.key === 'I')) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t})\n\tsetInterval(() => {\n\t\tif (\n\t\t\t(() => {\n\t\t\t\tconst threshold = Number(430) && 900\n\t\t\t\tlet dw = window.outerWidth - window.innerWidth\n\t\t\t\tlet dh = window.outerHeight - window.innerHeight\n\t\t\t\tconst widthThreshold = dw > threshold\n\t\t\t\tconst heightThreshold = dh > threshold\n\t\t\t\tif (widthThreshold || heightThreshold) return true\n\t\t\t\tconst startTime = performance.now()\n\t\t\t\tdebugger\n\t\t\t\tconst endTime = performance.now()\n\t\t\t\treturn endTime - startTime > 100\n\t\t\t})() &&\n\t\t\t!failed\n\t\t) {\n\t\t\tfailed = true\n\t\t\twindow.location.href = `https://www.bing.com/search?q=${nanoid()}`\n\t\t}\n\t}, 80)\n}\n\n/**\n * 在浏览器环境下把 `http:` 页面自动重定向到 `https:`。\n *\n * 例外情况:\n * - `localhost`\n * - `127.0.0.1`\n *\n * @returns 无返回值。\n */\nexport function web$enableHttpsRedirect() {\n\tif (typeof window !== 'undefined') {\n\t\tconst { protocol, hostname, href } = window.location\n\t\tif (\n\t\t\ttypeof href === 'string' &&\n\t\t\thref.startsWith('http:') &&\n\t\t\t!['localhost', '127.0.0.1'].includes(hostname) &&\n\t\t\tprotocol === 'http:'\n\t\t)\n\t\t\twindow.location.href = href.replace(/^http:/, 'https:')\n\t}\n}\n\n/**\n * 将当前页面重定向到另一个域名,同时保留路径、查询参数和哈希。\n *\n * @param newDomain 目标域名,可以带或不带结尾斜杠。\n * @returns 无返回值;在服务端环境下直接返回。\n */\nexport function web$redirectToDomain(newDomain: string) {\n\tif (typeof window === 'undefined') return\n\tconst { pathname, search, hash } = window.location\n\twindow.location.href = `${newDomain.replace(/\\/$/, '')}${pathname}${search}${hash}`\n}\n\n/**\n * 将文本复制到系统剪贴板。\n *\n * 行为说明:\n * - 会先对传入内容执行 `trim()`。\n * - 优先使用 `navigator.clipboard.writeText`。\n * - 现代剪贴板接口失败时会回退到 `$fallbackCopy`。\n * - 非浏览器环境下返回 `undefined`。\n *\n * @param content 要复制的文本内容。\n * @returns 成功时返回 `true`,回退复制失败时返回 `false`,非浏览器环境下返回 `undefined`。\n */\nexport async function $copy(content: string) {\n\tcontent = content?.trim() || ''\n\tif (typeof window === 'undefined') return\n\tif (navigator.clipboard?.writeText) {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(content)\n\t\t\treturn true\n\t\t} catch (error) {\n\t\t\treturn $fallbackCopy(content)\n\t\t}\n\t}\n\treturn $fallbackCopy(content)\n}\n\n/**\n * 使用隐藏的 `<textarea>` 作为兼容方案执行复制。\n *\n * @param content 要复制的文本,会先被 `trim()` 处理。\n * @returns 当 `document.execCommand('copy')` 返回成功时为 `true`,否则为 `false`。\n */\nexport function $fallbackCopy(content: string) {\n\tcontent = content?.trim() || ''\n\tconst textArea = document.createElement('textarea')\n\ttextArea.value = content\n\ttextArea.style.position = 'fixed'\n\ttextArea.style.opacity = '0'\n\tdocument.body.appendChild(textArea)\n\ttextArea.focus()\n\ttextArea.select()\n\ttry {\n\t\tconst successful = document.execCommand('copy')\n\t\treturn successful\n\t} catch (err) {\n\t\treturn false\n\t} finally {\n\t\tdocument.body.removeChild(textArea)\n\t}\n}\n\n/**\n * 替换当前地址栏的 hash 部分,保留 pathname 和 search 不变。\n *\n * @param hash 目标 hash 值;传入时不需要带 `#` 前缀(会自动补上)。传空字符串则清除 hash。\n */\nexport function web$replaceHash(hash: string) {\n\tif (typeof window === 'undefined') return\n\tconst h = hash ? (hash.startsWith('#') ? hash : '#' + hash) : ''\n\twindow.history.replaceState(null, '', window.location.pathname + window.location.search + h)\n}\n\n/**\n * 将当前页面的路径、查询参数和哈希编码成一个 URI 片段字符串。\n *\n * @param hash 可选的替代 hash;如果传入时没有 `#` 前缀会自动补上。\n * @returns 编码后的 URI 组件字符串。\n * @throws 在非浏览器环境中会抛出空字符串。\n */\nexport function web$encodeURI(hash?: string) {\n\tif (typeof window === 'undefined') throw ''\n\tlet h = location.hash\n\tif (h === '#') h = ''\n\tif (hash && !hash.startsWith('#')) hash = '#' + hash\n\treturn `${encodeURIComponent(location.pathname + location.search + (h || hash || ''))}`\n}\n\nexport const $compressImageDefaultOptions: Options = {\n\t/** 最大文件大小 (MB),默认为无穷大 */\n\tmaxSizeMB: 0.5,\n\t/** 是否使用 Web Worker (多线程) 进行压缩,避免卡顿 UI,默认为 true */\n\tuseWebWorker: true,\n\t/** 最大宽度或高度,图片将缩放以适应此尺寸,默认为 undefined */\n\tmaxWidthOrHeight: 1920,\n\t/** 初始压缩质量 (0-1),默认为 1.0 */\n\t// initialQuality: 1.0,\n\t/** 最大迭代次数,默认为 10 */\n\t// maxIteration: 10,\n\t/** 是否保留 Exif 信息 (如拍摄时间、地点等),默认为 false */\n\t// preserveExif: false,\n\t/** 输出文件的 MIME 类型,默认与原图相同 */\n\t// fileType: 'image/jpeg',\n}\n\n/**\n * 将浏览器中的 `File` 对象转换为 data URL 字符串。\n *\n * @param file 浏览器文件对象。\n * @returns 返回一个 Promise,成功时得到完整的 data URL 字符串。\n */\nasync function $fileToDataUrl(file: File) {\n\treturn new Promise<string>((resolve, reject) => {\n\t\tconst reader = new FileReader()\n\t\treader.onload = () => {\n\t\t\tif (typeof reader.result === 'string') {\n\t\t\t\tresolve(reader.result)\n\t\t\t} else {\n\t\t\t\treject(new Error('Failed to convert file to data URL.'))\n\t\t\t}\n\t\t}\n\t\treader.onerror = () => reject(new Error('Error reading file.'))\n\t\treader.readAsDataURL(file)\n\t})\n}\n\n/**\n * 压缩 Base64 图片并以 data URL 形式返回。\n *\n * 说明:\n * - 同时支持纯 Base64 和已有 data URL 两种输入。\n * - 如果输入无法被规范化为合法 data URL,则返回空字符串。\n *\n * @param base64 输入的图片数据。\n * @param options 可选压缩配置,会覆盖默认配置。\n * @returns 返回压缩后的 data URL;如果输入无效则返回空字符串。\n */\nexport async function $compressImageBase64(base64: string, options?: Options) {\n\tconst dataUrl = $toDataUrlFromBase64(base64)\n\tif (!dataUrl) return ''\n\n\tconst mime = /^data:([^;]+);base64,/i.exec(dataUrl)?.[1] || 'image/jpeg'\n\tconst response = await fetch(dataUrl)\n\tconst blob = await response.blob()\n\tconst ext = mime.split('/')[1]?.replace('jpeg', 'jpg') || 'jpg'\n\tconst file = new File([blob], `${nanoid()}.${ext}`, { type: blob.type || mime })\n\tconst compressedFile = await $compressImage(file, options)\n\treturn $fileToDataUrl(compressedFile)\n}\n\nexport async function $compressImage(file: File, options?: Options): Promise<File>\nexport async function $compressImage(files: File[], options?: Options): Promise<File[]>\n\n/**\n * 在浏览器中压缩一个或多个图片文件。\n *\n * 行为说明:\n * - 会将用户传入配置与 `$compressImageDefaultOptions` 合并。\n * - 会保留原始文件名。\n * - 某个文件压缩失败时,会直接返回该原始文件,不会抛出中断整个批次。\n *\n * @param input 单个 `File` 或 `File[]`。\n * @param options 可选压缩配置。\n * @returns 返回 Promise;输入是单文件时得到单个 `File`,输入是数组时得到 `File[]`。\n */\nexport async function $compressImage(\n\tinput: File | File[],\n\toptions?: Options,\n): Promise<File | File[]> {\n\tconst opts = { ...$compressImageDefaultOptions, ...options }\n\n\tconst processFile = async (f: File) => {\n\t\ttry {\n\t\t\tconst compressedBlob = await imageCompression(f, opts)\n\t\t\treturn new File([compressedBlob], f.name, { type: compressedBlob.type })\n\t\t} catch (error) {\n\t\t\tconsole.error('Image compression failed:', error)\n\t\t\treturn f\n\t\t}\n\t}\n\n\tif (Array.isArray(input)) {\n\t\treturn Promise.all(input.map(processFile))\n\t} else {\n\t\treturn processFile(input)\n\t}\n}\n","import { $s, $sc } from '..'\nimport { l } from '../lodash'\n\n/*\n<div ref={outerContainer current}>\n\t<div>\n\t\t{children}\n\t</div>\n</div>\n*/\n\n/** xls 横屏模式下的默认最大宽高比。 */\nexport const DEFAULT_XLS_MAX_ASPECT_RATIO = 1.2\n\nexport type ScaleComputer = undefined | ((scaler: Scaler) => number)\nexport type ScaleIniter = (scaler: Scaler) => void\nexport type ScaleResponsiveOptions = {\n\t/**\n\t * xls 横屏模式下的 base 乘数。\n\t *\n\t * 默认写成 `640 / 320`,方便直观看出是从 320 基准扩展到 640 基准。\n\t */\n\tbaseMultiplier?: number\n\t/**\n\t * xls 横屏模式下的最大宽高比。\n\t *\n\t * 默认 {@link DEFAULT_XLS_MAX_ASPECT_RATIO}。\n\t */\n\txlsMaxAspectRatio?: number\n\t/** xls 状态变化时触发,方便业务侧保存状态。 */\n\tsetXls?: (b: boolean) => void\n}\nclass Scaler {\n\theightElement!: HTMLElement\n\twidthElement!: HTMLElement\n\toffsetHorizontal = 8\n\t/** 未进入 xls 响应式扩展前的基础内容宽度,setBase 会更新这个值。 */\n\tsourceBase = 320\n\t#base = 320\n\tset base(val: number) {\n\t\tif ($sc(val)) this.#base = val\n\t}\n\tget base() {\n\t\treturn this.#base\n\t}\n\t#mainScale = 1\n\tset mainScale(val: number) {\n\t\tthis.#mainScale = val || 1\n\t\tthis.onMainScaleChange?.(this.#mainScale)\n\t\tif (typeof window === 'undefined') return\n\t\tthis.innerContainer.style.transform =\n\t\t\t'translateX(-50%) scale(' +\n\t\t\t(this.mainScale + this.offsetHorizontal / this.base) +\n\t\t\t', ' +\n\t\t\tthis.mainScale +\n\t\t\t')'\n\t}\n\tget mainScale() {\n\t\treturn this.#mainScale\n\t}\n\t#scaleComputer: ScaleComputer\n\tget scaleComputer() {\n\t\treturn this.#scaleComputer\n\t}\n\tset scaleComputer(val: ScaleComputer) {\n\t\tif (val) {\n\t\t\tthis.mainScale = val(this)\n\t\t}\n\t\tthis.#scaleComputer = val\n\t}\n\n\tonMainScaleChange?: (scale: number) => void\n\n\tinnerContainer\n\t/**\n\t * 创建内部缩放器状态对象。\n\t *\n\t * @param innerContainer 需要接收宽度与 transform 更新的内部元素。\n\t */\n\tconstructor(innerContainer: HTMLElement) {\n\t\tthis.innerContainer = innerContainer\n\t}\n}\n\n/**\n * 为固定宽度的内部容器启用响应式缩放行为。\n *\n * 典型结构:\n * - `outerContainer` 作为高度占位容器。\n * - 第一个子元素或显式传入的 `innerContainer` 会通过 CSS transform 进行视觉缩放。\n *\n * 运行时行为:\n * - 在非浏览器环境下会直接返回 `undefined`。\n * - 如果无法解析出有效的内部容器,会直接抛错。\n * - 会挂载 `resize` 和 `ResizeObserver` 监听。\n *\n * @param outerContainer 外层包裹元素。\n * @param initer 可选初始化器,用于配置内部 `Scaler` 实例。\n * @param innerContainer 可选的内部缩放元素,默认取 `outerContainer.children[0]`。\n * @returns 在浏览器环境下返回包含 `resizer`、`clean`、`setBase` 方法的对象;否则返回 `undefined`。\n */\nexport function enableScaler(\n\touterContainer: HTMLElement,\n\tiniter?: ScaleIniter,\n\tinnerContainer?: HTMLElement,\n) {\n\tif (typeof window === 'undefined') return\n\tinnerContainer ||= outerContainer.children[0] as any\n\tif (!innerContainer || !(innerContainer instanceof HTMLElement))\n\t\tthrow 'please make the right constructure'\n\tconst scaler = new Scaler(innerContainer)\n\tiniter?.(scaler)\n\tconst outer = outerContainer.style\n\touter.width = '0'\n\touter.marginLeft = 'auto'\n\touter.marginRight = 'auto'\n\tconst inner = innerContainer.style\n\tinner.width = scaler.base + 'px'\n\tinner.height = 'fit-content'\n\tinner.transformOrigin = 'top center'\n\tinner.marginLeft = 'auto'\n\tinner.marginRight = 'auto'\n\tconst resizer = () => {\n\t\tif (scaler.scaleComputer) {\n\t\t\tscaler.mainScale = scaler.scaleComputer(scaler)\n\t\t}\n\t}\n\tconst thr = l.throttle(resizer)\n\tconst setBase = (val: number) => {\n\t\tscaler.sourceBase = val\n\t\tscaler.base = val\n\t\tinner.width = scaler.base + 'px'\n\t\tthr()\n\t}\n\twindow.addEventListener('resize', thr)\n\tresizer()\n\t// Fix: DevTools open on refresh or late mount may report stale clientWidth.\n\t// Use rAF + setTimeout fallback to guarantee re-measure after layout settles.\n\trequestAnimationFrame(() => requestAnimationFrame(resizer))\n\tconst initTimer = setTimeout(resizer, 150)\n\tconst ro = new ResizeObserver((entries) => {\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.target === innerContainer) {\n\t\t\t\touterContainer.style.height = `${entry.contentRect.height * scaler.mainScale}px`\n\t\t\t}\n\t\t\tif (entry.target === scaler.heightElement || entry.target === scaler.widthElement) {\n\t\t\t\tresizer()\n\t\t\t}\n\t\t}\n\t})\n\tro.observe(innerContainer)\n\tro.observe(scaler.widthElement)\n\tro.observe(scaler.heightElement)\n\treturn {\n\t\tresizer,\n\t\tclean: () => {\n\t\t\tclearTimeout(initTimer)\n\t\t\twindow.removeEventListener('resize', thr)\n\t\t\tro.disconnect()\n\t\t},\n\t\tsetBase,\n\t}\n}\n\n/**\n * 构建一个适用于常见视口布局的标准缩放初始化器。\n *\n * 返回的初始化器会配置宽高测量元素,并根据可用宽度与可选的最大宽高比计算缩放比例。\n *\n * @param args 初始化配置项。\n * @param args.maxAspectRatio 计算可用宽度时允许的最大 `width / height` 比例,默认 `Infinity`。\n * @param args.setFullScreenWidth 可选回调,用于接收计算后的可用宽度。\n * @param args.setFullContentHeight 可选回调,用于接收缩放后的虚拟内容高度。\n * @param args.setMainScale 可选回调,在主缩放值变化时触发。\n * @param args.offsetHorizontal 可选的水平像素补偿值,默认额外溢出 `8px`(左右各 `4px`)。\n * @param args.heightElement 可选高度测量元素,默认使用 `document.documentElement`。\n * @param args.widthElement 可选宽度测量元素,默认使用 `document.documentElement`。\n * @param args.base 可选基础内容宽度。\n * @param args.responsive 传入后启用 xls 横屏响应式:宽大于高时切换 base 与 maxAspectRatio,并同步 `html[data-xad-xls]`。\n * @returns 返回一个可供 `enableScaler` 使用的 `ScaleIniter` 函数。\n */\nexport const standardIniter: (args: {\n\tmaxAspectRatio?: number\n\tsetFullScreenWidth?: (x: number) => void\n\tsetFullContentHeight?: (x: number) => void\n\tsetMainScale?: (x: number) => void\n\toffsetHorizontal?: number\n\theightElement?: HTMLElement\n\twidthElement?: HTMLElement\n\tbase?: number\n\tresponsive?: ScaleResponsiveOptions\n}) => ScaleIniter =\n\t({\n\t\tmaxAspectRatio = Infinity,\n\t\tsetFullScreenWidth,\n\t\tsetFullContentHeight,\n\t\tsetMainScale,\n\t\twidthElement,\n\t\theightElement,\n\t\tbase,\n\t\toffsetHorizontal,\n\t\tresponsive,\n\t}) =>\n\t(scaler) => {\n\t\tscaler.widthElement = widthElement || document.documentElement\n\t\tscaler.heightElement = heightElement || document.documentElement\n\t\tscaler.onMainScaleChange = setMainScale\n\t\tconst originBase = ($sc(base) ? base : scaler.base) as number\n\t\tscaler.sourceBase = originBase\n\t\tscaler.base = originBase\n\t\tif ($sc(offsetHorizontal)) scaler.offsetHorizontal = offsetHorizontal\n\t\tscaler.scaleComputer = (scaler) => {\n\t\t\tif (typeof window === 'undefined') return 1\n\t\t\tconst welement = scaler.widthElement\n\t\t\tconst helement = scaler.heightElement\n\t\t\tconst w = welement.clientWidth\n\t\t\tconst h = helement.clientHeight\n\t\t\tconst xls = !!responsive && w > h\n\t\t\tconst finalBase = xls\n\t\t\t\t? scaler.sourceBase * (responsive.baseMultiplier ?? 640 / 320)\n\t\t\t\t: scaler.sourceBase\n\t\t\tconst finalMaxAspectRatio = xls\n\t\t\t\t? (responsive.xlsMaxAspectRatio ?? DEFAULT_XLS_MAX_ASPECT_RATIO)\n\t\t\t\t: maxAspectRatio\n\t\t\t// xls 状态交给 html 属性驱动 Tailwind 自定义变体,比如 xls:grid-cols-5。\n\t\t\tdocument.documentElement.dataset.xadXls = xls ? '1' : '0'\n\t\t\tresponsive?.setXls?.(xls)\n\t\t\tscaler.base = finalBase\n\t\t\tscaler.innerContainer.style.width = scaler.base + 'px'\n\t\t\tconst fullScreenWidth = Math.min(w, h * finalMaxAspectRatio)\n\t\t\tconst fscl = fullScreenWidth / scaler.base\n\t\t\tsetFullScreenWidth?.(fullScreenWidth) // setFullScreenWidth 此引用不会过期\n\t\t\tsetFullContentHeight?.(h / fscl)\n\t\t\treturn fscl\n\t\t}\n\t}\n","import { $decodeBase64ToUnicode, $encodeUnicodeToBase64 } from '../x/Functions'\n\nexport class StringObfuscator {\n\tkey: string\n\tlength: number\n\n\t/**\n\t * 创建一个基于 XOR + Base64 的字符串混淆器。\n\t *\n\t * @param key 用于逐字符 XOR 的密钥。\n\t * @param length 可选的固定输出长度;传 `-1` 表示关闭固定长度模式。\n\t */\n\tconstructor(key: string, length: number = -1) {\n\t\tthis.key = key\n\t\tthis.length = length\n\t}\n\n\t/**\n\t * 用给定密钥对字符串的每个字符执行 XOR,必要时循环使用密钥。\n\t *\n\t * @param str 需要转换的源文本。\n\t * @param key 循环参与 XOR 的密钥。\n\t * @returns 返回 XOR 处理后的字符串;结果更像二进制文本,不保证可直接阅读。\n\t */\n\txors(str: string, key: string): string {\n\t\tlet result = ''\n\t\tfor (let i = 0; i < str.length; i++) {\n\t\t\tresult += String.fromCharCode(str.charCodeAt(i) ^ key.charCodeAt(i % key.length))\n\t\t}\n\t\treturn result\n\t}\n\n\t/**\n\t * 将明文混淆成一个适合放在 URL 中的 Base64 风格字符串。\n\t *\n\t * 行为说明:\n\t * - 固定长度模式下,输入会先用空格补齐再进行 XOR。\n\t * - 结果会移除 `=` 补位,并把 `/` 替换为 `-`、`+` 替换为 `_`。\n\t * - 固定长度模式下,Base64 输出还会被截断到配置长度。\n\t *\n\t * @param input 要混淆的明文。\n\t * @returns 返回适合常见 URL/路径场景使用的混淆字符串。\n\t */\n\ten(input: string): string {\n\t\tlet length = this.length\n\t\tlet free = length === -1\n\t\tconst paddedInput = free ? input : input.padEnd(length, ' ')\n\t\tconst obfuscated = this.xors(paddedInput, this.key)\n\t\tlet a = $encodeUnicodeToBase64(obfuscated)\n\t\tif (!free) a = a.slice(0, length)\n\t\treturn a.replace(/=/g, '').replace(/\\//g, '-').replace(/\\+/g, '_')\n\t}\n\n\t/**\n\t * 从混淆字符串中恢复原始明文。\n\t *\n\t * 说明:\n\t * - 会先把 URL 安全替换恢复后再做 Base64 解码。\n\t * - 反混淆后会去掉尾部空格,这对固定长度模式很重要。\n\t * - 如果输入格式不正确,底层解码步骤可能会抛错。\n\t *\n\t * @param obfuscated 由 `en` 生成的混淆字符串。\n\t * @returns 返回解码后的原文,尾部补位空格会被移除。\n\t * @throws 输入无效时会继续向外抛出底层解码错误。\n\t */\n\tde(obfuscated: string): string {\n\t\ttry {\n\t\t\tconst base64Decoded = $decodeBase64ToUnicode(\n\t\t\t\tobfuscated.replace(/-/g, '/').replace(/_/g, '+'),\n\t\t\t)\n\t\t\treturn this.xors(base64Decoded, this.key).trim()\n\t\t} catch (error) {\n\t\t\tthrow error\n\t\t}\n\t}\n}\n\n// const free = new StringObfuscator(SECRET, -1)\n\n// export function $enx(text: string) {\n// return cp.AES.encrypt(text, SECRET).toString();\n// return free.en(text)\n// }\n\n// export function $dex(ciphertext: string) {\n// \t// const bytes = cp.AES.decrypt(ciphertext, SECRET);\n// \t// return bytes.toString(cp.enc.Utf8);\n// \treturn free.de(ciphertext)\n// }\n","export function getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n\n if (typeof process === \"object\" && process.version !== undefined) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${\n process.arch\n })`;\n }\n\n return \"<environment undetectable>\";\n}\n","// @ts-check\n\nexport function register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce((callback, name) => {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(() => {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce((method, registered) => {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n","// @ts-check\n\nexport function addHook(state, kind, name, hook) {\n const orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = (method, options) => {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = (method, options) => {\n let result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then((result_) => {\n result = result_;\n return orig(result, options);\n })\n .then(() => {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = (method, options) => {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch((error) => {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n","// @ts-check\n\nexport function removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n const index = state.registry[name]\n .map((registered) => {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n","// @ts-check\n\nimport { register } from \"./lib/register.js\";\nimport { addHook } from \"./lib/add.js\";\nimport { removeHook } from \"./lib/remove.js\";\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nconst bind = Function.bind;\nconst bindable = bind.bind(bind);\n\nfunction bindApi(hook, state, name) {\n const removeHookRef = bindable(removeHook, null).apply(\n null,\n name ? [state, name] : [state]\n );\n hook.api = { remove: removeHookRef };\n hook.remove = removeHookRef;\n [\"before\", \"error\", \"after\", \"wrap\"].forEach((kind) => {\n const args = name ? [state, kind, name] : [state, kind];\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);\n });\n}\n\nfunction Singular() {\n const singularHookName = Symbol(\"Singular\");\n const singularHookState = {\n registry: {},\n };\n const singularHook = register.bind(null, singularHookState, singularHookName);\n bindApi(singularHook, singularHookState, singularHookName);\n return singularHook;\n}\n\nfunction Collection() {\n const state = {\n registry: {},\n };\n\n const hook = register.bind(null, state);\n bindApi(hook, state);\n\n return hook;\n}\n\nexport default { Singular, Collection };\n","// pkg/dist-src/defaults.js\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/defaults.js\nvar userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\nvar DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\"\n }\n};\n\n// pkg/dist-src/util/lowercase-keys.js\nfunction lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n\n// pkg/dist-src/util/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/util/merge-deep.js\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults)) Object.assign(result, { [key]: options[key] });\n else result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n\n// pkg/dist-src/util/remove-undefined-properties.js\nfunction removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === void 0) {\n delete obj[key];\n }\n }\n return obj;\n}\n\n// pkg/dist-src/merge.js\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n } else {\n options = Object.assign({}, route);\n }\n options.headers = lowercaseKeys(options.headers);\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n if (options.url === \"/graphql\") {\n if (defaults && defaults.mediaType.previews?.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n (preview) => !mergedOptions.mediaType.previews.includes(preview)\n ).concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n }\n return mergedOptions;\n}\n\n// pkg/dist-src/util/add-query-parameters.js\nfunction addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return url + separator + names.map((name) => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\n\n// pkg/dist-src/util/extract-url-variable-names.js\nvar urlVariableRegex = /\\{[^{}}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/(?:^\\W+)|(?:(?<!\\W)\\W+$)/g, \"\").split(/,/);\n}\nfunction extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n\n// pkg/dist-src/util/omit.js\nfunction omit(object, keysToOmit) {\n const result = { __proto__: null };\n for (const key of Object.keys(object)) {\n if (keysToOmit.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n}\n\n// pkg/dist-src/util/url-template.js\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"bigint\" || typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(\n encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n );\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n result.push(\n encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n );\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n tmp.push(encodeValue(operator, value2));\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n template = template.replace(\n /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n function(_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function(variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n }\n );\n if (template === \"/\") {\n return template;\n } else {\n return template.replace(/\\/$/, \"\");\n }\n}\n\n// pkg/dist-src/parse.js\nfunction parse(options) {\n let method = options.method.toUpperCase();\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\"\n ]);\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n headers.accept = headers.accept.split(/,/).map(\n (format) => format.replace(\n /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n `application/vnd$1$2.${options.mediaType.format}`\n )\n ).join(\",\");\n }\n if (url.endsWith(\"/graphql\")) {\n if (options.mediaType.previews?.length) {\n const previewsFromAcceptHeader = headers.accept.match(/(?<![\\w-])[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n }\n }\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n }\n }\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n return Object.assign(\n { method, url, headers },\n typeof body !== \"undefined\" ? { body } : null,\n options.request ? { request: options.request } : null\n );\n}\n\n// pkg/dist-src/endpoint-with-defaults.js\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS2 = merge(oldDefaults, newDefaults);\n const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);\n return Object.assign(endpoint2, {\n DEFAULTS: DEFAULTS2,\n defaults: withDefaults.bind(null, DEFAULTS2),\n merge: merge.bind(null, DEFAULTS2),\n parse\n });\n}\n\n// pkg/dist-src/index.js\nvar endpoint = withDefaults(null, DEFAULTS);\nexport {\n endpoint\n};\n","// pkg/dist-src/index.js\nimport { endpoint } from \"@octokit/endpoint\";\n\n// pkg/dist-src/defaults.js\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"10.0.8\";\n\n// pkg/dist-src/defaults.js\nvar defaults_default = {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`\n }\n};\n\n// pkg/dist-src/fetch-wrapper.js\nimport { safeParse } from \"fast-content-type-parse\";\nimport { JSONParse, JSONStringify } from \"json-with-bigint\";\n\n// pkg/dist-src/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/fetch-wrapper.js\nimport { RequestError } from \"@octokit/request-error\";\nvar noop = () => \"\";\nasync function fetchWrapper(requestOptions) {\n const fetch = requestOptions.request?.fetch || globalThis.fetch;\n if (!fetch) {\n throw new Error(\n \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n );\n }\n const log = requestOptions.request?.log || console;\n const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;\n const body = isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body) ? JSONStringify(requestOptions.body) : requestOptions.body;\n const requestHeaders = Object.fromEntries(\n Object.entries(requestOptions.headers).map(([name, value]) => [\n name,\n String(value)\n ])\n );\n let fetchResponse;\n try {\n fetchResponse = await fetch(requestOptions.url, {\n method: requestOptions.method,\n body,\n redirect: requestOptions.request?.redirect,\n headers: requestHeaders,\n signal: requestOptions.request?.signal,\n // duplex must be set if request.body is ReadableStream or Async Iterables.\n // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n ...requestOptions.body && { duplex: \"half\" }\n });\n } catch (error) {\n let message = \"Unknown Error\";\n if (error instanceof Error) {\n if (error.name === \"AbortError\") {\n error.status = 500;\n throw error;\n }\n message = error.message;\n if (error.name === \"TypeError\" && \"cause\" in error) {\n if (error.cause instanceof Error) {\n message = error.cause.message;\n } else if (typeof error.cause === \"string\") {\n message = error.cause;\n }\n }\n }\n const requestError = new RequestError(message, 500, {\n request: requestOptions\n });\n requestError.cause = error;\n throw requestError;\n }\n const status = fetchResponse.status;\n const url = fetchResponse.url;\n const responseHeaders = {};\n for (const [key, value] of fetchResponse.headers) {\n responseHeaders[key] = value;\n }\n const octokitResponse = {\n url,\n status,\n headers: responseHeaders,\n data: \"\"\n };\n if (\"deprecation\" in responseHeaders) {\n const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(\n `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n );\n }\n if (status === 204 || status === 205) {\n return octokitResponse;\n }\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return octokitResponse;\n }\n throw new RequestError(fetchResponse.statusText, status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status === 304) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(\"Not modified\", status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status >= 400) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(toErrorMessage(octokitResponse.data), status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;\n return octokitResponse;\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (!contentType) {\n return response.text().catch(noop);\n }\n const mimetype = safeParse(contentType);\n if (isJSONResponse(mimetype)) {\n let text = \"\";\n try {\n text = await response.text();\n return JSONParse(text);\n } catch (err) {\n return text;\n }\n } else if (mimetype.type.startsWith(\"text/\") || mimetype.parameters.charset?.toLowerCase() === \"utf-8\") {\n return response.text().catch(noop);\n } else {\n return response.arrayBuffer().catch(\n /* v8 ignore next -- @preserve */\n () => new ArrayBuffer(0)\n );\n }\n}\nfunction isJSONResponse(mimetype) {\n return mimetype.type === \"application/json\" || mimetype.type === \"application/scim+json\";\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\") {\n return data;\n }\n if (data instanceof ArrayBuffer) {\n return \"Unknown error\";\n }\n if (\"message\" in data) {\n const suffix = \"documentation_url\" in data ? ` - ${data.documentation_url}` : \"\";\n return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(\", \")}${suffix}` : `${data.message}${suffix}`;\n }\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint2 = oldEndpoint.defaults(newDefaults);\n const newApi = function(route, parameters) {\n const endpointOptions = endpoint2.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint2.parse(endpointOptions));\n }\n const request2 = (route2, parameters2) => {\n return fetchWrapper(\n endpoint2.parse(endpoint2.merge(route2, parameters2))\n );\n };\n Object.assign(request2, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n return endpointOptions.request.hook(request2, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n}\n\n// pkg/dist-src/index.js\nvar request = withDefaults(endpoint, defaults_default);\nexport {\n request\n};\n/* v8 ignore next -- @preserve */\n/* v8 ignore else -- @preserve */\n","const intRegex = /^-?\\d+$/;\nconst noiseValue = /^-?\\d+n+$/; // Noise - strings that match the custom format before being converted to it\nconst originalStringify = JSON.stringify;\nconst originalParse = JSON.parse;\nconst customFormat = /^-?\\d+n$/;\n\nconst bigIntsStringify = /([\\[:])?\"(-?\\d+)n\"($|([\\\\n]|\\s)*(\\s|[\\\\n])*[,\\}\\]])/g;\nconst noiseStringify =\n /([\\[:])?(\"-?\\d+n+)n(\"$|\"([\\\\n]|\\s)*(\\s|[\\\\n])*[,\\}\\]])/g;\n\n/**\n * @typedef {(this: any, key: string | number | undefined, value: any) => any} Replacer\n * @typedef {(key: string | number | undefined, value: any, context?: { source: string }) => any} Reviver\n */\n\n/**\n * Converts a JavaScript value to a JSON string.\n *\n * Supports serialization of BigInt values using two strategies:\n * 1. Custom format \"123n\" → \"123\" (universal fallback)\n * 2. Native JSON.rawJSON() (Node.js 22+, fastest) when available\n *\n * All other values are serialized exactly like native JSON.stringify().\n *\n * @param {*} value The value to convert to a JSON string.\n * @param {Replacer | Array<string | number> | null} [replacer]\n * A function that alters the behavior of the stringification process,\n * or an array of strings/numbers to indicate properties to exclude.\n * @param {string | number} [space]\n * A string or number to specify indentation or pretty-printing.\n * @returns {string} The JSON string representation.\n */\nconst JSONStringify = (value, replacer, space) => {\n if (\"rawJSON\" in JSON) {\n return originalStringify(\n value,\n (key, value) => {\n if (typeof value === \"bigint\") return JSON.rawJSON(value.toString());\n\n if (typeof replacer === \"function\") return replacer(key, value);\n\n if (Array.isArray(replacer) && replacer.includes(key)) return value;\n\n return value;\n },\n space,\n );\n }\n\n if (!value) return originalStringify(value, replacer, space);\n\n const convertedToCustomJSON = originalStringify(\n value,\n (key, value) => {\n const isNoise = typeof value === \"string\" && noiseValue.test(value);\n\n if (isNoise) return value.toString() + \"n\"; // Mark noise values with additional \"n\" to offset the deletion of one \"n\" during the processing\n\n if (typeof value === \"bigint\") return value.toString() + \"n\";\n\n if (typeof replacer === \"function\") return replacer(key, value);\n\n if (Array.isArray(replacer) && replacer.includes(key)) return value;\n\n return value;\n },\n space,\n );\n const processedJSON = convertedToCustomJSON.replace(\n bigIntsStringify,\n \"$1$2$3\",\n ); // Delete one \"n\" off the end of every BigInt value\n const denoisedJSON = processedJSON.replace(noiseStringify, \"$1$2$3\"); // Remove one \"n\" off the end of every noisy string\n\n return denoisedJSON;\n};\n\nconst featureCache = new Map();\n\n/**\n * Detects if the current JSON.parse implementation supports the context.source feature.\n *\n * Uses toString() fingerprinting to cache results and automatically detect runtime\n * replacements of JSON.parse (polyfills, mocks, etc.).\n *\n * @returns {boolean} true if context.source is supported, false otherwise.\n */\nconst isContextSourceSupported = () => {\n const parseFingerprint = JSON.parse.toString();\n\n if (featureCache.has(parseFingerprint)) {\n return featureCache.get(parseFingerprint);\n }\n\n try {\n const result = JSON.parse(\n \"1\",\n (_, __, context) => !!context?.source && context.source === \"1\",\n );\n featureCache.set(parseFingerprint, result);\n\n return result;\n } catch {\n featureCache.set(parseFingerprint, false);\n\n return false;\n }\n};\n\n/**\n * Reviver function that converts custom-format BigInt strings back to BigInt values.\n * Also handles \"noise\" strings that accidentally match the BigInt format.\n *\n * @param {string | number | undefined} key The object key.\n * @param {*} value The value being parsed.\n * @param {object} [context] Parse context (if supported by JSON.parse).\n * @param {Reviver} [userReviver] User's custom reviver function.\n * @returns {any} The transformed value.\n */\nconst convertMarkedBigIntsReviver = (key, value, context, userReviver) => {\n const isCustomFormatBigInt =\n typeof value === \"string\" && customFormat.test(value);\n if (isCustomFormatBigInt) return BigInt(value.slice(0, -1));\n\n const isNoiseValue = typeof value === \"string\" && noiseValue.test(value);\n if (isNoiseValue) return value.slice(0, -1);\n\n if (typeof userReviver !== \"function\") return value;\n\n return userReviver(key, value, context);\n};\n\n/**\n * Fast JSON.parse implementation (~2x faster than classic fallback).\n * Uses JSON.parse's context.source feature to detect integers and convert\n * large numbers directly to BigInt without string manipulation.\n *\n * Does not support legacy custom format from v1 of this library.\n *\n * @param {string} text JSON string to parse.\n * @param {Reviver} [reviver] Transform function to apply to each value.\n * @returns {any} Parsed JavaScript value.\n */\nconst JSONParseV2 = (text, reviver) => {\n return JSON.parse(text, (key, value, context) => {\n const isBigNumber =\n typeof value === \"number\" &&\n (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER);\n const isInt = context && intRegex.test(context.source);\n const isBigInt = isBigNumber && isInt;\n\n if (isBigInt) return BigInt(context.source);\n\n if (typeof reviver !== \"function\") return value;\n\n return reviver(key, value, context);\n });\n};\n\nconst MAX_INT = Number.MAX_SAFE_INTEGER.toString();\nconst MAX_DIGITS = MAX_INT.length;\nconst stringsOrLargeNumbers =\n /\"(?:\\\\.|[^\"])*\"|-?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+-]?[0-9]+)?/g;\nconst noiseValueWithQuotes = /^\"-?\\d+n+\"$/; // Noise - strings that match the custom format before being converted to it\n\n/**\n * Converts a JSON string into a JavaScript value.\n *\n * Supports parsing of large integers using two strategies:\n * 1. Classic fallback: Marks large numbers with \"123n\" format, then converts to BigInt\n * 2. Fast path (JSONParseV2): Uses context.source feature (~2x faster) when available\n *\n * All other JSON values are parsed exactly like native JSON.parse().\n *\n * @param {string} text A valid JSON string.\n * @param {Reviver} [reviver]\n * A function that transforms the results. This function is called for each member\n * of the object. If a member contains nested objects, the nested objects are\n * transformed before the parent object is.\n * @returns {any} The parsed JavaScript value.\n * @throws {SyntaxError} If text is not valid JSON.\n */\nconst JSONParse = (text, reviver) => {\n if (!text) return originalParse(text, reviver);\n\n if (isContextSourceSupported()) return JSONParseV2(text, reviver); // Shortcut to a faster (2x) and simpler version\n\n // Find and mark big numbers with \"n\"\n const serializedData = text.replace(\n stringsOrLargeNumbers,\n (text, digits, fractional, exponential) => {\n const isString = text[0] === '\"';\n const isNoise = isString && noiseValueWithQuotes.test(text);\n\n if (isNoise) return text.substring(0, text.length - 1) + 'n\"'; // Mark noise values with additional \"n\" to offset the deletion of one \"n\" during the processing\n\n const isFractionalOrExponential = fractional || exponential;\n const isLessThanMaxSafeInt =\n digits &&\n (digits.length < MAX_DIGITS ||\n (digits.length === MAX_DIGITS && digits <= MAX_INT)); // With a fixed number of digits, we can correctly use lexicographical comparison to do a numeric comparison\n\n if (isString || isFractionalOrExponential || isLessThanMaxSafeInt)\n return text;\n\n return '\"' + text + 'n\"';\n },\n );\n\n return originalParse(serializedData, (key, value, context) =>\n convertMarkedBigIntsReviver(key, value, context, reviver),\n );\n};\n\nexport { JSONStringify, JSONParse };\n","class RequestError extends Error {\n name;\n /**\n * http status code\n */\n status;\n /**\n * Request options that lead to the error.\n */\n request;\n /**\n * Response object if a response was received\n */\n response;\n constructor(message, statusCode, options) {\n super(message, { cause: options.cause });\n this.name = \"HttpError\";\n this.status = Number.parseInt(statusCode);\n if (Number.isNaN(this.status)) {\n this.status = 0;\n }\n /* v8 ignore else -- @preserve -- Bug with vitest coverage where it sees an else branch that doesn't exist */\n if (\"response\" in options) {\n this.response = options.response;\n }\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(\n /(?<! ) .*$/,\n \" [REDACTED]\"\n )\n });\n }\n requestCopy.url = requestCopy.url.replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\").replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n }\n}\nexport {\n RequestError\n};\n","// pkg/dist-src/index.js\nimport { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/with-defaults.js\nimport { request as Request2 } from \"@octokit/request\";\n\n// pkg/dist-src/graphql.js\nimport { request as Request } from \"@octokit/request\";\n\n// pkg/dist-src/error.js\nfunction _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nvar GraphqlResponseError = class extends Error {\n constructor(request2, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request2;\n this.headers = headers;\n this.response = response;\n this.errors = response.errors;\n this.data = response.data;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n name = \"GraphqlResponseError\";\n errors;\n data;\n};\n\n// pkg/dist-src/graphql.js\nvar NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\",\n \"operationName\"\n];\nvar FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nvar GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request2, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(\n new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n );\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;\n return Promise.reject(\n new Error(\n `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n )\n );\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(\n parsedOptions\n ).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request2(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(\n requestOptions,\n headers,\n response.data\n );\n }\n return response.data.data;\n });\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(request2, newDefaults) {\n const newRequest = request2.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: newRequest.endpoint\n });\n}\n\n// pkg/dist-src/index.js\nvar graphql2 = withDefaults(request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\nexport {\n GraphqlResponseError,\n graphql2 as graphql,\n withCustomRequest\n};\n","// pkg/dist-src/is-jwt.js\nvar b64url = \"(?:[a-zA-Z0-9_-]+)\";\nvar sep = \"\\\\.\";\nvar jwtRE = new RegExp(`^${b64url}${sep}${b64url}${sep}${b64url}$`);\nvar isJWT = jwtRE.test.bind(jwtRE);\n\n// pkg/dist-src/auth.js\nasync function auth(token) {\n const isApp = isJWT(token);\n const isInstallation = token.startsWith(\"v1.\") || token.startsWith(\"ghs_\");\n const isUserToServer = token.startsWith(\"ghu_\");\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token,\n tokenType\n };\n}\n\n// pkg/dist-src/with-authorization-prefix.js\nfunction withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n\n// pkg/dist-src/hook.js\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(\n route,\n parameters\n );\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n\n// pkg/dist-src/index.js\nvar createTokenAuth = function createTokenAuth2(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\n \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n );\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\nexport {\n createTokenAuth\n};\n","const VERSION = \"7.0.6\";\nexport {\n VERSION\n};\n","import { getUserAgent } from \"universal-user-agent\";\nimport Hook from \"before-after-hook\";\nimport { request } from \"@octokit/request\";\nimport { withCustomRequest } from \"@octokit/graphql\";\nimport { createTokenAuth } from \"@octokit/auth-token\";\nimport { VERSION } from \"./version.js\";\nconst noop = () => {\n};\nconst consoleWarn = console.warn.bind(console);\nconst consoleError = console.error.bind(console);\nfunction createLogger(logger = {}) {\n if (typeof logger.debug !== \"function\") {\n logger.debug = noop;\n }\n if (typeof logger.info !== \"function\") {\n logger.info = noop;\n }\n if (typeof logger.warn !== \"function\") {\n logger.warn = consoleWarn;\n }\n if (typeof logger.error !== \"function\") {\n logger.error = consoleError;\n }\n return logger;\n}\nconst userAgentTrail = `octokit-core.js/${VERSION} ${getUserAgent()}`;\nclass Octokit {\n static VERSION = VERSION;\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(\n Object.assign(\n {},\n defaults,\n options,\n options.userAgent && defaults.userAgent ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`\n } : null\n )\n );\n }\n };\n return OctokitWithDefaults;\n }\n static plugins = [];\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n const currentPlugins = this.plugins;\n const NewOctokit = class extends this {\n static plugins = currentPlugins.concat(\n newPlugins.filter((plugin) => !currentPlugins.includes(plugin))\n );\n };\n return NewOctokit;\n }\n constructor(options = {}) {\n const hook = new Hook.Collection();\n const requestDefaults = {\n baseUrl: request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\")\n }),\n mediaType: {\n previews: [],\n format: \"\"\n }\n };\n requestDefaults.headers[\"user-agent\"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = request.defaults(requestDefaults);\n this.graphql = withCustomRequest(this.request).defaults(requestDefaults);\n this.log = createLogger(options.log);\n this.hook = hook;\n if (!options.authStrategy) {\n if (!options.auth) {\n this.auth = async () => ({\n type: \"unauthenticated\"\n });\n } else {\n const auth = createTokenAuth(options.auth);\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n } else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(\n Object.assign(\n {\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions\n },\n options.auth\n )\n );\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n const classConstructor = this.constructor;\n for (let i = 0; i < classConstructor.plugins.length; ++i) {\n Object.assign(this, classConstructor.plugins[i](this, options));\n }\n }\n // assigned during constructor\n request;\n graphql;\n log;\n hook;\n // TODO: type `octokit.auth` based on passed options.authStrategy\n auth;\n}\nexport {\n Octokit\n};\n","import { Octokit } from '@octokit/core'\nimport {\n\t$decodeBase64ToBinary,\n\t$decodeBase64ToUnicode,\n\t$encodeUnicodeToBase64,\n\t$formatDate,\n\t$s,\n} from '../x/Functions'\nimport { $jsonParse, $jsonStringify } from './Store'\n\ntype q = any\n\n/**\n * RepoStore - GitHub 仓库内容存储类\n *\n * 基于 Octokit 实现的 GitHub 仓库文件操作类,支持文件的增删改查、JSON 序列化存储、\n * 目录列表等功能。所有操作都通过 GitHub REST API v3 的 Contents API 完成。\n *\n * @remarks\n * - 支持自动处理 Base64 编码/解码(GitHub API 要求文件内容使用 Base64 编码)\n * - 内置冲突重试机制(HTTP 409 冲突时自动重试)\n * - 提供原始模式和文本模式的切换(raw 参数)\n * - 可通过重写 `_process` 和 `path` 方法实现自定义处理(如加密、路径映射等)\n *\n * @example\n * ```typescript\n * const repo = new RepoStore('github-token', 'username', 'repo-name')\n *\n * // 存储 JSON 数据\n * await repo.putJson('data/config.json', { key: 'value' })\n *\n * // 读取 JSON 数据\n * const data = await repo.getJson('data/config.json')\n *\n * // 列出目录\n * const files = await repo.list('data')\n * ```\n */\nexport class RepoStore {\n\t/**\n\t * Octokit 实例,用于与 GitHub API 交互\n\t * @internal\n\t */\n\tware: Octokit\n\n\t/**\n\t * 仓库所有者(用户名或组织名)\n\t */\n\towner: string\n\n\t/**\n\t * 仓库名称\n\t */\n\trepo: string\n\n\t/**\n\t * HTTP 请求头配置\n\t * @property {'\"\"'} ['If-None-Match'] - 设置为空字符串以禁用 ETag 缓存,确保获取最新内容\n\t * @property {string} ['Cache-Control'] - 可选,用于禁用缓存(当前已注释)\n\t */\n\theaders = {\n\t\t// 'Cache-Control': 'no-cache',\n\t\t'If-None-Match': '\"\"',\n\t}\n\n\t/**\n\t * 内容预处理方法(可重写)\n\t *\n\t * 在内容被编码存储前或解码读取后调用,用于对内容进行自定义处理(如加密/解密、压缩/解压等)。\n\t * 这是一个钩子方法,子类可以重写以实现特定的内容转换逻辑。\n\t *\n\t * @param content - 要处理的内容字符串\n\t * @param en - 处理方向:`true` 表示编码(存储前),`false` 表示解码(读取后)\n\t * @returns 处理后的内容字符串\n\t *\n\t * @remarks\n\t * - 默认实现直接返回原内容,不做任何处理\n\t * - 当 `en=true` 时,在 Base64 编码之前调用\n\t * - 当 `en=false` 时,在 Base64 解码之后调用\n\t *\n\t * @example\n\t * ```typescript\n\t * class EncryptedRepoStore extends RepoStore {\n\t * _process(content: string, en: boolean) {\n\t * return en ? encrypt(content) : decrypt(content)\n\t * }\n\t * }\n\t * ```\n\t */\n\t_process(content: string, en: boolean) {\n\t\treturn content\n\t}\n\n\t/**\n\t * 路径处理方法(可重写)\n\t *\n\t * 在每次操作路径之前调用,用于对路径进行自定义转换(如添加前缀、路径映射等)。\n\t * 这是一个钩子方法,子类可以重写以实现特定的路径处理逻辑。\n\t *\n\t * @param path - 原始路径\n\t * @returns 处理后的路径\n\t *\n\t * @remarks\n\t * - 默认实现直接返回原路径,不做任何处理\n\t * - 所有公开方法(get、put、del、det、list 等)都会先调用此方法处理路径\n\t *\n\t * @example\n\t * ```typescript\n\t * class PrefixedRepoStore extends RepoStore {\n\t * path(path: string) {\n\t * return `data/${path}`\n\t * }\n\t * }\n\t * ```\n\t */\n\tpath(path: string) {\n\t\treturn path\n\t}\n\n\t/**\n\t * 检测文件或目录是否存在\n\t *\n\t * @param path - 要检测的文件或目录路径(相对于仓库根目录)\n\t * @returns `true` 表示存在,`false` 表示不存在(HTTP 404)\n\t *\n\t * @throws {Error} 当遇到非 404 错误时抛出异常(如权限不足、API 限流等)\n\t *\n\t * @remarks\n\t * - 使用 GitHub API 的 GET contents 端点进行检测\n\t * - 仅对 HTTP 404 错误返回 false,其他错误会向上抛出\n\t * - 会自动应用 `path()` 方法处理路径\n\t *\n\t * @example\n\t * ```typescript\n\t * if (await repo.det('config.json')) {\n\t * console.log('文件存在')\n\t * } else {\n\t * console.log('文件不存在')\n\t * }\n\t * ```\n\t */\n\tasync det(path: string) {\n\t\tpath = this.path(path)\n\t\ttry {\n\t\t\tawait this.ware.request('GET /repos/{owner}/{repo}/contents/{path}', {\n\t\t\t\towner: this.owner,\n\t\t\t\trepo: this.repo,\n\t\t\t\tpath: path,\n\t\t\t\theaders: this.headers,\n\t\t\t})\n\t\t\treturn true\n\t\t} catch (e: q) {\n\t\t\tif (e.status === 404) return false\n\t\t\tthrow e\n\t\t}\n\t}\n\n\t/**\n\t * 获取文件或目录内容\n\t *\n\t * @param path - 文件或目录路径(相对于仓库根目录)\n\t * @param raw - 原始模式标志\n\t * - `false`(默认):自动解码 Base64 内容,返回文本字符串或二进制数据\n\t * - `true`:返回 GitHub API 响应的原始 Base64 编码内容\n\t * @returns\n\t * - 当 `raw=true`:返回 Base64 编码的字符串\n\t * - 当 `raw=false` 且内容是文本:返回解码后的 Unicode 字符串(会经过 `_process` 处理)\n\t * - 当 `raw=false` 且内容是二进制:返回 `ArrayBuffer`\n\t * - 当 `data.content` 为空时:返回完整的 API 响应数据(可能是目录列表或文件元数据)\n\t *\n\t * @throws {Error} 当 GitHub API 请求失败时抛出异常(如文件不存在、权限不足等)\n\t *\n\t * @remarks\n\t * - 文本内容会尝试使用 `$decodeBase64ToUnicode` 解码,失败则使用 `$decodeBase64ToBinary` 解码\n\t * - 返回目录列表时,`data.content` 为空,此时返回原始响应数据\n\t * - 会自动应用 `path()` 方法处理路径\n\t * - 解码后的文本会经过 `_process(content, false)` 处理\n\t *\n\t * @see https://docs.github.com/en/rest/repos/contents\n\t *\n\t * @example\n\t * ```typescript\n\t * // 获取文本文件\n\t * const text = await repo.get('README.md')\n\t * console.log(text) // 解码后的文本字符串\n\t *\n\t * // 获取目录列表(返回原始数据)\n\t * const dirData = await repo.get('src')\n\t * console.log(dirData) // 数组,包含目录下的文件信息\n\t *\n\t * // 获取原始 Base64 内容\n\t * const base64 = await repo.get('image.png', true)\n\t * ```\n\t */\n\tasync get(path: string, raw: boolean = false) {\n\t\tpath = this.path(path)\n\t\tlet x = await this.ware.request('GET /repos/{owner}/{repo}/contents/{path}', {\n\t\t\towner: this.owner,\n\t\t\trepo: this.repo,\n\t\t\tpath: path,\n\t\t\theaders: this.headers,\n\t\t})\n\t\tlet data = <q>x.data\n\t\tif (raw) return data.content\n\t\tif (!$s(data.content)) return data\n\t\ttry {\n\t\t\tlet t = $decodeBase64ToUnicode(data.content)\n\t\t\treturn this._process(t, false)\n\t\t} catch (e) {}\n\t\treturn $decodeBase64ToBinary(data.content)\n\t}\n\n\t/**\n\t * 生成提交信息(commit message)\n\t *\n\t * @returns 格式化的日期时间字符串,用作 Git 提交信息\n\t *\n\t * @remarks\n\t * - 使用 `$formatDate` 格式化当前时间\n\t * - 每次调用都会生成新的时间戳\n\t * - 可以通过重写此方法自定义提交信息格式\n\t *\n\t * @example\n\t * ```typescript\n\t * class CustomMsgRepoStore extends RepoStore {\n\t * msg() {\n\t * return `Update at ${new Date().toISOString()}`\n\t * }\n\t * }\n\t * ```\n\t */\n\tmsg() {\n\t\treturn $formatDate(new Date())\n\t}\n\n\t/**\n\t * 创建或更新文件内容\n\t *\n\t * @param path - 文件路径(相对于仓库根目录)\n\t * @param content - 要存储的内容(字符串)\n\t * @param raw - 原始模式标志\n\t * - `false`(默认):将内容视为文本,经过 `_process` 处理后 Base64 编码再存储\n\t * - `true`:假定 content 已经是 Base64 编码,直接存储(跳过编码步骤)\n\t * @returns 无返回值\n\t *\n\t * @throws {Error} 当遇到非 409 错误时抛出异常(如权限不足、API 限流等)\n\t *\n\t * @remarks\n\t * - **冲突处理**:当遇到 HTTP 409(冲突)错误时,会自动重试一次(递归调用自身)\n\t * - **SHA 处理**:如果文件已存在,会自动获取其 SHA 值用于 API 调用(GitHub API 要求提供 SHA 以更新文件)\n\t * - **编码流程**:非 raw 模式下,内容会先经过 `_process(content, true)` 处理,然后 Base64 编码\n\t * - **空文件检测**:使用 `det()` 方法检查文件是否存在,不存在时 sha 为 undefined(创建新文件)\n\t * - 会自动应用 `path()` 方法处理路径\n\t *\n\t * @see https://docs.github.com/en/rest/repos/contents#create-or-update-file-contents\n\t *\n\t * @example\n\t * ```typescript\n\t * // 存储文本文件\n\t * await repo.put('hello.txt', 'Hello, World!')\n\t *\n\t * // 存储 JSON(推荐用 putJson)\n\t * await repo.put('data.json', JSON.stringify({ a: 1 }))\n\t *\n\t * // 存储原始 Base64 内容\n\t * const base64 = btoa('binary data')\n\t * await repo.put('data.bin', base64, true)\n\t * ```\n\t */\n\tasync put(path: string, content: string, raw: boolean = false) {\n\t\tlet srcPath = path\n\t\tlet srcContent = content\n\t\tpath = this.path(path)\n\t\ttry {\n\t\t\tlet sha: undefined | string = undefined\n\t\t\tif (await this.det(srcPath)) sha = (<q>(\n\t\t\t\t\tawait this.ware.request('GET /repos/{owner}/{repo}/contents/{path}', {\n\t\t\t\t\t\towner: this.owner,\n\t\t\t\t\t\trepo: this.repo,\n\t\t\t\t\t\tpath: path,\n\t\t\t\t\t\theaders: this.headers,\n\t\t\t\t\t})\n\t\t\t\t).data).sha\n\t\t\tif (!raw) {\n\t\t\t\tcontent = this._process(content, true)\n\t\t\t\tcontent = $encodeUnicodeToBase64(content)\n\t\t\t}\n\t\t\tawait this.ware.request('PUT /repos/{owner}/{repo}/contents/{path}', {\n\t\t\t\towner: this.owner,\n\t\t\t\trepo: this.repo,\n\t\t\t\tpath: path,\n\t\t\t\tmessage: this.msg(),\n\t\t\t\theaders: this.headers,\n\t\t\t\tcontent,\n\t\t\t\tsha,\n\t\t\t})\n\t\t} catch (e: q) {\n\t\t\tif (e.status === 409) {\n\t\t\t\tawait this.put(srcPath, srcContent, raw)\n\t\t\t} else throw e\n\t\t}\n\t}\n\n\t/**\n\t * 删除文件或目录\n\t *\n\t * @param path - 要删除的文件或目录路径(相对于仓库根目录)\n\t * @returns 无返回值\n\t *\n\t * @throws {Error} 当遇到非 409 错误时抛出异常(如权限不足、API 限流等)\n\t *\n\t * @remarks\n\t * - **幂等性**:如果文件不存在(通过 `det()` 检测),方法会直接返回,不会报错\n\t * - **冲突处理**:当遇到 HTTP 409(冲突)错误时,会自动重试一次(递归调用自身)\n\t * - **SHA 要求**:GitHub API 删除文件需要提供文件的 SHA 值,此方法会自动获取\n\t * - **目录删除**:GitHub API 不支持直接删除目录,需要递归删除目录下的所有文件\n\t * - 会自动应用 `path()` 方法处理路径\n\t *\n\t * @see https://docs.github.com/en/rest/repos/contents#delete-a-file\n\t *\n\t * @example\n\t * ```typescript\n\t * // 删除文件\n\t * await repo.del('old-file.txt')\n\t *\n\t * // 删除不存在的文件(不会报错)\n\t * await repo.del('non-existent.txt')\n\t * ```\n\t */\n\tasync del(path: string) {\n\t\tlet srcPath = path\n\t\tpath = this.path(path)\n\t\ttry {\n\t\t\tif (!(await this.det(srcPath))) return\n\t\t\tlet sha = (<q>(\n\t\t\t\tawait this.ware.request('GET /repos/{owner}/{repo}/contents/{path}', {\n\t\t\t\t\towner: this.owner,\n\t\t\t\t\trepo: this.repo,\n\t\t\t\t\tpath: path,\n\t\t\t\t\theaders: this.headers,\n\t\t\t\t})\n\t\t\t).data).sha\n\t\t\tawait this.ware.request('DELETE /repos/{owner}/{repo}/contents/{path}', {\n\t\t\t\towner: this.owner,\n\t\t\t\trepo: this.repo,\n\t\t\t\tpath: path,\n\t\t\t\theaders: this.headers,\n\t\t\t\tmessage: this.msg(),\n\t\t\t\tsha,\n\t\t\t})\n\t\t} catch (e: q) {\n\t\t\tif (e.status === 409) {\n\t\t\t\tawait this.del(srcPath)\n\t\t\t} else throw e\n\t\t}\n\t}\n\n\t/**\n\t * 安全获取 JSON 数据(忽略 404 错误)\n\t *\n\t * 与 `getJson` 类似,但当文件不存在(HTTP 404)时不会抛出异常,而是返回 undefined。\n\t * 适用于不确定文件是否存在的场景。\n\t *\n\t * @param path - JSON 文件路径(相对于仓库根目录)\n\t * @returns\n\t * - 解析后的 JSON 对象(成功时)\n\t * - `undefined`(当文件不存在,即 HTTP 404 时)\n\t *\n\t * @throws {Error} 当遇到非 404 错误时抛出异常(如权限不足、JSON 解析错误等)\n\t *\n\t * @remarks\n\t * - 仅在 HTTP 状态码为 404 时静默失败,其他错误会正常抛出\n\t * - 内部调用 `getJson` 方法,因此会经过 Base64 解码和 `_process` 处理\n\t *\n\t * @example\n\t * ```typescript\n\t * // 安全读取,文件可能不存在\n\t * const config = await repo.c_getJson('config.json')\n\t * if (config) {\n\t * console.log('配置已加载', config)\n\t * } else {\n\t * console.log('配置文件不存在,使用默认配置')\n\t * }\n\t * ```\n\t */\n\tasync c_getJson(path: string) {\n\t\ttry {\n\t\t\treturn await this.getJson(path)\n\t\t} catch (error: q) {\n\t\t\tif (error.status !== 404) throw error\n\t\t}\n\t}\n\n\t/**\n\t * 获取并解析 JSON 数据\n\t *\n\t * 从仓库读取文件内容,并使用 `$jsonParse` 解析为 JSON 对象。\n\t *\n\t * @param path - JSON 文件路径(相对于仓库根目录)\n\t * @returns 解析后的 JSON 对象(类型由调用者指定)\n\t *\n\t * @throws {Error} 当文件不存在、读取失败或 JSON 解析失败时抛出异常\n\t *\n\t * @remarks\n\t * - 内部调用 `get()` 方法获取内容,因此会经过 Base64 解码和 `_process` 处理\n\t * - 使用 `$jsonParse` 进行解析(可能包含自定义的 JSON 解析逻辑,如日期恢复等)\n\t * - 如果文件内容不是有效的 JSON,会抛出异常\n\t *\n\t * @example\n\t * ```typescript\n\t * interface Config {\n\t * theme: string\n\t * version: number\n\t * }\n\t *\n\t * const config = await repo.getJson<Config>('config.json')\n\t * console.log(config.theme)\n\t * ```\n\t */\n\tasync getJson(path: string) {\n\t\tlet a = <q>await this.get(path)\n\t\ttry {\n\t\t\treturn $jsonParse(a)\n\t\t} catch (error) {\n\t\t\tthrow error\n\t\t}\n\t}\n\n\t/**\n\t * 将对象序列化为 JSON 并存储到仓库\n\t *\n\t * 使用 `$jsonStringify` 将对象序列化为 JSON 字符串,然后调用 `put` 方法存储。\n\t * 这是存储结构化数据(对象、数组等)的便捷方法。\n\t *\n\t * @param path - 目标文件路径(相对于仓库根目录)\n\t * @param content - 要存储的对象(会被序列化为 JSON)\n\t * @returns `put` 方法的返回值\n\t *\n\t * @throws {Error} 当序列化失败或存储失败时抛出异常\n\t *\n\t * @remarks\n\t * - 使用 `$jsonStringify` 进行序列化(可能包含自定义的 JSON 序列化逻辑,如日期处理等)\n\t * - 默认以文本模式存储(非 raw),会经过 Base64 编码\n\t * - 推荐使用此方法而非手动 `JSON.stringify` + `put`,以保持序列化逻辑一致\n\t *\n\t * @example\n\t * ```typescript\n\t * // 存储对象\n\t * await repo.putJson('user.json', {\n\t * name: 'Alice',\n\t * age: 30,\n\t * tags: ['developer', 'designer']\n\t * })\n\t *\n\t * // 读取回来\n\t * const user = await repo.getJson('user.json')\n\t * ```\n\t */\n\tasync putJson(path: string, content: Object) {\n\t\treturn await this.put(path, $jsonStringify(content))\n\t}\n\n\t/**\n\t * 列出目录下的文件和子目录\n\t *\n\t * 获取指定路径的内容列表,返回精简的文件信息数组。\n\t *\n\t * @param path - 目录路径(相对于仓库根目录)\n\t * @returns\n\t * - 成功时:包含文件信息的数组,每个元素包含 `name`、`path`、`type` 属性\n\t * - 如果路径不是目录或获取失败:返回 `undefined`\n\t *\n\t * @throws {Error} 当 GitHub API 请求失败时抛出异常\n\t *\n\t * @remarks\n\t * - 返回的 `type` 字段可能是 `'file'`、`'dir'` 或 `'symlink'`\n\t * - 返回的 `path` 是文件的完整路径(相对于仓库根目录)\n\t * - 如果路径指向文件而非目录,GitHub API 返回的不是数组,此时方法返回 undefined\n\t * - 会自动应用 `path()` 方法处理路径\n\t *\n\t * @see https://docs.github.com/en/rest/repos/contents#get-contents\n\t *\n\t * @example\n\t * ```typescript\n\t * // 列出目录内容\n\t * const files = await repo.list('src')\n\t * if (files) {\n\t * for (const file of files) {\n\t * console.log(`${file.type}: ${file.name} (${file.path})`)\n\t * }\n\t * }\n\t *\n\t * // 过滤只显示文件\n\t * const onlyFiles = files?.filter(f => f.type === 'file')\n\t * ```\n\t */\n\tasync list(path: string) {\n\t\tlet a = <q>await this.get(path)\n\t\tif (!(a instanceof Array)) return\n\t\treturn a.map((v) => ({\n\t\t\tname: v.name,\n\t\t\tpath: v.path,\n\t\t\ttype: v.type,\n\t\t}))\n\t}\n\n\t/**\n\t * 创建 RepoStore 实例\n\t *\n\t * @param x0 - GitHub Personal Access Token(个人访问令牌)\n\t * - 需要具有对目标仓库的读写权限\n\t * - 可在 https://github.com/settings/tokens 创建\n\t * @param user - 仓库所有者(用户名或组织名)\n\t * @param repo - 仓库名称\n\t *\n\t * @remarks\n\t * - 初始化时会创建 Octokit 实例,用于后续的 API 调用\n\t * - Token 会通过 `auth` 配置传递给 Octokit\n\t * - 确保 Token 具有 `repo` 或 `contents:write` 权限\n\t *\n\t * @example\n\t * ```typescript\n\t * // 基本用法\n\t * const repo = new RepoStore(\n\t * 'ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // GitHub Token\n\t * 'myusername', // 所有者\n\t * 'my-repo' // 仓库名\n\t * )\n\t *\n\t * // 组织仓库\n\t * const orgRepo = new RepoStore(\n\t * process.env.GITHUB_TOKEN,\n\t * 'my-organization',\n\t * 'org-repo'\n\t * )\n\t * ```\n\t */\n\tconstructor(x0: string, user: string, repo: string) {\n\t\tthis.ware = new Octokit({ auth: x0 })\n\t\tthis.owner = user\n\t\tthis.repo = repo\n\t}\n}\n","export type Any = Items<any>\nexport type Null = undefined | null | void\n\n/**\n * 判断一个值在本包语义下是否属于空值。\n *\n * 该函数会把以下值视为空值:\n * - `null`\n * - `undefined`\n * - `void 0`\n *\n\t * @typeParam T 原始候选类型。\n\t * @param v 要检测的值。\n\t * @returns 当 `v` 是 `null` 或 `undefined` 时返回 `true`,否则返回 `false`。\n */\nexport function isNull<T>(v: T | Null): v is Null {\n\treturn v === null || v === undefined || v === void 0\n}\nexport type Nullable<T> = T | Null\nexport type Items<T> = { [x: string]: T }\n\nexport type Hel = HTMLElement\nexport type UNumber = number | [number, number]\nexport type Coord = [number, number]\nexport type Coord3 = [number, number, number]\nexport type IOpt = Object | undefined\nexport type Atoa<T> = (i: T) => T\n","export let _res = (x: string) => x\n\nimport { Items } from '../Interface.js'\nimport { Gens, RainbowGen } from './Gens.js'\nexport function __GensDirectives() {\n\tlet v: Items<(...args: string[]) => string> = {\n\t\ticon: (args) => {\n\t\t\targs =\n\t\t\t\targs.startsWith('http://') ||\n\t\t\t\targs.startsWith('https://') ||\n\t\t\t\targs.startsWith('data:')\n\t\t\t\t\t? args\n\t\t\t\t\t: _res('icons/' + args)\n\t\t\treturn `<div class=\"icon\" style='background-image: url(${args})'></div>`\n\t\t},\n\t\tauBorder: (args) => Gens(`{[^Y^${args}^a^]^Y}^u`),\n\t\tfrac: (a, b) => Gens(`{${a}^g^/^Y^${b}^a}^u`),\n\t\trya: (a, b) => Gens(`{${a}^r^/^Y^${b}^a}^u`),\n\t\trb: (args) => Gens(RainbowGen.staticRainbowHTMLRaw(args)),\n\t\trbd: (args) => Gens(RainbowGen.staticRainbowHTMLRaw(args, true)),\n\t\tdrb0: (args) => Gens(RainbowGen.rainbowHTMLRaw(args)),\n\t\tdrb1: (args) => Gens(RainbowGen.rainbowHTMLRaw(args, 1)),\n\t\tdrb2: (args) => Gens(RainbowGen.rainbowHTMLRaw(args, 2)),\n\t\trotx: (args) => `<span class=\"rotateX\">${args}</span>`,\n\t\troty: (args) => `<span class=\"rotateY\">${args}</span>`,\n\t\trotz: (args) => `<span class=\"rotateZ\">${args}</span>`,\n\t}\n\treturn v\n}\n","import { Items } from \"../Interface\";\nimport { textShadow } from \"./Gens\";\n\nexport function __GensStyleIds() {\n\tlet v: any = {\n\t\tV: 'color: #555555;',\n\t\tW: 'color: #AAAAAA;',\n\t\tv: 'color: #000000;',\n\t\tw: 'color: #FFFFFF;',\n\n\t\tR: 'color: #AA0000;',\n\t\tY: 'color: #FFAA00;',\n\t\tG: 'color: #00AA00;',\n\t\tA: 'color: #00AAAA;',\n\t\tB: 'color: #0000AA;',\n\t\tP: 'color: #AA00AA;',\n\n\t\tr: 'color: #FF5555;',\n\t\ty: 'color: #FFFF55;',\n\t\tg: 'color: #55FF55;',\n\t\ta: 'color: #55FFFF;',\n\t\tb: 'color: #5555FF;',\n\t\tp: 'color: #FF55FF;',\n\n\t\ti: 'color: #FfC0CB;',\n\t\tm: 'font-size: 0.8em;',\n\t\tM: 'font-size: 1.25em;',\n\t\tt: 'font-weight: bold;',\n\t\tT: 'text-shadow: 0.03em 0 0 currentColor;-webkit-text-stroke: 0.5px currentColor;',\n\t\tl: 'font-style: italic;',\n\t\tL: 'transform: skewX(-10deg);',\n\t\tu: 'background-color: var(--xai-destructive, #dc2626);',\n\n\t\ts: `${textShadow(undefined, true)}`,\n\t\tS: 'text-shadow: 0 2px 0 #222',\n\t\tc: 'user-select: text',\n\t\tC: 'user-select: none',\n\n\t\tinsectnColor: 'background-color: var(--insectnColor);',\n\t\tinsectnShadow: 'box-shadow: var(--insectnShadow);',\n\t\tinsectn: '',\n\t\tbgctp: 'background-color: var(--tp);',\n\t\tnoshadow: 'box-shadow: 0 0 0 0;',\n\t\tunsectn: '',\n\t\tbr: 'border-radius: 12px;',\n\t};\n\n\t// numeric style groups: make them 10-per-group\n\t// 0..9 => color: var(--rb0..rb9)\n\t// 10..19 => color: #fff; + textShadow(var(--rbN), true)\n\t// 20..29 => color: var(--rbN); + textShadow(var(--rbN))\n\tfor (let i = 0; i < 10; i++) {\n\t\tv[String(i)] = `color: var(--rb${i});`;\n\t\tv[String(i + 10)] = `color: #fff;${textShadow('var(--rb' + i + ')', true)}`;\n\t\tv[String(i + 20)] = `color: var(--rb${i});${textShadow('var(--rb' + i + ')')}`;\n\t}\n\n\tv.insectn = v.insectnColor + v.insectnShadow + v.br;\n\tv.unsectn = v.bgctp + v.noshadow;\n\treturn <Items<string>>v;\n}\n","const webSide = typeof window !== 'undefined'\nimport { $genSSF, $lplus, $s, xtrim } from '../../x/Functions'\nimport { __GensDirectives } from './GensDirectives.js'\nimport { __GensStyleIds } from './GensStyleIds.js'\n\nexport function $escapeHTML(str?: string) {\n\tif (!str) return ''\n\treturn str.replace(/[&<>\"']/g, (match) => {\n\t\tconst escapeMap = <any>{\n\t\t\t'&': '&amp;',\n\t\t\t'<': '&lt;',\n\t\t\t'>': '&gt;',\n\t\t\t'\"': '&quot;',\n\t\t\t\"'\": '&#39;',\n\t\t}\n\t\treturn escapeMap[match]\n\t})\n}\n\nexport class RainbowGen {\n\ti = -1\n\tten = 10\n\n\tstatic staticRainbowHTMLRaw(text: string, dark: boolean = false, offset: number = 0) {\n\t\tconst map = getColorMap(dark)\n\t\tlet r = ''\n\t\ttext = text.trim()\n\t\t// let rainbow = new RainbowGen(offset);\n\t\tfor (let i = 0; i < text.length; i++) {\n\t\t\tconst val = (i + offset) % map.length\n\n\t\t\tlet char = text[i]\n\t\t\tif (char === ' ') char = '&nbsp;'\n\t\t\tr += char + `^&color: ${map[val]}&^`\n\t\t}\n\t\treturn r\n\t}\n\n\tstatic rainbowHTMLRaw(text: string, version: number = 0, offset: number = 0) {\n\t\tlet r = ''\n\t\ttext = text.trim()\n\t\tlet rainbow = new RainbowGen(offset)\n\t\tfor (let i = 0; i < text.length; i++) {\n\t\t\tlet char = text[i]\n\t\t\tif (char === ' ') char = '&nbsp;'\n\t\t\tr += char + `^${rainbow.getStyleId(version)}^`\n\t\t}\n\t\treturn r\n\t}\n\n\tbackAStep() {\n\t\tthis.i = $lplus(this.i, this.ten, -1)\n\t\treturn this\n\t}\n\n\tgetColorValue() {\n\t\tthis.i = $lplus(this.i, this.ten)\n\t\treturn 'var(--rb' + this.i + ')'\n\t}\n\n\tversions = [0, this.ten, 2 * this.ten]\n\t// staticStyleIdMap = 'r y g a p ';\n\n\t// getStaticStyleId(dark: boolean = false) {\n\t// \tthis.i = $lplus(this.i, this.ten);\n\t// \tlet a = this.staticStyleIdMap[this.i] || ``;\n\t// \tif (!a) {\n\t// \t}\n\t// \treturn dark ? a.toUpperCase() : a;\n\t// }\n\n\tgetStyleId(version: number) {\n\t\tthis.i = $lplus(this.i, this.ten)\n\t\tlet a = '' + (this.i + this.versions[version])\n\t\treturn a.length > 1 ? `&${a}&` : a\n\t}\n\n\tconstructor(useTimes: number = 0) {\n\t\tthis.i = $lplus(this.i, this.ten, useTimes)\n\t}\n}\n\nexport function boxShadow(color: string = '#000') {\n\treturn `box-shadow: 0 0 1px 1px ${color};`\n}\n\nexport function textShadow(color: string = '#000', focus?: boolean, removeName: boolean = false) {\n\tcolor = color.trim()\n\tconst pre = removeName ? '' : 'text-shadow: '\n\tconst suf = removeName ? '' : ';'\n\treturn focus\n\t\t? `${pre}-1px -1px 1px ${color}, 1px 1px 1px ${color}${suf}`\n\t\t: `${pre}0 0 8px ${color}${suf}`\n}\n\n// function s() {}\ntype StringNode = string | StringNode[]\n/*\nsuperx方法功能最全\ni方法 里面没有{}的解析\n*/\nexport function s(literature: string, ...args: any[]) {\n\treturn Gens(literature, ...args)\n}\nconst __GensSSF = $genSSF((s1, s2) => __GensBeTag(s1, s2))\nconst _GensStyleIds = __GensStyleIds()\nconst _GensDirectives = __GensDirectives()\n\nexport function getColorMap(dark: boolean = false) {\n\tconst map = [\n\t\t'#f55', // 0\n\t\t'#f85', // 1\n\t\t'#fa0', // 2\n\t\t'#8f5', // 3\n\t\t'#5f5', // 4\n\t\t'#5f8', // 5\n\t\t'#5ff', // 6\n\t\t'#88f', // 7\n\t\t'#f5f', // 8\n\t\t'#f58', // 9\n\t]\n\treturn dark\n\t\t? map.map((color) =>\n\t\t\t\tcolor.replace(/a/g, '5').replace(/f/g, 'a').replace(/5/g, '0').replace(/8/g, '5'),\n\t\t\t)\n\t\t: map\n}\n\nexport function Gens(literature: string, ...args: any[]) {\n\tlet variantChar = '§'\n\tlet r = xtrim(literature)\n\tr = __GensStringNodeToHTML(r)\n\tif (r.includes(variantChar)) {\n\t\tfor (const el of args) {\n\t\t\tr = r.replace(variantChar, el)\n\t\t}\n\t}\n\n\tconst map = getColorMap()\n\treturn webSide ? r : r.replace(/var\\(--rb(\\d)\\)/g, (_, n) => map[n])\n}\nfunction __GensBeTag(value: string, args?: string): string {\n\tif (value.startsWith('%')) {\n\t\tlet directiveName = value.substring(1)\n\t\tlet directive = _GensDirectives[directiveName]\n\t\tif (!directive) return ''\n\t\tif (typeof directive !== 'function') {\n\t\t\tconsole.log('Gens directive not a function: ', directiveName)\n\t\t\treturn ''\n\t\t}\n\t\tif (!args) args = ''\n\t\treturn directive(...args.split('&').map((v) => v.trim()))\n\t}\n\tvalue = value.replace(/\\n/g, '<br>')\n\tif (!args) return value\n\tlet trail = ''\n\tif (args.length > 1) {\n\t\tlet a = args[0]\n\t\tlet b = args.substring(1)\n\t\tif (a !== '&') {\n\t\t\targs = a\n\t\t\ttrail = b\n\t\t} else {\n\t\t\tlet last = b.indexOf('&')\n\t\t\tif (last < 0) last = b.length\n\t\t\targs = b.substring(0, last)\n\t\t\ttrail = b.substring(last + 1)\n\t\t}\n\t}\n\tlet x = _GensStyleIds[args] || args.trim()\n\tx = \"<span style='\" + x + '' + \"'\" + '>'\n\tlet r = x + value + '</span>'\n\treturn trail ? __GensBeTag(r, trail) : r\n}\nfunction __GensStringToArray(input: string): StringNode {\n\ttry {\n\t\tconst stack: (string | any[])[] = [[]] // 栈初始化为一个空数组\n\t\tlet currentChunk = '' // 用于累积当前的非嵌套字符\n\n\t\tfor (let i = 0; i < input.length; i++) {\n\t\t\tconst char = input[i]\n\n\t\t\tif (char === '{') {\n\t\t\t\t// 将当前累积的字符作为字符串推入栈顶的数组\n\t\t\t\tif (currentChunk) {\n\t\t\t\t\t;(<any>stack[stack.length - 1]).push(currentChunk)\n\t\t\t\t\tcurrentChunk = ''\n\t\t\t\t}\n\t\t\t\t// 创建一个新的数组,推入栈顶,并作为新的栈顶\n\t\t\t\tconst newArray: any[] = []\n\t\t\t\t;(<any>stack[stack.length - 1]).push(newArray)\n\t\t\t\tstack.push(newArray)\n\t\t\t} else if (char === '}') {\n\t\t\t\t// 将当前累积的字符作为字符串推入栈顶的数组\n\t\t\t\tif (currentChunk) {\n\t\t\t\t\t;(<any>stack[stack.length - 1]).push(currentChunk)\n\t\t\t\t\tcurrentChunk = ''\n\t\t\t\t}\n\t\t\t\t// 弹出栈顶,回到上一层级\n\t\t\t\tstack.pop()\n\t\t\t} else {\n\t\t\t\t// 累积非嵌套字符\n\t\t\t\tcurrentChunk += char\n\t\t\t}\n\t\t}\n\n\t\t// 处理最后可能剩余的字符\n\t\tif (currentChunk) {\n\t\t\t;(<any>stack[stack.length - 1]).push(currentChunk)\n\t\t}\n\n\t\treturn <any>stack[0]\n\t} catch (error) {\n\t\treturn input\n\t}\n}\n\nfunction __GensStringNodeToHTML(sn: StringNode, noIndent: boolean = false): string {\n\tif (!sn) return ''\n\tif ($s(sn)) {\n\t\tlet str = <string>sn\n\t\treturn noIndent\n\t\t\t? __GensSSF(str)\n\t\t\t: __GensStringNodeToHTML(__GensStringToArray(<string>sn), true)\n\t}\n\tlet r = ''\n\tlet w = <any[]>sn\n\tw.forEach((v) => {\n\t\tr += v instanceof Array ? __GensStringNodeToHTML(v, true) : v\n\t})\n\treturn __GensStringNodeToHTML(r, true)\n}\n// function __SuperxIsLiterature(str: string) {\n// \tlet bv = str.contain('{', '}', '&', '^', '%');\n// \treturn bv || bv === false;\n// }\n","// Color space definitions\nimport modeA98 from './a98/definition.js';\nimport modeCubehelix from './cubehelix/definition.js';\nimport modeDlab from './dlab/definition.js';\nimport modeDlch from './dlch/definition.js';\nimport modeHsi from './hsi/definition.js';\nimport modeHsl from './hsl/definition.js';\nimport modeHsv from './hsv/definition.js';\nimport modeHwb from './hwb/definition.js';\nimport modeItp from './itp/definition.js';\nimport modeJab from './jab/definition.js';\nimport modeJch from './jch/definition.js';\nimport modeLab from './lab/definition.js';\nimport modeLab65 from './lab65/definition.js';\nimport modeLch from './lch/definition.js';\nimport modeLch65 from './lch65/definition.js';\nimport modeLchuv from './lchuv/definition.js';\nimport modeLrgb from './lrgb/definition.js';\nimport modeLuv from './luv/definition.js';\nimport modeOkhsl from './okhsl/modeOkhsl.js';\nimport modeOkhsv from './okhsv/modeOkhsv.js';\nimport modeOklab from './oklab/definition.js';\nimport modeOklch from './oklch/definition.js';\nimport modeP3 from './p3/definition.js';\nimport modeProphoto from './prophoto/definition.js';\nimport modeRec2020 from './rec2020/definition.js';\nimport modeRgb from './rgb/definition.js';\nimport modeXyb from './xyb/definition.js';\nimport modeXyz50 from './xyz50/definition.js';\nimport modeXyz65 from './xyz65/definition.js';\nimport modeYiq from './yiq/definition.js';\nimport { useMode } from './modes.js';\n\nexport { default as converter } from './converter.js';\n\nexport {\n\tserializeHex,\n\tserializeHex8,\n\tserializeRgb,\n\tserializeHsl,\n\tformatHex,\n\tformatHex8,\n\tformatRgb,\n\tformatHsl,\n\tformatCss\n} from './formatter.js';\n\nexport { default as colorsNamed } from './colors/named.js';\nexport { default as blend } from './blend.js';\nexport { default as random } from './random.js';\n\nexport {\n\tfixupHueShorter,\n\tfixupHueLonger,\n\tfixupHueIncreasing,\n\tfixupHueDecreasing\n} from './fixup/hue.js';\n\nexport { fixupAlpha } from './fixup/alpha.js';\n\nexport {\n\tmapper,\n\tmapAlphaMultiply,\n\tmapAlphaDivide,\n\tmapTransferLinear,\n\tmapTransferGamma\n} from './map.js';\n\nexport { average, averageAngle, averageNumber } from './average.js';\n\nexport { default as round } from './round.js';\nexport {\n\tinterpolate,\n\tinterpolateWith,\n\tinterpolateWithPremultipliedAlpha\n} from './interpolate/interpolate.js';\n\nexport { interpolatorLinear } from './interpolate/linear.js';\n\nexport { interpolatorPiecewise } from './interpolate/piecewise.js';\n\nexport {\n\tinterpolatorSplineBasis,\n\tinterpolatorSplineBasisClosed\n} from './interpolate/splineBasis.js';\n\nexport {\n\tinterpolatorSplineNatural,\n\tinterpolatorSplineNaturalClosed\n} from './interpolate/splineNatural.js';\n\nexport {\n\tinterpolatorSplineMonotone,\n\tinterpolatorSplineMonotone2,\n\tinterpolatorSplineMonotoneClosed\n} from './interpolate/splineMonotone.js';\n\nexport { lerp, unlerp, blerp, trilerp } from './interpolate/lerp.js';\nexport { default as samples } from './samples.js';\nexport {\n\tdisplayable,\n\tinGamut,\n\tclampRgb,\n\tclampChroma,\n\tclampGamut,\n\ttoGamut\n} from './clamp.js';\nexport { default as nearest } from './nearest.js';\nexport { useMode, getMode, useParser, removeParser } from './modes.js';\nexport { default as parse } from './parse.js';\n\nexport {\n\tdifferenceEuclidean,\n\tdifferenceCie76,\n\tdifferenceCie94,\n\tdifferenceCiede2000,\n\tdifferenceCmc,\n\tdifferenceHyab,\n\tdifferenceHueSaturation,\n\tdifferenceHueChroma,\n\tdifferenceHueNaive,\n\tdifferenceKotsarenkoRamos,\n\tdifferenceItp\n} from './difference.js';\n\nexport {\n\tfilterBrightness,\n\tfilterContrast,\n\tfilterSepia,\n\tfilterInvert,\n\tfilterSaturate,\n\tfilterGrayscale,\n\tfilterHueRotate\n} from './filter.js';\n\nexport {\n\tfilterDeficiencyProt,\n\tfilterDeficiencyDeuter,\n\tfilterDeficiencyTrit\n} from './deficiency.js';\n\n// Easings\nexport { default as easingMidpoint } from './easing/midpoint.js';\nexport {\n\teasingSmoothstep,\n\teasingSmoothstepInverse\n} from './easing/smoothstep.js';\nexport { default as easingSmootherstep } from './easing/smootherstep.js';\nexport { default as easingInOutSine } from './easing/inOutSine.js';\nexport { default as easingGamma } from './easing/gamma.js';\n\nexport {\n\tluminance as wcagLuminance,\n\tcontrast as wcagContrast\n} from './wcag.js';\n\nexport { default as parseHsl } from './hsl/parseHsl.js';\nexport { default as parseHwb } from './hwb/parseHwb.js';\nexport { default as parseLab } from './lab/parseLab.js';\nexport { default as parseLch } from './lch/parseLch.js';\nexport { default as parseNamed } from './rgb/parseNamed.js';\nexport { default as parseTransparent } from './rgb/parseTransparent.js';\nexport { default as parseHex } from './rgb/parseHex.js';\nexport { default as parseRgb } from './rgb/parseRgb.js';\nexport { default as parseHslLegacy } from './hsl/parseHslLegacy.js';\nexport { default as parseRgbLegacy } from './rgb/parseRgbLegacy.js';\nexport { default as parseOklab } from './oklab/parseOklab.js';\nexport { default as parseOklch } from './oklch/parseOklch.js';\n\nexport { default as convertA98ToXyz65 } from './a98/convertA98ToXyz65.js';\nexport { default as convertCubehelixToRgb } from './cubehelix/convertCubehelixToRgb.js';\nexport { default as convertDlchToLab65 } from './dlch/convertDlchToLab65.js';\nexport { default as convertHsiToRgb } from './hsi/convertHsiToRgb.js';\nexport { default as convertHslToRgb } from './hsl/convertHslToRgb.js';\nexport { default as convertHsvToRgb } from './hsv/convertHsvToRgb.js';\nexport { default as convertHwbToRgb } from './hwb/convertHwbToRgb.js';\nexport { default as convertItpToXyz65 } from './itp/convertItpToXyz65.js';\nexport { default as convertJabToJch } from './jch/convertJabToJch.js';\nexport { default as convertJabToRgb } from './jab/convertJabToRgb.js';\nexport { default as convertJabToXyz65 } from './jab/convertJabToXyz65.js';\nexport { default as convertJchToJab } from './jch/convertJchToJab.js';\nexport { default as convertLab65ToDlch } from './dlch/convertLab65ToDlch.js';\nexport { default as convertLab65ToRgb } from './lab65/convertLab65ToRgb.js';\nexport { default as convertLab65ToXyz65 } from './lab65/convertLab65ToXyz65.js';\nexport { default as convertLabToLch } from './lch/convertLabToLch.js';\nexport { default as convertLabToRgb } from './lab/convertLabToRgb.js';\nexport { default as convertLabToXyz50 } from './lab/convertLabToXyz50.js';\nexport { default as convertLchToLab } from './lch/convertLchToLab.js';\nexport { default as convertLchuvToLuv } from './lchuv/convertLchuvToLuv.js';\nexport { default as convertLrgbToOklab } from './oklab/convertLrgbToOklab.js';\nexport { default as convertLrgbToRgb } from './lrgb/convertLrgbToRgb.js';\nexport { default as convertLuvToLchuv } from './lchuv/convertLuvToLchuv.js';\nexport { default as convertLuvToXyz50 } from './luv/convertLuvToXyz50.js';\nexport { default as convertOkhslToOklab } from './okhsl/convertOkhslToOklab.js';\nexport { default as convertOkhsvToOklab } from './okhsv/convertOkhsvToOklab.js';\nexport { default as convertOklabToLrgb } from './oklab/convertOklabToLrgb.js';\nexport { default as convertOklabToOkhsl } from './okhsl/convertOklabToOkhsl.js';\nexport { default as convertOklabToOkhsv } from './okhsv/convertOklabToOkhsv.js';\nexport { default as convertOklabToRgb } from './oklab/convertOklabToRgb.js';\nexport { default as convertP3ToXyz65 } from './p3/convertP3ToXyz65.js';\nexport { default as convertProphotoToXyz50 } from './prophoto/convertProphotoToXyz50.js';\nexport { default as convertRec2020ToXyz65 } from './rec2020/convertRec2020ToXyz65.js';\nexport { default as convertRgbToCubehelix } from './cubehelix/convertRgbToCubehelix.js';\nexport { default as convertRgbToHsi } from './hsi/convertRgbToHsi.js';\nexport { default as convertRgbToHsl } from './hsl/convertRgbToHsl.js';\nexport { default as convertRgbToHsv } from './hsv/convertRgbToHsv.js';\nexport { default as convertRgbToHwb } from './hwb/convertRgbToHwb.js';\nexport { default as convertRgbToJab } from './jab/convertRgbToJab.js';\nexport { default as convertRgbToLab } from './lab/convertRgbToLab.js';\nexport { default as convertRgbToLab65 } from './lab65/convertRgbToLab65.js';\nexport { default as convertRgbToLrgb } from './lrgb/convertRgbToLrgb.js';\nexport { default as convertRgbToOklab } from './oklab/convertRgbToOklab.js';\nexport { default as convertRgbToXyb } from './xyb/convertRgbToXyb.js';\nexport { default as convertRgbToXyz50 } from './xyz50/convertRgbToXyz50.js';\nexport { default as convertRgbToXyz65 } from './xyz65/convertRgbToXyz65.js';\nexport { default as convertRgbToYiq } from './yiq/convertRgbToYiq.js';\nexport { default as convertXybToRgb } from './xyb/convertXybToRgb.js';\nexport { default as convertXyz50ToLab } from './lab/convertXyz50ToLab.js';\nexport { default as convertXyz50ToLuv } from './luv/convertXyz50ToLuv.js';\nexport { default as convertXyz50ToProphoto } from './prophoto/convertXyz50ToProphoto.js';\nexport { default as convertXyz50ToRgb } from './xyz50/convertXyz50ToRgb.js';\nexport { default as convertXyz50ToXyz65 } from './xyz65/convertXyz50ToXyz65.js';\nexport { default as convertXyz65ToA98 } from './a98/convertXyz65ToA98.js';\nexport { default as convertXyz65ToItp } from './itp/convertXyz65ToItp.js';\nexport { default as convertXyz65ToJab } from './jab/convertXyz65ToJab.js';\nexport { default as convertXyz65ToLab65 } from './lab65/convertXyz65ToLab65.js';\nexport { default as convertXyz65ToP3 } from './p3/convertXyz65ToP3.js';\nexport { default as convertXyz65ToRec2020 } from './rec2020/convertXyz65ToRec2020.js';\nexport { default as convertXyz65ToRgb } from './xyz65/convertXyz65ToRgb.js';\nexport { default as convertXyz65ToXyz50 } from './xyz65/convertXyz65ToXyz50.js';\nexport { default as convertYiqToRgb } from './yiq/convertYiqToRgb.js';\n\nexport {\n\tmodeA98,\n\tmodeCubehelix,\n\tmodeDlab,\n\tmodeDlch,\n\tmodeHsi,\n\tmodeHsl,\n\tmodeHsv,\n\tmodeHwb,\n\tmodeItp,\n\tmodeJab,\n\tmodeJch,\n\tmodeLab,\n\tmodeLab65,\n\tmodeLch,\n\tmodeLch65,\n\tmodeLchuv,\n\tmodeLrgb,\n\tmodeLuv,\n\tmodeOkhsl,\n\tmodeOkhsv,\n\tmodeOklab,\n\tmodeOklch,\n\tmodeP3,\n\tmodeProphoto,\n\tmodeRec2020,\n\tmodeRgb,\n\tmodeXyb,\n\tmodeXyz50,\n\tmodeXyz65,\n\tmodeYiq\n};\n\nexport const a98 = useMode(modeA98);\nexport const cubehelix = useMode(modeCubehelix);\nexport const dlab = useMode(modeDlab);\nexport const dlch = useMode(modeDlch);\nexport const hsi = useMode(modeHsi);\nexport const hsl = useMode(modeHsl);\nexport const hsv = useMode(modeHsv);\nexport const hwb = useMode(modeHwb);\nexport const itp = useMode(modeItp);\nexport const jab = useMode(modeJab);\nexport const jch = useMode(modeJch);\nexport const lab = useMode(modeLab);\nexport const lab65 = useMode(modeLab65);\nexport const lch = useMode(modeLch);\nexport const lch65 = useMode(modeLch65);\nexport const lchuv = useMode(modeLchuv);\nexport const lrgb = useMode(modeLrgb);\nexport const luv = useMode(modeLuv);\nexport const okhsl = useMode(modeOkhsl);\nexport const okhsv = useMode(modeOkhsv);\nexport const oklab = useMode(modeOklab);\nexport const oklch = useMode(modeOklch);\nexport const p3 = useMode(modeP3);\nexport const prophoto = useMode(modeProphoto);\nexport const rec2020 = useMode(modeRec2020);\nexport const rgb = useMode(modeRgb);\nexport const xyb = useMode(modeXyb);\nexport const xyz50 = useMode(modeXyz50);\nexport const xyz65 = useMode(modeXyz65);\nexport const yiq = useMode(modeYiq);\n","const parseNumber = (color, len) => {\n\tif (typeof color !== 'number') return;\n\n\t// hex3: #c93 -> #cc9933\n\tif (len === 3) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: (((color >> 8) & 0xf) | ((color >> 4) & 0xf0)) / 255,\n\t\t\tg: (((color >> 4) & 0xf) | (color & 0xf0)) / 255,\n\t\t\tb: ((color & 0xf) | ((color << 4) & 0xf0)) / 255\n\t\t};\n\t}\n\n\t// hex4: #c931 -> #cc993311\n\tif (len === 4) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: (((color >> 12) & 0xf) | ((color >> 8) & 0xf0)) / 255,\n\t\t\tg: (((color >> 8) & 0xf) | ((color >> 4) & 0xf0)) / 255,\n\t\t\tb: (((color >> 4) & 0xf) | (color & 0xf0)) / 255,\n\t\t\talpha: ((color & 0xf) | ((color << 4) & 0xf0)) / 255\n\t\t};\n\t}\n\n\t// hex6: #f0f1f2\n\tif (len === 6) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: ((color >> 16) & 0xff) / 255,\n\t\t\tg: ((color >> 8) & 0xff) / 255,\n\t\t\tb: (color & 0xff) / 255\n\t\t};\n\t}\n\n\t// hex8: #f0f1f2ff\n\tif (len === 8) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: ((color >> 24) & 0xff) / 255,\n\t\t\tg: ((color >> 16) & 0xff) / 255,\n\t\t\tb: ((color >> 8) & 0xff) / 255,\n\t\t\talpha: (color & 0xff) / 255\n\t\t};\n\t}\n};\n\nexport default parseNumber;\n","const named = {\n\taliceblue: 0xf0f8ff,\n\tantiquewhite: 0xfaebd7,\n\taqua: 0x00ffff,\n\taquamarine: 0x7fffd4,\n\tazure: 0xf0ffff,\n\tbeige: 0xf5f5dc,\n\tbisque: 0xffe4c4,\n\tblack: 0x000000,\n\tblanchedalmond: 0xffebcd,\n\tblue: 0x0000ff,\n\tblueviolet: 0x8a2be2,\n\tbrown: 0xa52a2a,\n\tburlywood: 0xdeb887,\n\tcadetblue: 0x5f9ea0,\n\tchartreuse: 0x7fff00,\n\tchocolate: 0xd2691e,\n\tcoral: 0xff7f50,\n\tcornflowerblue: 0x6495ed,\n\tcornsilk: 0xfff8dc,\n\tcrimson: 0xdc143c,\n\tcyan: 0x00ffff,\n\tdarkblue: 0x00008b,\n\tdarkcyan: 0x008b8b,\n\tdarkgoldenrod: 0xb8860b,\n\tdarkgray: 0xa9a9a9,\n\tdarkgreen: 0x006400,\n\tdarkgrey: 0xa9a9a9,\n\tdarkkhaki: 0xbdb76b,\n\tdarkmagenta: 0x8b008b,\n\tdarkolivegreen: 0x556b2f,\n\tdarkorange: 0xff8c00,\n\tdarkorchid: 0x9932cc,\n\tdarkred: 0x8b0000,\n\tdarksalmon: 0xe9967a,\n\tdarkseagreen: 0x8fbc8f,\n\tdarkslateblue: 0x483d8b,\n\tdarkslategray: 0x2f4f4f,\n\tdarkslategrey: 0x2f4f4f,\n\tdarkturquoise: 0x00ced1,\n\tdarkviolet: 0x9400d3,\n\tdeeppink: 0xff1493,\n\tdeepskyblue: 0x00bfff,\n\tdimgray: 0x696969,\n\tdimgrey: 0x696969,\n\tdodgerblue: 0x1e90ff,\n\tfirebrick: 0xb22222,\n\tfloralwhite: 0xfffaf0,\n\tforestgreen: 0x228b22,\n\tfuchsia: 0xff00ff,\n\tgainsboro: 0xdcdcdc,\n\tghostwhite: 0xf8f8ff,\n\tgold: 0xffd700,\n\tgoldenrod: 0xdaa520,\n\tgray: 0x808080,\n\tgreen: 0x008000,\n\tgreenyellow: 0xadff2f,\n\tgrey: 0x808080,\n\thoneydew: 0xf0fff0,\n\thotpink: 0xff69b4,\n\tindianred: 0xcd5c5c,\n\tindigo: 0x4b0082,\n\tivory: 0xfffff0,\n\tkhaki: 0xf0e68c,\n\tlavender: 0xe6e6fa,\n\tlavenderblush: 0xfff0f5,\n\tlawngreen: 0x7cfc00,\n\tlemonchiffon: 0xfffacd,\n\tlightblue: 0xadd8e6,\n\tlightcoral: 0xf08080,\n\tlightcyan: 0xe0ffff,\n\tlightgoldenrodyellow: 0xfafad2,\n\tlightgray: 0xd3d3d3,\n\tlightgreen: 0x90ee90,\n\tlightgrey: 0xd3d3d3,\n\tlightpink: 0xffb6c1,\n\tlightsalmon: 0xffa07a,\n\tlightseagreen: 0x20b2aa,\n\tlightskyblue: 0x87cefa,\n\tlightslategray: 0x778899,\n\tlightslategrey: 0x778899,\n\tlightsteelblue: 0xb0c4de,\n\tlightyellow: 0xffffe0,\n\tlime: 0x00ff00,\n\tlimegreen: 0x32cd32,\n\tlinen: 0xfaf0e6,\n\tmagenta: 0xff00ff,\n\tmaroon: 0x800000,\n\tmediumaquamarine: 0x66cdaa,\n\tmediumblue: 0x0000cd,\n\tmediumorchid: 0xba55d3,\n\tmediumpurple: 0x9370db,\n\tmediumseagreen: 0x3cb371,\n\tmediumslateblue: 0x7b68ee,\n\tmediumspringgreen: 0x00fa9a,\n\tmediumturquoise: 0x48d1cc,\n\tmediumvioletred: 0xc71585,\n\tmidnightblue: 0x191970,\n\tmintcream: 0xf5fffa,\n\tmistyrose: 0xffe4e1,\n\tmoccasin: 0xffe4b5,\n\tnavajowhite: 0xffdead,\n\tnavy: 0x000080,\n\toldlace: 0xfdf5e6,\n\tolive: 0x808000,\n\tolivedrab: 0x6b8e23,\n\torange: 0xffa500,\n\torangered: 0xff4500,\n\torchid: 0xda70d6,\n\tpalegoldenrod: 0xeee8aa,\n\tpalegreen: 0x98fb98,\n\tpaleturquoise: 0xafeeee,\n\tpalevioletred: 0xdb7093,\n\tpapayawhip: 0xffefd5,\n\tpeachpuff: 0xffdab9,\n\tperu: 0xcd853f,\n\tpink: 0xffc0cb,\n\tplum: 0xdda0dd,\n\tpowderblue: 0xb0e0e6,\n\tpurple: 0x800080,\n\n\t// Added in CSS Colors Level 4:\n\t// https://drafts.csswg.org/css-color/#changes-from-3\n\trebeccapurple: 0x663399,\n\n\tred: 0xff0000,\n\trosybrown: 0xbc8f8f,\n\troyalblue: 0x4169e1,\n\tsaddlebrown: 0x8b4513,\n\tsalmon: 0xfa8072,\n\tsandybrown: 0xf4a460,\n\tseagreen: 0x2e8b57,\n\tseashell: 0xfff5ee,\n\tsienna: 0xa0522d,\n\tsilver: 0xc0c0c0,\n\tskyblue: 0x87ceeb,\n\tslateblue: 0x6a5acd,\n\tslategray: 0x708090,\n\tslategrey: 0x708090,\n\tsnow: 0xfffafa,\n\tspringgreen: 0x00ff7f,\n\tsteelblue: 0x4682b4,\n\ttan: 0xd2b48c,\n\tteal: 0x008080,\n\tthistle: 0xd8bfd8,\n\ttomato: 0xff6347,\n\tturquoise: 0x40e0d0,\n\tviolet: 0xee82ee,\n\twheat: 0xf5deb3,\n\twhite: 0xffffff,\n\twhitesmoke: 0xf5f5f5,\n\tyellow: 0xffff00,\n\tyellowgreen: 0x9acd32\n};\n\nexport default named;\n","import parseNumber from './parseNumber.js';\nimport named from '../colors/named.js';\n\n// Also supports the `transparent` color as defined in:\n// https://drafts.csswg.org/css-color/#transparent-black\nconst parseNamed = color => {\n\treturn parseNumber(named[color.toLowerCase()], 6);\n};\n\nexport default parseNamed;\n","import parseNumber from './parseNumber.js';\n\nconst hex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\nconst parseHex = color => {\n\tlet match;\n\t// eslint-disable-next-line no-cond-assign\n\treturn (match = color.match(hex))\n\t\t? parseNumber(parseInt(match[1], 16), match[1].length)\n\t\t: undefined;\n};\n\nexport default parseHex;\n","/*\n\tBasic building blocks for color regexes\n\t---------------------------------------\n\n\tThese regexes are expressed as strings\n\tto be interpolated in the color regexes.\n */\n\n// <number>\nexport const num = '([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)';\n\n// <number> or 'none'\nexport const num_none = `(?:${num}|none)`;\n\n// <percentage>\nexport const per = `${num}%`;\n\n// <percent> or 'none'\nexport const per_none = `(?:${num}%|none)`;\n\n// <number-percentage> (<alpha-value>)\nexport const num_per = `(?:${num}%|${num})`;\n\n// <number-percentage> (<alpha-value>) or 'none'\nexport const num_per_none = `(?:${num}%|${num}|none)`;\n\n// <hue>\nexport const hue = `(?:${num}(deg|grad|rad|turn)|${num})`;\n\n// <hue> or 'none'\nexport const hue_none = `(?:${num}(deg|grad|rad|turn)|${num}|none)`;\n\nexport const c = `\\\\s*,\\\\s*`; // comma\nexport const so = '\\\\s*'; // space, optional\nexport const s = `\\\\s+`; // space\n\nexport const rx_num_per_none = new RegExp('^' + num_per_none + '$');\n","import { num, per, num_per, c } from '../util/regex.js';\n\n/*\n\trgb() regular expressions for legacy format\n\tReference: https://drafts.csswg.org/css-color/#rgb-functions\n */\nconst rgb_num_old = new RegExp(\n\t`^rgba?\\\\(\\\\s*${num}${c}${num}${c}${num}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst rgb_per_old = new RegExp(\n\t`^rgba?\\\\(\\\\s*${per}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst parseRgbLegacy = color => {\n\tlet res = { mode: 'rgb' };\n\tlet match;\n\tif ((match = color.match(rgb_num_old))) {\n\t\tif (match[1] !== undefined) {\n\t\t\tres.r = match[1] / 255;\n\t\t}\n\t\tif (match[2] !== undefined) {\n\t\t\tres.g = match[2] / 255;\n\t\t}\n\t\tif (match[3] !== undefined) {\n\t\t\tres.b = match[3] / 255;\n\t\t}\n\t} else if ((match = color.match(rgb_per_old))) {\n\t\tif (match[1] !== undefined) {\n\t\t\tres.r = match[1] / 100;\n\t\t}\n\t\tif (match[2] !== undefined) {\n\t\t\tres.g = match[2] / 100;\n\t\t}\n\t\tif (match[3] !== undefined) {\n\t\t\tres.b = match[3] / 100;\n\t\t}\n\t} else {\n\t\treturn undefined;\n\t}\n\n\tif (match[4] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, match[4] / 100));\n\t} else if (match[5] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, +match[5]));\n\t}\n\n\treturn res;\n};\n\nexport default parseRgbLegacy;\n","import parse from './parse.js';\n\nconst prepare = (color, mode) =>\n\tcolor === undefined\n\t\t? undefined\n\t\t: typeof color !== 'object'\n\t\t? parse(color)\n\t\t: color.mode !== undefined\n\t\t? color\n\t\t: mode\n\t\t? { ...color, mode }\n\t\t: undefined;\n\nexport default prepare;\n","import { converters } from './modes.js';\nimport prepare from './_prepare.js';\n\nconst converter =\n\t(target_mode = 'rgb') =>\n\tcolor =>\n\t\t(color = prepare(color, target_mode)) !== undefined\n\t\t\t? // if the color's mode corresponds to our target mode\n\t\t\t color.mode === target_mode\n\t\t\t\t? // then just return the color\n\t\t\t\t color\n\t\t\t\t: // otherwise check to see if we have a dedicated\n\t\t\t\t// converter for the target mode\n\t\t\t\tconverters[color.mode][target_mode]\n\t\t\t\t? // and return its result...\n\t\t\t\t converters[color.mode][target_mode](color)\n\t\t\t\t: // ...otherwise pass through RGB as an intermediary step.\n\t\t\t\t// if the target mode is RGB...\n\t\t\t\ttarget_mode === 'rgb'\n\t\t\t\t? // just return the RGB\n\t\t\t\t converters[color.mode].rgb(color)\n\t\t\t\t: // otherwise convert color.mode -> RGB -> target_mode\n\t\t\t\t converters.rgb[target_mode](converters[color.mode].rgb(color))\n\t\t\t: undefined;\n\nexport default converter;\n","import converter from './converter.js';\n\nconst converters = {};\nconst modes = {};\n\nconst parsers = [];\nconst colorProfiles = {};\n\nconst identity = v => v;\n\nconst useMode = definition => {\n\tconverters[definition.mode] = {\n\t\t...converters[definition.mode],\n\t\t...definition.toMode\n\t};\n\n\tObject.keys(definition.fromMode || {}).forEach(k => {\n\t\tif (!converters[k]) {\n\t\t\tconverters[k] = {};\n\t\t}\n\t\tconverters[k][definition.mode] = definition.fromMode[k];\n\t});\n\n\t// Color space channel ranges\n\tif (!definition.ranges) {\n\t\tdefinition.ranges = {};\n\t}\n\n\tif (!definition.difference) {\n\t\tdefinition.difference = {};\n\t}\n\n\tdefinition.channels.forEach(channel => {\n\t\t// undefined channel ranges default to the [0, 1] interval\n\t\tif (definition.ranges[channel] === undefined) {\n\t\t\tdefinition.ranges[channel] = [0, 1];\n\t\t}\n\n\t\tif (!definition.interpolate[channel]) {\n\t\t\tthrow new Error(`Missing interpolator for: ${channel}`);\n\t\t}\n\n\t\tif (typeof definition.interpolate[channel] === 'function') {\n\t\t\tdefinition.interpolate[channel] = {\n\t\t\t\tuse: definition.interpolate[channel]\n\t\t\t};\n\t\t}\n\n\t\tif (!definition.interpolate[channel].fixup) {\n\t\t\tdefinition.interpolate[channel].fixup = identity;\n\t\t}\n\t});\n\n\tmodes[definition.mode] = definition;\n\t(definition.parse || []).forEach(parser => {\n\t\tuseParser(parser, definition.mode);\n\t});\n\n\treturn converter(definition.mode);\n};\n\nconst getMode = mode => modes[mode];\n\nconst useParser = (parser, mode) => {\n\tif (typeof parser === 'string') {\n\t\tif (!mode) {\n\t\t\tthrow new Error(`'mode' required when 'parser' is a string`);\n\t\t}\n\t\tcolorProfiles[parser] = mode;\n\t} else if (typeof parser === 'function') {\n\t\tif (parsers.indexOf(parser) < 0) {\n\t\t\tparsers.push(parser);\n\t\t}\n\t}\n};\n\nconst removeParser = parser => {\n\tif (typeof parser === 'string') {\n\t\tdelete colorProfiles[parser];\n\t} else if (typeof parser === 'function') {\n\t\tconst idx = parsers.indexOf(parser);\n\t\tif (idx > 0) {\n\t\t\tparsers.splice(idx, 1);\n\t\t}\n\t}\n};\n\nexport {\n\tuseMode,\n\tgetMode,\n\tuseParser,\n\tremoveParser,\n\tconverters,\n\tparsers,\n\tcolorProfiles\n};\n","import { parsers, colorProfiles, getMode } from './modes.js';\n\n/* eslint-disable-next-line no-control-regex */\nconst IdentStartCodePoint = /[^\\x00-\\x7F]|[a-zA-Z_]/;\n\n/* eslint-disable-next-line no-control-regex */\nconst IdentCodePoint = /[^\\x00-\\x7F]|[-\\w]/;\n\nexport const Tok = {\n\tFunction: 'function',\n\tIdent: 'ident',\n\tNumber: 'number',\n\tPercentage: 'percentage',\n\tParenClose: ')',\n\tNone: 'none',\n\tHue: 'hue',\n\tAlpha: 'alpha'\n};\n\nlet _i = 0;\n\n/*\n\t4.3.10. Check if three code points would start a number\n\thttps://drafts.csswg.org/css-syntax/#starts-with-a-number\n */\nfunction is_num(chars) {\n\tlet ch = chars[_i];\n\tlet ch1 = chars[_i + 1];\n\tif (ch === '-' || ch === '+') {\n\t\treturn /\\d/.test(ch1) || (ch1 === '.' && /\\d/.test(chars[_i + 2]));\n\t}\n\tif (ch === '.') {\n\t\treturn /\\d/.test(ch1);\n\t}\n\treturn /\\d/.test(ch);\n}\n\n/*\n\tCheck if the stream starts with an identifier.\n */\n\nfunction is_ident(chars) {\n\tif (_i >= chars.length) {\n\t\treturn false;\n\t}\n\tlet ch = chars[_i];\n\tif (IdentStartCodePoint.test(ch)) {\n\t\treturn true;\n\t}\n\tif (ch === '-') {\n\t\tif (chars.length - _i < 2) {\n\t\t\treturn false;\n\t\t}\n\t\tlet ch1 = chars[_i + 1];\n\t\tif (ch1 === '-' || IdentStartCodePoint.test(ch1)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\treturn false;\n}\n\n/*\n\t4.3.3. Consume a numeric token\n\thttps://drafts.csswg.org/css-syntax/#consume-numeric-token\n */\n\nconst huenits = {\n\tdeg: 1,\n\trad: 180 / Math.PI,\n\tgrad: 9 / 10,\n\tturn: 360\n};\n\nfunction num(chars) {\n\tlet value = '';\n\tif (chars[_i] === '-' || chars[_i] === '+') {\n\t\tvalue += chars[_i++];\n\t}\n\tvalue += digits(chars);\n\tif (chars[_i] === '.' && /\\d/.test(chars[_i + 1])) {\n\t\tvalue += chars[_i++] + digits(chars);\n\t}\n\tif (chars[_i] === 'e' || chars[_i] === 'E') {\n\t\tif (\n\t\t\t(chars[_i + 1] === '-' || chars[_i + 1] === '+') &&\n\t\t\t/\\d/.test(chars[_i + 2])\n\t\t) {\n\t\t\tvalue += chars[_i++] + chars[_i++] + digits(chars);\n\t\t} else if (/\\d/.test(chars[_i + 1])) {\n\t\t\tvalue += chars[_i++] + digits(chars);\n\t\t}\n\t}\n\tif (is_ident(chars)) {\n\t\tlet id = ident(chars);\n\t\tif (id === 'deg' || id === 'rad' || id === 'turn' || id === 'grad') {\n\t\t\treturn { type: Tok.Hue, value: value * huenits[id] };\n\t\t}\n\t\treturn undefined;\n\t}\n\tif (chars[_i] === '%') {\n\t\t_i++;\n\t\treturn { type: Tok.Percentage, value: +value };\n\t}\n\treturn { type: Tok.Number, value: +value };\n}\n\n/*\n\tConsume digits.\n */\nfunction digits(chars) {\n\tlet v = '';\n\twhile (/\\d/.test(chars[_i])) {\n\t\tv += chars[_i++];\n\t}\n\treturn v;\n}\n\n/*\n\tConsume an identifier.\n */\nfunction ident(chars) {\n\tlet v = '';\n\twhile (_i < chars.length && IdentCodePoint.test(chars[_i])) {\n\t\tv += chars[_i++];\n\t}\n\treturn v;\n}\n\n/*\n\tConsume an ident-like token.\n */\nfunction identlike(chars) {\n\tlet v = ident(chars);\n\tif (chars[_i] === '(') {\n\t\t_i++;\n\t\treturn { type: Tok.Function, value: v };\n\t}\n\tif (v === 'none') {\n\t\treturn { type: Tok.None, value: undefined };\n\t}\n\treturn { type: Tok.Ident, value: v };\n}\n\nexport function tokenize(str = '') {\n\tlet chars = str.trim();\n\tlet tokens = [];\n\tlet ch;\n\n\t/* reset counter */\n\t_i = 0;\n\n\twhile (_i < chars.length) {\n\t\tch = chars[_i++];\n\n\t\t/*\n\t\t\tConsume whitespace without emitting it\n\t\t */\n\t\tif (ch === '\\n' || ch === '\\t' || ch === ' ') {\n\t\t\twhile (\n\t\t\t\t_i < chars.length &&\n\t\t\t\t(chars[_i] === '\\n' || chars[_i] === '\\t' || chars[_i] === ' ')\n\t\t\t) {\n\t\t\t\t_i++;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === ',') {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === ')') {\n\t\t\ttokens.push({ type: Tok.ParenClose });\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === '+') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '-') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\ttokens.push({ type: Tok.Ident, value: ident(chars) });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '.') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '/') {\n\t\t\twhile (\n\t\t\t\t_i < chars.length &&\n\t\t\t\t(chars[_i] === '\\n' || chars[_i] === '\\t' || chars[_i] === ' ')\n\t\t\t) {\n\t\t\t\t_i++;\n\t\t\t}\n\t\t\tlet alpha;\n\t\t\tif (is_num(chars)) {\n\t\t\t\talpha = num(chars);\n\t\t\t\tif (alpha.type !== Tok.Hue) {\n\t\t\t\t\ttokens.push({ type: Tok.Alpha, value: alpha });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\tif (ident(chars) === 'none') {\n\t\t\t\t\ttokens.push({\n\t\t\t\t\t\ttype: Tok.Alpha,\n\t\t\t\t\t\tvalue: { type: Tok.None, value: undefined }\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (/\\d/.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(num(chars));\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (IdentStartCodePoint.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(identlike(chars));\n\t\t\tcontinue;\n\t\t}\n\n\t\t/*\n\t\t\tTreat everything not already handled as an error.\n\t\t */\n\t\treturn undefined;\n\t}\n\n\treturn tokens;\n}\n\nexport function parseColorSyntax(tokens) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function || token.value !== 'color') {\n\t\treturn undefined;\n\t}\n\ttoken = tokens[tokens._i++];\n\tif (token.type !== Tok.Ident) {\n\t\treturn undefined;\n\t}\n\tconst mode = colorProfiles[token.value];\n\tif (!mode) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode };\n\tconst coords = consumeCoords(tokens, false);\n\tif (!coords) {\n\t\treturn undefined;\n\t}\n\tconst channels = getMode(mode).channels;\n\tfor (let ii = 0, c, ch; ii < channels.length; ii++) {\n\t\tc = coords[ii];\n\t\tch = channels[ii];\n\t\tif (c.type !== Tok.None) {\n\t\t\tres[ch] = c.type === Tok.Number ? c.value : c.value / 100;\n\t\t\tif (ch === 'alpha') {\n\t\t\t\tres[ch] = Math.max(0, Math.min(1, res[ch]));\n\t\t\t}\n\t\t}\n\t}\n\treturn res;\n}\n\nfunction consumeCoords(tokens, includeHue) {\n\tconst coords = [];\n\tlet token;\n\twhile (tokens._i < tokens.length) {\n\t\ttoken = tokens[tokens._i++];\n\t\tif (\n\t\t\ttoken.type === Tok.None ||\n\t\t\ttoken.type === Tok.Number ||\n\t\t\ttoken.type === Tok.Alpha ||\n\t\t\ttoken.type === Tok.Percentage ||\n\t\t\t(includeHue && token.type === Tok.Hue)\n\t\t) {\n\t\t\tcoords.push(token);\n\t\t\tcontinue;\n\t\t}\n\t\tif (token.type === Tok.ParenClose) {\n\t\t\tif (tokens._i < tokens.length) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tif (coords.length < 3 || coords.length > 4) {\n\t\treturn undefined;\n\t}\n\n\tif (coords.length === 4) {\n\t\tif (coords[3].type !== Tok.Alpha) {\n\t\t\treturn undefined;\n\t\t}\n\t\tcoords[3] = coords[3].value;\n\t}\n\tif (coords.length === 3) {\n\t\tcoords.push({ type: Tok.None, value: undefined });\n\t}\n\n\treturn coords.every(c => c.type !== Tok.Alpha) ? coords : undefined;\n}\n\nexport function parseModernSyntax(tokens, includeHue) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function) {\n\t\treturn undefined;\n\t}\n\tlet coords = consumeCoords(tokens, includeHue);\n\tif (!coords) {\n\t\treturn undefined;\n\t}\n\tcoords.unshift(token.value);\n\treturn coords;\n}\n\nconst parse = color => {\n\tif (typeof color !== 'string') {\n\t\treturn undefined;\n\t}\n\tconst tokens = tokenize(color);\n\tconst parsed = tokens ? parseModernSyntax(tokens, true) : undefined;\n\tlet result = undefined;\n\tlet i = 0;\n\tlet len = parsers.length;\n\twhile (i < len) {\n\t\tif ((result = parsers[i++](color, parsed)) !== undefined) {\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn tokens ? parseColorSyntax(tokens) : undefined;\n};\n\nexport default parse;\n","import { Tok } from '../parse.js';\n\nfunction parseRgb(color, parsed) {\n\tif (!parsed || (parsed[0] !== 'rgb' && parsed[0] !== 'rgba')) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'rgb' };\n\tconst [, r, g, b, alpha] = parsed;\n\tif (r.type === Tok.Hue || g.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (r.type !== Tok.None) {\n\t\tres.r = r.type === Tok.Number ? r.value / 255 : r.value / 100;\n\t}\n\tif (g.type !== Tok.None) {\n\t\tres.g = g.type === Tok.Number ? g.value / 255 : g.value / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value / 255 : b.value / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseRgb;\n","const parseTransparent = c =>\n\tc === 'transparent'\n\t\t? { mode: 'rgb', r: 0, g: 0, b: 0, alpha: 0 }\n\t\t: undefined;\n\nexport default parseTransparent;\n","const lerp = (a, b, t) => a + t * (b - a);\nconst unlerp = (a, b, v) => (v - a) / (b - a);\n\nconst blerp = (a00, a01, a10, a11, tx, ty) => {\n\treturn lerp(lerp(a00, a01, tx), lerp(a10, a11, tx), ty);\n};\n\nconst trilerp = (\n\ta000,\n\ta010,\n\ta100,\n\ta110,\n\ta001,\n\ta011,\n\ta101,\n\ta111,\n\ttx,\n\tty,\n\ttz\n) => {\n\treturn lerp(\n\t\tblerp(a000, a010, a100, a110, tx, ty),\n\t\tblerp(a001, a011, a101, a111, tx, ty),\n\t\ttz\n\t);\n};\n\nexport { lerp, blerp, trilerp, unlerp };\n","const get_classes = arr => {\n\tlet classes = [];\n\tfor (let i = 0; i < arr.length - 1; i++) {\n\t\tlet a = arr[i];\n\t\tlet b = arr[i + 1];\n\t\tif (a === undefined && b === undefined) {\n\t\t\tclasses.push(undefined);\n\t\t} else if (a !== undefined && b !== undefined) {\n\t\t\tclasses.push([a, b]);\n\t\t} else {\n\t\t\tclasses.push(a !== undefined ? [a, a] : [b, b]);\n\t\t}\n\t}\n\treturn classes;\n};\n\nconst interpolatorPiecewise = interpolator => arr => {\n\tlet classes = get_classes(arr);\n\treturn t => {\n\t\tlet cls = t * classes.length;\n\t\tlet idx = t >= 1 ? classes.length - 1 : Math.max(Math.floor(cls), 0);\n\t\tlet pair = classes[idx];\n\t\treturn pair === undefined\n\t\t\t? undefined\n\t\t\t: interpolator(pair[0], pair[1], cls - idx);\n\t};\n};\n\nexport { interpolatorPiecewise };\n","import { lerp } from './lerp.js';\nimport { interpolatorPiecewise } from './piecewise.js';\n\nexport const interpolatorLinear = interpolatorPiecewise(lerp);\n","const fixupAlpha = arr => {\n\tlet some_defined = false;\n\tlet res = arr.map(v => {\n\t\tif (v !== undefined) {\n\t\t\tsome_defined = true;\n\t\t\treturn v;\n\t\t}\n\t\treturn 1;\n\t});\n\treturn some_defined ? res : arr;\n};\n\nexport { fixupAlpha };\n","import parseNamed from './parseNamed.js';\nimport parseHex from './parseHex.js';\nimport parseRgbLegacy from './parseRgbLegacy.js';\nimport parseRgb from './parseRgb.js';\nimport parseTransparent from './parseTransparent.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\n/*\n\tsRGB color space\n */\n\nconst definition = {\n\tmode: 'rgb',\n\tchannels: ['r', 'g', 'b', 'alpha'],\n\tparse: [\n\t\tparseRgb,\n\t\tparseHex,\n\t\tparseRgbLegacy,\n\t\tparseNamed,\n\t\tparseTransparent,\n\t\t'srgb'\n\t],\n\tserialize: 'srgb',\n\tinterpolate: {\n\t\tr: interpolatorLinear,\n\t\tg: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\tgamut: true,\n\twhite: { r: 1, g: 1, b: 1 },\n\tblack: { r: 0, g: 0, b: 0 }\n};\n\nexport default definition;\n","/*\n\tConvert A98 RGB values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n*/\n\nconst linearize = (v = 0) => Math.pow(Math.abs(v), 563 / 256) * Math.sign(v);\n\nconst convertA98ToXyz65 = a98 => {\n\tlet r = linearize(a98.r);\n\tlet g = linearize(a98.g);\n\tlet b = linearize(a98.b);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.5766690429101305 * r +\n\t\t\t0.1855582379065463 * g +\n\t\t\t0.1882286462349947 * b,\n\t\ty:\n\t\t\t0.297344975250536 * r +\n\t\t\t0.6273635662554661 * g +\n\t\t\t0.0752914584939979 * b,\n\t\tz:\n\t\t\t0.0270313613864123 * r +\n\t\t\t0.0706888525358272 * g +\n\t\t\t0.9913375368376386 * b\n\t};\n\tif (a98.alpha !== undefined) {\n\t\tres.alpha = a98.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertA98ToXyz65;\n","/*\n\tConvert CIE XYZ D65 values to A98 RGB\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst gamma = v => Math.pow(Math.abs(v), 256 / 563) * Math.sign(v);\n\nconst convertXyz65ToA98 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'a98',\n\t\tr: gamma(\n\t\t\tx * 2.0415879038107465 -\n\t\t\t\ty * 0.5650069742788597 -\n\t\t\t\t0.3447313507783297 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.9692436362808798 +\n\t\t\t\ty * 1.8759675015077206 +\n\t\t\t\t0.0415550574071756 * z\n\t\t),\n\t\tb: gamma(\n\t\t\tx * 0.0134442806320312 -\n\t\t\t\ty * 0.1183623922310184 +\n\t\t\t\t1.0151749943912058 * z\n\t\t)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToA98;\n","const fn = (c = 0) => {\n\tconst abs = Math.abs(c);\n\tif (abs <= 0.04045) {\n\t\treturn c / 12.92;\n\t}\n\treturn (Math.sign(c) || 1) * Math.pow((abs + 0.055) / 1.055, 2.4);\n};\n\nconst convertRgbToLrgb = ({ r, g, b, alpha }) => {\n\tlet res = {\n\t\tmode: 'lrgb',\n\t\tr: fn(r),\n\t\tg: fn(g),\n\t\tb: fn(b)\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToLrgb;\n","/*\n\tConvert sRGB values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://observablehq.com/@danburzo/color-matrix-calculator\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertRgbToXyz65 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.4123907992659593 * r +\n\t\t\t0.357584339383878 * g +\n\t\t\t0.1804807884018343 * b,\n\t\ty:\n\t\t\t0.2126390058715102 * r +\n\t\t\t0.715168678767756 * g +\n\t\t\t0.0721923153607337 * b,\n\t\tz:\n\t\t\t0.0193308187155918 * r +\n\t\t\t0.119194779794626 * g +\n\t\t\t0.9505321522496607 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToXyz65;\n","const fn = (c = 0) => {\n\tconst abs = Math.abs(c);\n\tif (abs > 0.0031308) {\n\t\treturn (Math.sign(c) || 1) * (1.055 * Math.pow(abs, 1 / 2.4) - 0.055);\n\t}\n\treturn c * 12.92;\n};\n\nconst convertLrgbToRgb = ({ r, g, b, alpha }, mode = 'rgb') => {\n\tlet res = {\n\t\tmode,\n\t\tr: fn(r),\n\t\tg: fn(g),\n\t\tb: fn(b)\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLrgbToRgb;\n","/*\n\tCIE XYZ D65 values to sRGB.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://observablehq.com/@danburzo/color-matrix-calculator\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz65ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb({\n\t\tr:\n\t\t\tx * 3.2409699419045226 -\n\t\t\ty * 1.5373831775700939 -\n\t\t\t0.4986107602930034 * z,\n\t\tg:\n\t\t\tx * -0.9692436362808796 +\n\t\t\ty * 1.8759675015077204 +\n\t\t\t0.0415550574071756 * z,\n\t\tb:\n\t\t\tx * 0.0556300796969936 -\n\t\t\ty * 0.2039769588889765 +\n\t\t\t1.0569715142428784 * z\n\t});\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToRgb;\n","import rgb from '../rgb/definition.js';\n\nimport convertA98ToXyz65 from './convertA98ToXyz65.js';\nimport convertXyz65ToA98 from './convertXyz65ToA98.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'a98',\n\tparse: ['a98-rgb'],\n\tserialize: 'a98-rgb',\n\n\tfromMode: {\n\t\trgb: color => convertXyz65ToA98(convertRgbToXyz65(color)),\n\t\txyz65: convertXyz65ToA98\n\t},\n\n\ttoMode: {\n\t\trgb: color => convertXyz65ToRgb(convertA98ToXyz65(color)),\n\t\txyz65: convertA98ToXyz65\n\t}\n};\n\nexport default definition;\n","const normalizeHue = hue => ((hue = hue % 360) < 0 ? hue + 360 : hue);\n\nexport default normalizeHue;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst hue = (hues, fn) => {\n\treturn hues\n\t\t.map((hue, idx, arr) => {\n\t\t\tif (hue === undefined) {\n\t\t\t\treturn hue;\n\t\t\t}\n\t\t\tlet normalized = normalizeHue(hue);\n\t\t\tif (idx === 0 || hues[idx - 1] === undefined) {\n\t\t\t\treturn normalized;\n\t\t\t}\n\t\t\treturn fn(normalized - normalizeHue(arr[idx - 1]));\n\t\t})\n\t\t.reduce((acc, curr) => {\n\t\t\tif (\n\t\t\t\t!acc.length ||\n\t\t\t\tcurr === undefined ||\n\t\t\t\tacc[acc.length - 1] === undefined\n\t\t\t) {\n\t\t\t\tacc.push(curr);\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\tacc.push(curr + acc[acc.length - 1]);\n\t\t\treturn acc;\n\t\t}, []);\n};\n\nconst fixupHueShorter = arr =>\n\thue(arr, d => (Math.abs(d) <= 180 ? d : d - 360 * Math.sign(d)));\nconst fixupHueLonger = arr =>\n\thue(arr, d => (Math.abs(d) >= 180 || d === 0 ? d : d - 360 * Math.sign(d)));\nconst fixupHueIncreasing = arr => hue(arr, d => (d >= 0 ? d : d + 360));\nconst fixupHueDecreasing = arr => hue(arr, d => (d <= 0 ? d : d - 360));\n\nexport {\n\tfixupHueShorter,\n\tfixupHueLonger,\n\tfixupHueIncreasing,\n\tfixupHueDecreasing\n};\n","export const M = [-0.14861, 1.78277, -0.29227, -0.90649, 1.97294, 0];\n\nexport const degToRad = Math.PI / 180;\nexport const radToDeg = 180 / Math.PI;\n","/*\n\tConvert a RGB color to the Cubehelix HSL color space.\n\n\tThis computation is not present in Green's paper:\n\thttps://arxiv.org/pdf/1108.5083.pdf\n\n\t...but can be derived from the inverse, HSL to RGB conversion.\n\n\tIt matches the math in Mike Bostock's D3 implementation:\n\n\thttps://github.com/d3/d3-color/blob/master/src/cubehelix.js\n */\n\nimport { radToDeg, M } from './constants.js';\n\nlet DE = M[3] * M[4];\nlet BE = M[1] * M[4];\nlet BCAD = M[1] * M[2] - M[0] * M[3];\n\nconst convertRgbToCubehelix = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet l = (BCAD * b + r * DE - g * BE) / (BCAD + DE - BE);\n\tlet x = b - l;\n\tlet y = (M[4] * (g - l) - M[2] * x) / M[3];\n\n\tlet res = {\n\t\tmode: 'cubehelix',\n\t\tl: l,\n\t\ts:\n\t\t\tl === 0 || l === 1\n\t\t\t\t? undefined\n\t\t\t\t: Math.sqrt(x * x + y * y) / (M[4] * l * (1 - l))\n\t};\n\n\tif (res.s) res.h = Math.atan2(y, x) * radToDeg - 120;\n\tif (alpha !== undefined) res.alpha = alpha;\n\n\treturn res;\n};\n\nexport default convertRgbToCubehelix;\n","import { degToRad, M } from './constants.js';\n\nconst convertCubehelixToRgb = ({ h, s, l, alpha }) => {\n\tlet res = { mode: 'rgb' };\n\n\th = (h === undefined ? 0 : h + 120) * degToRad;\n\tif (l === undefined) l = 0;\n\n\tlet amp = s === undefined ? 0 : s * l * (1 - l);\n\n\tlet cosh = Math.cos(h);\n\tlet sinh = Math.sin(h);\n\n\tres.r = l + amp * (M[0] * cosh + M[1] * sinh);\n\tres.g = l + amp * (M[2] * cosh + M[3] * sinh);\n\tres.b = l + amp * (M[4] * cosh + M[5] * sinh);\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertCubehelixToRgb;\n","import { getMode } from './modes.js';\nimport converter from './converter.js';\nimport normalizeHue from './util/normalizeHue.js';\n\nconst differenceHueSaturation = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined || !std.s || !smp.s) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tlet dH = Math.sin((((smp_h - std_h + 360) / 2) * Math.PI) / 180);\n\treturn 2 * Math.sqrt(std.s * smp.s) * dH;\n};\n\nconst differenceHueNaive = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tif (Math.abs(smp_h - std_h) > 180) {\n\t\t// todo should this be normalized once again?\n\t\treturn std_h - (smp_h - 360 * Math.sign(smp_h - std_h));\n\t}\n\treturn smp_h - std_h;\n};\n\nconst differenceHueChroma = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined || !std.c || !smp.c) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tlet dH = Math.sin((((smp_h - std_h + 360) / 2) * Math.PI) / 180);\n\treturn 2 * Math.sqrt(std.c * smp.c) * dH;\n};\n\nconst differenceEuclidean = (mode = 'rgb', weights = [1, 1, 1, 0]) => {\n\tlet def = getMode(mode);\n\tlet channels = def.channels;\n\tlet diffs = def.difference;\n\tlet conv = converter(mode);\n\treturn (std, smp) => {\n\t\tlet ConvStd = conv(std);\n\t\tlet ConvSmp = conv(smp);\n\t\treturn Math.sqrt(\n\t\t\tchannels.reduce((sum, k, idx) => {\n\t\t\t\tlet delta = diffs[k]\n\t\t\t\t\t? diffs[k](ConvStd, ConvSmp)\n\t\t\t\t\t: ConvStd[k] - ConvSmp[k];\n\t\t\t\treturn (\n\t\t\t\t\tsum +\n\t\t\t\t\t(weights[idx] || 0) * Math.pow(isNaN(delta) ? 0 : delta, 2)\n\t\t\t\t);\n\t\t\t}, 0)\n\t\t);\n\t};\n};\n\nconst differenceCie76 = () => differenceEuclidean('lab65');\n\nconst differenceCie94 = (kL = 1, K1 = 0.045, K2 = 0.015) => {\n\tlet lab = converter('lab65');\n\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\n\t\t// Extract Lab values, and compute Chroma\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\tlet dL2 = Math.pow(lStd - lSmp, 2);\n\t\tlet dC2 = Math.pow(cStd - cSmp, 2);\n\t\tlet dH2 = Math.pow(aStd - aSmp, 2) + Math.pow(bStd - bSmp, 2) - dC2;\n\n\t\treturn Math.sqrt(\n\t\t\tdL2 / Math.pow(kL, 2) +\n\t\t\t\tdC2 / Math.pow(1 + K1 * cStd, 2) +\n\t\t\t\tdH2 / Math.pow(1 + K2 * cStd, 2)\n\t\t);\n\t};\n};\n\n/*\n\tCIEDE2000 color difference, original Matlab implementation by Gaurav Sharma\n\tBased on \"The CIEDE2000 Color-Difference Formula: Implementation Notes, Supplementary Test Data, and Mathematical Observations\" \n\tby Gaurav Sharma, Wencheng Wu, Edul N. Dalal in Color Research and Application, vol. 30. No. 1, pp. 21-30, February 2005.\n\thttp://www2.ece.rochester.edu/~gsharma/ciede2000/\n */\n\nconst differenceCiede2000 = (Kl = 1, Kc = 1, Kh = 1) => {\n\tlet lab = converter('lab65');\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\tlet cAvg = (cStd + cSmp) / 2;\n\n\t\tlet G =\n\t\t\t0.5 *\n\t\t\t(1 -\n\t\t\t\tMath.sqrt(\n\t\t\t\t\tMath.pow(cAvg, 7) / (Math.pow(cAvg, 7) + Math.pow(25, 7))\n\t\t\t\t));\n\n\t\tlet apStd = aStd * (1 + G);\n\t\tlet apSmp = aSmp * (1 + G);\n\n\t\tlet cpStd = Math.sqrt(apStd * apStd + bStd * bStd);\n\t\tlet cpSmp = Math.sqrt(apSmp * apSmp + bSmp * bSmp);\n\n\t\tlet hpStd =\n\t\t\tMath.abs(apStd) + Math.abs(bStd) === 0\n\t\t\t\t? 0\n\t\t\t\t: Math.atan2(bStd, apStd);\n\t\thpStd += (hpStd < 0) * 2 * Math.PI;\n\n\t\tlet hpSmp =\n\t\t\tMath.abs(apSmp) + Math.abs(bSmp) === 0\n\t\t\t\t? 0\n\t\t\t\t: Math.atan2(bSmp, apSmp);\n\t\thpSmp += (hpSmp < 0) * 2 * Math.PI;\n\n\t\tlet dL = lSmp - lStd;\n\t\tlet dC = cpSmp - cpStd;\n\n\t\tlet dhp = cpStd * cpSmp === 0 ? 0 : hpSmp - hpStd;\n\t\tdhp -= (dhp > Math.PI) * 2 * Math.PI;\n\t\tdhp += (dhp < -Math.PI) * 2 * Math.PI;\n\n\t\tlet dH = 2 * Math.sqrt(cpStd * cpSmp) * Math.sin(dhp / 2);\n\n\t\tlet Lp = (lStd + lSmp) / 2;\n\t\tlet Cp = (cpStd + cpSmp) / 2;\n\n\t\tlet hp;\n\t\tif (cpStd * cpSmp === 0) {\n\t\t\thp = hpStd + hpSmp;\n\t\t} else {\n\t\t\thp = (hpStd + hpSmp) / 2;\n\t\t\thp -= (Math.abs(hpStd - hpSmp) > Math.PI) * Math.PI;\n\t\t\thp += (hp < 0) * 2 * Math.PI;\n\t\t}\n\n\t\tlet Lpm50 = Math.pow(Lp - 50, 2);\n\t\tlet T =\n\t\t\t1 -\n\t\t\t0.17 * Math.cos(hp - Math.PI / 6) +\n\t\t\t0.24 * Math.cos(2 * hp) +\n\t\t\t0.32 * Math.cos(3 * hp + Math.PI / 30) -\n\t\t\t0.2 * Math.cos(4 * hp - (63 * Math.PI) / 180);\n\n\t\tlet Sl = 1 + (0.015 * Lpm50) / Math.sqrt(20 + Lpm50);\n\t\tlet Sc = 1 + 0.045 * Cp;\n\t\tlet Sh = 1 + 0.015 * Cp * T;\n\n\t\tlet deltaTheta =\n\t\t\t((30 * Math.PI) / 180) *\n\t\t\tMath.exp(-1 * Math.pow(((180 / Math.PI) * hp - 275) / 25, 2));\n\t\tlet Rc =\n\t\t\t2 *\n\t\t\tMath.sqrt(Math.pow(Cp, 7) / (Math.pow(Cp, 7) + Math.pow(25, 7)));\n\n\t\tlet Rt = -1 * Math.sin(2 * deltaTheta) * Rc;\n\n\t\treturn Math.sqrt(\n\t\t\tMath.pow(dL / (Kl * Sl), 2) +\n\t\t\t\tMath.pow(dC / (Kc * Sc), 2) +\n\t\t\t\tMath.pow(dH / (Kh * Sh), 2) +\n\t\t\t\t(((Rt * dC) / (Kc * Sc)) * dH) / (Kh * Sh)\n\t\t);\n\t};\n};\n\n/*\n\tCMC (l:c) difference formula\n\n\tReferences:\n\t\thttps://en.wikipedia.org/wiki/Color_difference#CMC_l:c_(1984)\n\t\thttp://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n */\nconst differenceCmc = (l = 1, c = 1) => {\n\tlet lab = converter('lab65');\n\n\t/*\n\t\tComparte two colors:\n\t\tstd - standard (first) color\n\t\tsmp - sample (second) color\n\t */\n\treturn (std, smp) => {\n\t\t// convert standard color to Lab\n\t\tlet LabStd = lab(std);\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\n\t\t// Obtain hue/chroma\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\t\tlet hStd = Math.atan2(bStd, aStd);\n\t\thStd = hStd + 2 * Math.PI * (hStd < 0);\n\n\t\t// convert sample color to Lab, obtain LCh\n\t\tlet LabSmp = lab(smp);\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\n\t\t// Obtain chroma\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\t// lightness delta squared\n\t\tlet dL2 = Math.pow(lStd - lSmp, 2);\n\n\t\t// chroma delta squared\n\t\tlet dC2 = Math.pow(cStd - cSmp, 2);\n\n\t\t// hue delta squared\n\t\tlet dH2 = Math.pow(aStd - aSmp, 2) + Math.pow(bStd - bSmp, 2) - dC2;\n\n\t\tlet F = Math.sqrt(Math.pow(cStd, 4) / (Math.pow(cStd, 4) + 1900));\n\t\tlet T =\n\t\t\thStd >= (164 / 180) * Math.PI && hStd <= (345 / 180) * Math.PI\n\t\t\t\t? 0.56 + Math.abs(0.2 * Math.cos(hStd + (168 / 180) * Math.PI))\n\t\t\t\t: 0.36 + Math.abs(0.4 * Math.cos(hStd + (35 / 180) * Math.PI));\n\n\t\tlet Sl = lStd < 16 ? 0.511 : (0.040975 * lStd) / (1 + 0.01765 * lStd);\n\t\tlet Sc = (0.0638 * cStd) / (1 + 0.0131 * cStd) + 0.638;\n\t\tlet Sh = Sc * (F * T + 1 - F);\n\n\t\treturn Math.sqrt(\n\t\t\tdL2 / Math.pow(l * Sl, 2) +\n\t\t\t\tdC2 / Math.pow(c * Sc, 2) +\n\t\t\t\tdH2 / Math.pow(Sh, 2)\n\t\t);\n\t};\n};\n\n/*\n\n\tHyAB color difference formula, introduced in:\n\n\t\tAbasi S, Amani Tehran M, Fairchild MD. \n\t\t\"Distance metrics for very large color differences.\"\n\t\tColor Res Appl. 2019; 1–16. \n\t\thttps://doi.org/10.1002/col.22451\n\n\tPDF available at:\n\t\n\t\thttp://markfairchild.org/PDFs/PAP40.pdf\n */\nconst differenceHyab = () => {\n\tlet lab = converter('lab65');\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\t\tlet dL = LabStd.l - LabSmp.l;\n\t\tlet dA = LabStd.a - LabSmp.a;\n\t\tlet dB = LabStd.b - LabSmp.b;\n\t\treturn Math.abs(dL) + Math.sqrt(dA * dA + dB * dB);\n\t};\n};\n\n/*\n\t\"Measuring perceived color difference using YIQ NTSC\n\ttransmission color space in mobile applications\"\n\t\t\n\t\tby Yuriy Kotsarenko, Fernando Ramos in:\n\t\tProgramación Matemática y Software (2010) \n\n\tAvailable at:\n\t\t\n\t\thttp://www.progmat.uaem.mx:8080/artVol2Num2/Articulo3Vol2Num2.pdf\n */\nconst differenceKotsarenkoRamos = () =>\n\tdifferenceEuclidean('yiq', [0.5053, 0.299, 0.1957]);\n\n/*\n\tΔE_ITP, as defined in Rec. ITU-R BT.2124:\n\n\thttps://www.itu.int/rec/R-REC-BT.2124/en\n*/\nconst differenceItp = () =>\n\tdifferenceEuclidean('itp', [518400, 129600, 518400]);\n\nexport {\n\tdifferenceHueChroma,\n\tdifferenceHueSaturation,\n\tdifferenceHueNaive,\n\tdifferenceEuclidean,\n\tdifferenceCie76,\n\tdifferenceCie94,\n\tdifferenceCiede2000,\n\tdifferenceCmc,\n\tdifferenceHyab,\n\tdifferenceKotsarenkoRamos,\n\tdifferenceItp\n};\n","import converter from './converter.js';\nimport { getMode } from './modes.js';\n\nconst averageAngle = val => {\n\t// See: https://en.wikipedia.org/wiki/Mean_of_circular_quantities\n\tlet sum = val.reduce(\n\t\t(sum, val) => {\n\t\t\tif (val !== undefined) {\n\t\t\t\tlet rad = (val * Math.PI) / 180;\n\t\t\t\tsum.sin += Math.sin(rad);\n\t\t\t\tsum.cos += Math.cos(rad);\n\t\t\t}\n\t\t\treturn sum;\n\t\t},\n\t\t{ sin: 0, cos: 0 }\n\t);\n\tlet angle = (Math.atan2(sum.sin, sum.cos) * 180) / Math.PI;\n\treturn angle < 0 ? 360 + angle : angle;\n};\n\nconst averageNumber = val => {\n\tlet a = val.filter(v => v !== undefined);\n\treturn a.length ? a.reduce((sum, v) => sum + v, 0) / a.length : undefined;\n};\n\nconst isfn = o => typeof o === 'function';\n\nfunction average(colors, mode = 'rgb', overrides) {\n\tlet def = getMode(mode);\n\tlet cc = colors.map(converter(mode));\n\treturn def.channels.reduce(\n\t\t(res, ch) => {\n\t\t\tlet arr = cc.map(c => c[ch]).filter(val => val !== undefined);\n\t\t\tif (arr.length) {\n\t\t\t\tlet fn;\n\t\t\t\tif (isfn(overrides)) {\n\t\t\t\t\tfn = overrides;\n\t\t\t\t} else if (overrides && isfn(overrides[ch])) {\n\t\t\t\t\tfn = overrides[ch];\n\t\t\t\t} else if (def.average && isfn(def.average[ch])) {\n\t\t\t\t\tfn = def.average[ch];\n\t\t\t\t} else {\n\t\t\t\t\tfn = averageNumber;\n\t\t\t\t}\n\t\t\t\tres[ch] = fn(arr, ch);\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t{ mode }\n\t);\n}\n\nexport { average, averageAngle, averageNumber };\n","/* \n\tDave Green's Cubehelix\n\t----------------------\n\n\tGreen, D. A., 2011, \"A colour scheme for the display of astronomical intensity images\", \n\tBulletin of the Astronomical Society of India, 39, 289. (2011BASI...39..289G at ADS.) \n\n\thttps://www.mrao.cam.ac.uk/%7Edag/CUBEHELIX/\n\thttps://arxiv.org/pdf/1108.5083.pdf\n\n\tAlthough Cubehelix was defined to be a method to obtain a colour scheme,\n\tit actually contains a definition of a colour space, as identified by \n\tMike Bostock and implemented in D3.js.\n\n\tGreen's paper introduces the following terminology:\n\n\t* \ta `lightness` dimension in the interval [0, 1] \n\t\ton which we interpolate to obtain the colour scheme\n\t*\ta `start` colour that is analogous to a Hue in HSL space\n\t*\ta number of `rotations` around the Hue cylinder.\n\t*\ta `hue` parameter which should more appropriately be called `saturation`\n\t\n\tAs such, the original definition of the Cubehelix scheme is actually an\n\tinterpolation between two colors in the Cubehelix space:\n\n\tH: start \t\t\t\tH: start + 360 * rotations\n\tS: hue \t\t\t->\t\tS: hue\n\tL: 0\t\t\t\t\tL: 1\n\n\tWe can therefore extend the interpolation to any two colors in this space,\n\twith a variable Saturation and a Lightness interval other than the fixed 0 -> 1.\n*/\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport convertRgbToCubehelix from './convertRgbToCubehelix.js';\nimport convertCubehelixToRgb from './convertCubehelixToRgb.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'cubehelix',\n\tchannels: ['h', 's', 'l', 'alpha'],\n\tparse: ['--cubehelix'],\n\tserialize: '--cubehelix',\n\n\tranges: {\n\t\th: [0, 360],\n\t\ts: [0, 4.614],\n\t\tl: [0, 1]\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToCubehelix\n\t},\n\n\ttoMode: {\n\t\trgb: convertCubehelixToRgb\n\t},\n\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n/* \n\tReferences: \n\t\t* https://drafts.csswg.org/css-color/#lab-to-lch\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n*/\nconst convertLabToLch = ({ l, a, b, alpha }, mode = 'lch') => {\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet c = Math.sqrt(a * a + b * b);\n\tlet res = { mode, l, c };\n\tif (c) res.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLabToLch;\n","/* \n\tReferences: \n\t\t* https://drafts.csswg.org/css-color/#lch-to-lab\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n*/\nconst convertLchToLab = ({ l, c, h, alpha }, mode = 'lab') => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode,\n\t\tl,\n\t\ta: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tb: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLchToLab;\n","export const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","/*\n\tThe XYZ tristimulus values (white point)\n\tof standard illuminants for the CIE 1931 2° \n\tstandard observer.\n\n\tSee: https://en.wikipedia.org/wiki/Standard_illuminant\n */\n\nexport const D50 = {\n\tX: 0.3457 / 0.3585,\n\tY: 1,\n\tZ: (1 - 0.3457 - 0.3585) / 0.3585\n};\n\nexport const D65 = {\n\tX: 0.3127 / 0.329,\n\tY: 1,\n\tZ: (1 - 0.3127 - 0.329) / 0.329\n};\n\nexport const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","import { k, e } from '../xyz65/constants.js';\nimport { D65 } from '../constants.js';\n\nlet fn = v => (Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k);\n\nconst convertLab65ToXyz65 = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx: fn(fx) * D65.X,\n\t\ty: fn(fy) * D65.Y,\n\t\tz: fn(fz) * D65.Z\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLab65ToXyz65;\n","import convertLab65ToXyz65 from './convertLab65ToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst convertLab65ToRgb = lab => convertXyz65ToRgb(convertLab65ToXyz65(lab));\n\nexport default convertLab65ToRgb;\n","import { k, e } from '../xyz65/constants.js';\nimport { D65 } from '../constants.js';\n\nconst f = value => (value > e ? Math.cbrt(value) : (k * value + 16) / 116);\n\nconst convertXyz65ToLab65 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet f0 = f(x / D65.X);\n\tlet f1 = f(y / D65.Y);\n\tlet f2 = f(z / D65.Z);\n\n\tlet res = {\n\t\tmode: 'lab65',\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToLab65;\n","import convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToLab65 from './convertXyz65ToLab65.js';\n\nconst convertRgbToLab65 = rgb => {\n\tlet res = convertXyz65ToLab65(convertRgbToXyz65(rgb));\n\n\t// Fixes achromatic RGB colors having a _slight_ chroma due to floating-point errors\n\t// and approximated computations in sRGB <-> CIELab.\n\t// See: https://github.com/d3/d3-color/pull/46\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToLab65;\n","export const kE = 1;\nexport const kCH = 1;\nexport const θ = (26 / 180) * Math.PI;\nexport const cosθ = Math.cos(θ);\nexport const sinθ = Math.sin(θ);\nexport const factor = 100 / Math.log(139 / 100); // ~ 303.67\n","import { kCH, kE, sinθ, cosθ, θ, factor } from './constants.js';\n\n/*\n\tConvert DIN99o LCh to CIELab D65\n\t--------------------------------\n */\n\nconst convertDlchToLab65 = ({ l, c, h, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (c === undefined) c = 0;\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'lab65',\n\t\tl: (Math.exp((l * kE) / factor) - 1) / 0.0039\n\t};\n\n\tlet G = (Math.exp(0.0435 * c * kCH * kE) - 1) / 0.075;\n\tlet e = G * Math.cos((h / 180) * Math.PI - θ);\n\tlet f = G * Math.sin((h / 180) * Math.PI - θ);\n\tres.a = e * cosθ - (f / 0.83) * sinθ;\n\tres.b = e * sinθ + (f / 0.83) * cosθ;\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertDlchToLab65;\n","import { kCH, kE, sinθ, cosθ, θ, factor } from './constants.js';\nimport normalizeHue from '../util/normalizeHue.js';\n\n/*\n\tConvert CIELab D65 to DIN99o LCh\n\t================================\n */\n\nconst convertLab65ToDlch = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet e = a * cosθ + b * sinθ;\n\tlet f = 0.83 * (b * cosθ - a * sinθ);\n\tlet G = Math.sqrt(e * e + f * f);\n\tlet res = {\n\t\tmode: 'dlch',\n\t\tl: (factor / kE) * Math.log(1 + 0.0039 * l),\n\t\tc: Math.log(1 + 0.075 * G) / (0.0435 * kCH * kE)\n\t};\n\n\tif (res.c) {\n\t\tres.h = normalizeHue(((Math.atan2(f, e) + θ) / Math.PI) * 180);\n\t}\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLab65ToDlch;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\nimport convertDlchToLab65 from '../dlch/convertDlchToLab65.js';\nimport convertLab65ToDlch from '../dlch/convertLab65ToDlch.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst convertDlabToLab65 = c => convertDlchToLab65(convertLabToLch(c, 'dlch'));\nconst convertLab65ToDlab = c => convertLchToLab(convertLab65ToDlch(c), 'dlab');\n\nconst definition = {\n\tmode: 'dlab',\n\n\tparse: ['--din99o-lab'],\n\tserialize: '--din99o-lab',\n\n\ttoMode: {\n\t\tlab65: convertDlabToLab65,\n\t\trgb: c => convertLab65ToRgb(convertDlabToLab65(c))\n\t},\n\n\tfromMode: {\n\t\tlab65: convertLab65ToDlab,\n\t\trgb: c => convertLab65ToDlab(convertRgbToLab65(c))\n\t},\n\n\tchannels: ['l', 'a', 'b', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-40.09, 45.501],\n\t\tb: [-40.469, 44.344]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\n\nexport default definition;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertDlchToLab65 from './convertDlchToLab65.js';\nimport convertLab65ToDlch from './convertLab65ToDlch.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'dlch',\n\n\tparse: ['--din99o-lch'],\n\tserialize: '--din99o-lch',\n\n\ttoMode: {\n\t\tlab65: convertDlchToLab65,\n\t\tdlab: c => convertLchToLab(c, 'dlab'),\n\t\trgb: c => convertLab65ToRgb(convertDlchToLab65(c))\n\t},\n\n\tfromMode: {\n\t\tlab65: convertLab65ToDlch,\n\t\tdlab: c => convertLabToLch(c, 'dlch'),\n\t\trgb: c => convertLab65ToDlch(convertRgbToLab65(c))\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 51.484],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tc: interpolatorLinear,\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHsiToRgb({ h, s, i, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (i === undefined) i = 0;\n\tlet f = Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tg: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tb: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: i * (1 - s), g: i * (1 - s), b: i * (1 - s) };\n\t}\n\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsi({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsi',\n\t\ts: r + g + b === 0 ? 0 : 1 - (3 * m) / (r + g + b),\n\t\ti: (r + g + b) / 3\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","import convertHsiToRgb from './convertHsiToRgb.js';\nimport convertRgbToHsi from './convertRgbToHsi.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsi',\n\n\ttoMode: {\n\t\trgb: convertHsiToRgb\n\t},\n\n\tparse: ['--hsi'],\n\tserialize: '--hsi',\n\n\tfromMode: {\n\t\trgb: convertRgbToHsi\n\t},\n\n\tchannels: ['h', 's', 'i', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHslToRgb({ h, s, l, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (l === undefined) l = 0;\n\tlet m1 = l + s * (l < 0.5 ? l : 1 - l);\n\tlet m2 = m1 - (m1 - l) * 2 * Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = { r: m1, g: m2, b: 2 * l - m1 };\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = { r: m2, g: m1, b: 2 * l - m1 };\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = { r: 2 * l - m1, g: m1, b: m2 };\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = { r: 2 * l - m1, g: m2, b: m1 };\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = { r: m2, g: 2 * l - m1, b: m1 };\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = { r: m1, g: 2 * l - m1, b: m2 };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: 2 * l - m1, g: 2 * l - m1, b: 2 * l - m1 };\n\t}\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsl({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsl',\n\t\ts: M === m ? 0 : (M - m) / (1 - Math.abs(M + m - 1)),\n\t\tl: 0.5 * (M + m)\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","const hueToDeg = (val, unit) => {\n\tswitch (unit) {\n\t\tcase 'deg':\n\t\t\treturn +val;\n\t\tcase 'rad':\n\t\t\treturn (val / Math.PI) * 180;\n\t\tcase 'grad':\n\t\t\treturn (val / 10) * 9;\n\t\tcase 'turn':\n\t\t\treturn val * 360;\n\t}\n};\n\nexport default hueToDeg;\n","import hueToDeg from '../util/hue.js';\nimport { hue, per, num_per, c } from '../util/regex.js';\n\n/*\n\thsl() regular expressions for legacy format\n\tReference: https://drafts.csswg.org/css-color/#the-hsl-notation\n */\nconst hsl_old = new RegExp(\n\t`^hsla?\\\\(\\\\s*${hue}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst parseHslLegacy = color => {\n\tlet match = color.match(hsl_old);\n\tif (!match) return;\n\tlet res = { mode: 'hsl' };\n\n\tif (match[3] !== undefined) {\n\t\tres.h = +match[3];\n\t} else if (match[1] !== undefined && match[2] !== undefined) {\n\t\tres.h = hueToDeg(match[1], match[2]);\n\t}\n\n\tif (match[4] !== undefined) {\n\t\tres.s = Math.min(Math.max(0, match[4] / 100), 1);\n\t}\n\n\tif (match[5] !== undefined) {\n\t\tres.l = Math.min(Math.max(0, match[5] / 100), 1);\n\t}\n\n\tif (match[6] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, match[6] / 100));\n\t} else if (match[7] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, +match[7]));\n\t}\n\treturn res;\n};\n\nexport default parseHslLegacy;\n","import { Tok } from '../parse.js';\n\nfunction parseHsl(color, parsed) {\n\tif (!parsed || (parsed[0] !== 'hsl' && parsed[0] !== 'hsla')) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'hsl' };\n\tconst [, h, s, l, alpha] = parsed;\n\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\n\tif (s.type !== Tok.None) {\n\t\tif (s.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.s = s.value / 100;\n\t}\n\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = l.value / 100;\n\t}\n\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseHsl;\n","import convertHslToRgb from './convertHslToRgb.js';\nimport convertRgbToHsl from './convertRgbToHsl.js';\nimport parseHslLegacy from './parseHslLegacy.js';\nimport parseHsl from './parseHsl.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsl',\n\n\ttoMode: {\n\t\trgb: convertHslToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToHsl\n\t},\n\n\tchannels: ['h', 's', 'l', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tparse: [parseHsl, parseHslLegacy],\n\tserialize: c =>\n\t\t`hsl(${c.h !== undefined ? c.h : 'none'} ${\n\t\t\tc.s !== undefined ? c.s * 100 + '%' : 'none'\n\t\t} ${c.l !== undefined ? c.l * 100 + '%' : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHsvToRgb({ h, s, v, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (v === undefined) v = 0;\n\tlet f = Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = { r: v, g: v * (1 - s * f), b: v * (1 - s) };\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = { r: v * (1 - s * f), g: v, b: v * (1 - s) };\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = { r: v * (1 - s), g: v, b: v * (1 - s * f) };\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = { r: v * (1 - s), g: v * (1 - s * f), b: v };\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = { r: v * (1 - s * f), g: v * (1 - s), b: v };\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = { r: v, g: v * (1 - s), b: v * (1 - s * f) };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: v * (1 - s), g: v * (1 - s), b: v * (1 - s) };\n\t}\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsv({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsv',\n\t\ts: M === 0 ? 0 : 1 - m / M,\n\t\tv: M\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","import convertHsvToRgb from './convertHsvToRgb.js';\nimport convertRgbToHsv from './convertRgbToHsv.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsv',\n\n\ttoMode: {\n\t\trgb: convertHsvToRgb\n\t},\n\n\tparse: ['--hsv'],\n\tserialize: '--hsv',\n\n\tfromMode: {\n\t\trgb: convertRgbToHsv\n\t},\n\n\tchannels: ['h', 's', 'v', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","/*\n\tHWB to RGB converter\n\t--------------------\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#hwb-to-rgb\n\t\t* https://en.wikipedia.org/wiki/HWB_color_model\n\t\t* http://alvyray.com/Papers/CG/HWB_JGTv208.pdf\n */\n\nimport convertHsvToRgb from '../hsv/convertHsvToRgb.js';\n\nexport default function convertHwbToRgb({ h, w, b, alpha }) {\n\tif (w === undefined) w = 0;\n\tif (b === undefined) b = 0;\n\t// normalize w + b to 1\n\tif (w + b > 1) {\n\t\tlet s = w + b;\n\t\tw /= s;\n\t\tb /= s;\n\t}\n\treturn convertHsvToRgb({\n\t\th: h,\n\t\ts: b === 1 ? 1 : 1 - w / (1 - b),\n\t\tv: 1 - b,\n\t\talpha: alpha\n\t});\n}\n","/*\n\tRGB to HWB converter\n\t--------------------\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#hwb-to-rgb\n\t\t* https://en.wikipedia.org/wiki/HWB_color_model\n\t\t* http://alvyray.com/Papers/CG/HWB_JGTv208.pdf\n */\n\nimport convertRgbToHsv from '../hsv/convertRgbToHsv.js';\n\nexport default function convertRgbToHwb(rgba) {\n\tlet hsv = convertRgbToHsv(rgba);\n\tif (hsv === undefined) return undefined;\n\tlet s = hsv.s !== undefined ? hsv.s : 0;\n\tlet v = hsv.v !== undefined ? hsv.v : 0;\n\tlet res = {\n\t\tmode: 'hwb',\n\t\tw: (1 - s) * v,\n\t\tb: 1 - v\n\t};\n\tif (hsv.h !== undefined) res.h = hsv.h;\n\tif (hsv.alpha !== undefined) res.alpha = hsv.alpha;\n\treturn res;\n}\n","import { Tok } from '../parse.js';\n\nfunction ParseHwb(color, parsed) {\n\tif (!parsed || parsed[0] !== 'hwb') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'hwb' };\n\tconst [, h, w, b, alpha] = parsed;\n\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\n\tif (w.type !== Tok.None) {\n\t\tif (w.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.w = w.value / 100;\n\t}\n\n\tif (b.type !== Tok.None) {\n\t\tif (b.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.b = b.value / 100;\n\t}\n\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default ParseHwb;\n","import convertHwbToRgb from './convertHwbToRgb.js';\nimport convertRgbToHwb from './convertRgbToHwb.js';\nimport parseHwb from './parseHwb.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueNaive } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hwb',\n\n\ttoMode: {\n\t\trgb: convertHwbToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToHwb\n\t},\n\n\tchannels: ['h', 'w', 'b', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tparse: [parseHwb],\n\tserialize: c =>\n\t\t`hwb(${c.h !== undefined ? c.h : 'none'} ${\n\t\t\tc.w !== undefined ? c.w * 100 + '%' : 'none'\n\t\t} ${c.b !== undefined ? c.b * 100 + '%' : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tw: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueNaive\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","/*\n\tRelative XYZ has Y=1 for media white,\n\tBT.2048 says media white Y=203 (at PQ 58).\n\tSee: https://www.itu.int/dms_pub/itu-r/opb/rep/R-REP-BT.2408-3-2019-PDF-E.pdf\n*/\nexport const YW = 203;\n","/*\n\thttps://en.wikipedia.org/wiki/Transfer_functions_in_imaging\n*/\n\nexport const M1 = 0.1593017578125;\nexport const M2 = 78.84375;\nexport const C1 = 0.8359375;\nexport const C2 = 18.8515625;\nexport const C3 = 18.6875;\n\n/*\n\tPerceptual Quantizer, as defined in Rec. BT 2100-2 (2018)\n\n\t* https://www.itu.int/rec/R-REC-BT.2100-2-201807-I/en\n\t* https://en.wikipedia.org/wiki/Perceptual_quantizer\n*/\n\n/* PQ EOTF, defined for `v` in [0,1]. */\nexport function transferPqDecode(v) {\n\tif (v < 0) return 0;\n\tconst c = Math.pow(v, 1 / M2);\n\treturn 1e4 * Math.pow(Math.max(0, c - C1) / (C2 - C3 * c), 1 / M1);\n}\n\n/* PQ EOTF^-1, defined for `v` in [0, 1e4]. */\nexport function transferPqEncode(v) {\n\tif (v < 0) return 0;\n\tconst c = Math.pow(v / 1e4, M1);\n\treturn Math.pow((C1 + C2 * c) / (1 + C3 * c), M2);\n}\n","import { YW } from '../hdr/constants.js';\nimport { transferPqDecode } from '../hdr/transfer.js';\n\nconst toRel = c => Math.max(c / YW, 0);\n\nconst convertItpToXyz65 = ({ i, t, p, alpha }) => {\n\tif (i === undefined) i = 0;\n\tif (t === undefined) t = 0;\n\tif (p === undefined) p = 0;\n\n\tconst l = transferPqDecode(\n\t\ti + 0.008609037037932761 * t + 0.11102962500302593 * p\n\t);\n\tconst m = transferPqDecode(\n\t\ti - 0.00860903703793275 * t - 0.11102962500302599 * p\n\t);\n\tconst s = transferPqDecode(\n\t\ti + 0.5600313357106791 * t - 0.32062717498731885 * p\n\t);\n\n\tconst res = {\n\t\tmode: 'xyz65',\n\t\tx: toRel(\n\t\t\t2.0701522183894219 * l -\n\t\t\t\t1.3263473389671556 * m +\n\t\t\t\t0.2066510476294051 * s\n\t\t),\n\t\ty: toRel(\n\t\t\t0.3647385209748074 * l +\n\t\t\t\t0.680566024947227 * m -\n\t\t\t\t0.0453045459220346 * s\n\t\t),\n\t\tz: toRel(\n\t\t\t-0.049747207535812 * l -\n\t\t\t\t0.0492609666966138 * m +\n\t\t\t\t1.1880659249923042 * s\n\t\t)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertItpToXyz65;\n","import { YW } from '../hdr/constants.js';\nimport { transferPqEncode } from '../hdr/transfer.js';\n\nconst toAbs = (c = 0) => Math.max(c * YW, 0);\n\nconst convertXyz65ToItp = ({ x, y, z, alpha }) => {\n\tconst absX = toAbs(x);\n\tconst absY = toAbs(y);\n\tconst absZ = toAbs(z);\n\tconst l = transferPqEncode(\n\t\t0.3592832590121217 * absX +\n\t\t\t0.6976051147779502 * absY -\n\t\t\t0.0358915932320289 * absZ\n\t);\n\tconst m = transferPqEncode(\n\t\t-0.1920808463704995 * absX +\n\t\t\t1.1004767970374323 * absY +\n\t\t\t0.0753748658519118 * absZ\n\t);\n\tconst s = transferPqEncode(\n\t\t0.0070797844607477 * absX +\n\t\t\t0.0748396662186366 * absY +\n\t\t\t0.8433265453898765 * absZ\n\t);\n\n\tconst i = 0.5 * l + 0.5 * m;\n\tconst t = 1.61376953125 * l - 3.323486328125 * m + 1.709716796875 * s;\n\tconst p = 4.378173828125 * l - 4.24560546875 * m - 0.132568359375 * s;\n\n\tconst res = { mode: 'itp', i, t, p };\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToItp;\n","import { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport convertItpToXyz65 from './convertItpToXyz65.js';\nimport convertXyz65ToItp from './convertXyz65ToItp.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\n/*\n ICtCp (or ITP) color space, as defined in ITU-R Recommendation BT.2100.\n\n ICtCp is drafted to be supported in CSS within\n [CSS Color HDR Module Level 1](https://drafts.csswg.org/css-color-hdr/#ICtCp) spec.\n*/\n\nconst definition = {\n\tmode: 'itp',\n\tchannels: ['i', 't', 'p', 'alpha'],\n\tparse: ['--ictcp'],\n\tserialize: '--ictcp',\n\n\ttoMode: {\n\t\txyz65: convertItpToXyz65,\n\t\trgb: color => convertXyz65ToRgb(convertItpToXyz65(color))\n\t},\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToItp,\n\t\trgb: color => convertXyz65ToItp(convertRgbToXyz65(color))\n\t},\n\n\tranges: {\n\t\ti: [0, 0.581],\n\t\tt: [-0.369, 0.272],\n\t\tp: [-0.164, 0.331]\n\t},\n\n\tinterpolate: {\n\t\ti: interpolatorLinear,\n\t\tt: interpolatorLinear,\n\t\tp: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","import { M1 as n, C1, C2, C3 } from '../hdr/transfer.js';\nconst p = 134.03437499999998; // = 1.7 * 2523 / Math.pow(2, 5);\nconst d0 = 1.6295499532821566e-11;\n\n/* \n\tThe encoding function is derived from Perceptual Quantizer.\n*/\nconst jabPqEncode = v => {\n\tif (v < 0) return 0;\n\tlet vn = Math.pow(v / 10000, n);\n\treturn Math.pow((C1 + C2 * vn) / (1 + C3 * vn), p);\n};\n\n// Convert to Absolute XYZ\nconst abs = (v = 0) => Math.max(v * 203, 0);\n\nconst convertXyz65ToJab = ({ x, y, z, alpha }) => {\n\tx = abs(x);\n\ty = abs(y);\n\tz = abs(z);\n\n\tlet xp = 1.15 * x - 0.15 * z;\n\tlet yp = 0.66 * y + 0.34 * x;\n\n\tlet l = jabPqEncode(0.41478972 * xp + 0.579999 * yp + 0.014648 * z);\n\tlet m = jabPqEncode(-0.20151 * xp + 1.120649 * yp + 0.0531008 * z);\n\tlet s = jabPqEncode(-0.0166008 * xp + 0.2648 * yp + 0.6684799 * z);\n\n\tlet i = (l + m) / 2;\n\n\tlet res = {\n\t\tmode: 'jab',\n\t\tj: (0.44 * i) / (1 - 0.56 * i) - d0,\n\t\ta: 3.524 * l - 4.066708 * m + 0.542708 * s,\n\t\tb: 0.199076 * l + 1.096799 * m - 1.295875 * s\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToJab;\n","import { M1 as n, C1, C2, C3 } from '../hdr/transfer.js';\nconst p = 134.03437499999998; // = 1.7 * 2523 / Math.pow(2, 5);\nconst d0 = 1.6295499532821566e-11;\n\n/* \n\tThe encoding function is derived from Perceptual Quantizer.\n*/\nconst jabPqDecode = v => {\n\tif (v < 0) return 0;\n\tlet vp = Math.pow(v, 1 / p);\n\treturn 10000 * Math.pow((C1 - vp) / (C3 * vp - C2), 1 / n);\n};\n\nconst rel = v => v / 203;\n\nconst convertJabToXyz65 = ({ j, a, b, alpha }) => {\n\tif (j === undefined) j = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet i = (j + d0) / (0.44 + 0.56 * (j + d0));\n\n\tlet l = jabPqDecode(i + 0.13860504 * a + 0.058047316 * b);\n\tlet m = jabPqDecode(i - 0.13860504 * a - 0.058047316 * b);\n\tlet s = jabPqDecode(i - 0.096019242 * a - 0.8118919 * b);\n\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx: rel(\n\t\t\t1.661373024652174 * l -\n\t\t\t\t0.914523081304348 * m +\n\t\t\t\t0.23136208173913045 * s\n\t\t),\n\t\ty: rel(\n\t\t\t-0.3250758611844533 * l +\n\t\t\t\t1.571847026732543 * m -\n\t\t\t\t0.21825383453227928 * s\n\t\t),\n\t\tz: rel(-0.090982811 * l - 0.31272829 * m + 1.5227666 * s)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertJabToXyz65;\n","/*\n\tConvert sRGB to JzAzBz.\n\n\tFor achromatic sRGB colors, adjust the equivalent JzAzBz color\n\tto be achromatic as well, insteading of having a very slight chroma.\n */\n\nimport convertXyz65ToJab from './convertXyz65ToJab.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\n\nconst convertRgbToJab = rgb => {\n\tlet res = convertXyz65ToJab(convertRgbToXyz65(rgb));\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToJab;\n","import convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\nimport convertJabToXyz65 from './convertJabToXyz65.js';\n\nconst convertJabToRgb = color => convertXyz65ToRgb(convertJabToXyz65(color));\n\nexport default convertJabToRgb;\n","/*\n\tThe JzAzBz color space.\n\n\tBased on:\n\n\tMuhammad Safdar, Guihua Cui, Youn Jin Kim, and Ming Ronnier Luo, \n\t\"Perceptually uniform color space for image signals \n\tincluding high dynamic range and wide gamut,\" \n\tOpt. Express 25, 15131-15151 (2017) \n\n\thttps://doi.org/10.1364/OE.25.015131\n */\n\nimport convertXyz65ToJab from './convertXyz65ToJab.js';\nimport convertJabToXyz65 from './convertJabToXyz65.js';\nimport convertRgbToJab from './convertRgbToJab.js';\nimport convertJabToRgb from './convertJabToRgb.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'jab',\n\tchannels: ['j', 'a', 'b', 'alpha'],\n\n\tparse: ['--jzazbz'],\n\tserialize: '--jzazbz',\n\n\tfromMode: {\n\t\trgb: convertRgbToJab,\n\t\txyz65: convertXyz65ToJab\n\t},\n\n\ttoMode: {\n\t\trgb: convertJabToRgb,\n\t\txyz65: convertJabToXyz65\n\t},\n\n\tranges: {\n\t\tj: [0, 0.222],\n\t\ta: [-0.109, 0.129],\n\t\tb: [-0.185, 0.134]\n\t},\n\n\tinterpolate: {\n\t\tj: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst convertJabToJch = ({ j, a, b, alpha }) => {\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet c = Math.sqrt(a * a + b * b);\n\tlet res = {\n\t\tmode: 'jch',\n\t\tj,\n\t\tc\n\t};\n\tif (c) {\n\t\tres.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertJabToJch;\n","const convertJchToJab = ({ j, c, h, alpha }) => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'jab',\n\t\tj,\n\t\ta: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tb: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertJchToJab;\n","import convertJabToJch from './convertJabToJch.js';\nimport convertJchToJab from './convertJchToJab.js';\nimport convertJabToRgb from '../jab/convertJabToRgb.js';\nimport convertRgbToJab from '../jab/convertRgbToJab.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'jch',\n\n\tparse: ['--jzczhz'],\n\tserialize: '--jzczhz',\n\n\ttoMode: {\n\t\tjab: convertJchToJab,\n\t\trgb: c => convertJabToRgb(convertJchToJab(c))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertJabToJch(convertRgbToJab(c)),\n\t\tjab: convertJabToJch\n\t},\n\n\tchannels: ['j', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tj: [0, 0.221],\n\t\tc: [0, 0.19],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tj: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","export const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nlet fn = v => (Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k);\n\nconst convertLabToXyz50 = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx: fn(fx) * D50.X,\n\t\ty: fn(fy) * D50.Y,\n\t\tz: fn(fz) * D50.Z\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLabToXyz50;\n","/*\n\tCIE XYZ D50 values to sRGB.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz50ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb({\n\t\tr:\n\t\t\tx * 3.1341359569958707 -\n\t\t\ty * 1.6173863321612538 -\n\t\t\t0.4906619460083532 * z,\n\t\tg:\n\t\t\tx * -0.978795502912089 +\n\t\t\ty * 1.916254567259524 +\n\t\t\t0.03344273116131949 * z,\n\t\tb:\n\t\t\tx * 0.07195537988411677 -\n\t\t\ty * 0.2289768264158322 +\n\t\t\t1.405386058324125 * z\n\t});\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToRgb;\n","import convertLabToXyz50 from './convertLabToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\n\nconst convertLabToRgb = lab => convertXyz50ToRgb(convertLabToXyz50(lab));\n\nexport default convertLabToRgb;\n","/*\n\tConvert sRGB values to CIE XYZ D50\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertRgbToXyz50 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t0.436065742824811 * r +\n\t\t\t0.3851514688337912 * g +\n\t\t\t0.14307845442264197 * b,\n\t\ty:\n\t\t\t0.22249319175623702 * r +\n\t\t\t0.7168870538238823 * g +\n\t\t\t0.06061979053616537 * b,\n\t\tz:\n\t\t\t0.013923904500943465 * r +\n\t\t\t0.09708128566574634 * g +\n\t\t\t0.7140993584005155 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToXyz50;\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nconst f = value => (value > e ? Math.cbrt(value) : (k * value + 16) / 116);\n\nconst convertXyz50ToLab = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet f0 = f(x / D50.X);\n\tlet f1 = f(y / D50.Y);\n\tlet f2 = f(z / D50.Z);\n\n\tlet res = {\n\t\tmode: 'lab',\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz50ToLab;\n","import convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\nimport convertXyz50ToLab from './convertXyz50ToLab.js';\n\nconst convertRgbToLab = rgb => {\n\tlet res = convertXyz50ToLab(convertRgbToXyz50(rgb));\n\n\t// Fixes achromatic RGB colors having a _slight_ chroma due to floating-point errors\n\t// and approximated computations in sRGB <-> CIELab.\n\t// See: https://github.com/d3/d3-color/pull/46\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToLab;\n","import { Tok } from '../parse.js';\n\nfunction parseLab(color, parsed) {\n\tif (!parsed || parsed[0] !== 'lab') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'lab' };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tres.l = Math.min(Math.max(0, l.value), 100);\n\t}\n\tif (a.type !== Tok.None) {\n\t\tres.a = a.type === Tok.Number ? a.value : (a.value * 125) / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value : (b.value * 125) / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseLab;\n","import convertLabToRgb from './convertLabToRgb.js';\nimport convertLabToXyz50 from './convertLabToXyz50.js';\nimport convertRgbToLab from './convertRgbToLab.js';\nimport convertXyz50ToLab from './convertXyz50ToLab.js';\nimport parseLab from './parseLab.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'lab',\n\n\ttoMode: {\n\t\txyz50: convertLabToXyz50,\n\t\trgb: convertLabToRgb\n\t},\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToLab,\n\t\trgb: convertRgbToLab\n\t},\n\n\tchannels: ['l', 'a', 'b', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t},\n\n\tparse: [parseLab],\n\tserialize: c =>\n\t\t`lab(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.a !== undefined ? c.a : 'none'\n\t\t} ${c.b !== undefined ? c.b : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","import convertLab65ToRgb from './convertLab65ToRgb.js';\nimport convertLab65ToXyz65 from './convertLab65ToXyz65.js';\nimport convertRgbToLab65 from './convertRgbToLab65.js';\nimport convertXyz65ToLab65 from './convertXyz65ToLab65.js';\nimport lab from '../lab/definition.js';\n\nconst definition = {\n\t...lab,\n\tmode: 'lab65',\n\n\tparse: ['--lab-d65'],\n\tserialize: '--lab-d65',\n\n\ttoMode: {\n\t\txyz65: convertLab65ToXyz65,\n\t\trgb: convertLab65ToRgb\n\t},\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToLab65,\n\t\trgb: convertRgbToLab65\n\t},\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t}\n};\n\nexport default definition;\n","import { Tok } from '../parse.js';\n\nfunction parseLch(color, parsed) {\n\tif (!parsed || parsed[0] !== 'lch') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'lch' };\n\tconst [, l, c, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = Math.min(Math.max(0, l.value), 100);\n\t}\n\tif (c.type !== Tok.None) {\n\t\tres.c = Math.max(\n\t\t\t0,\n\t\t\tc.type === Tok.Number ? c.value : (c.value * 150) / 100\n\t\t);\n\t}\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseLch;\n","import convertLabToLch from './convertLabToLch.js';\nimport convertLchToLab from './convertLchToLab.js';\nimport convertLabToRgb from '../lab/convertLabToRgb.js';\nimport convertRgbToLab from '../lab/convertRgbToLab.js';\nimport parseLch from './parseLch.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'lch',\n\n\ttoMode: {\n\t\tlab: convertLchToLab,\n\t\trgb: c => convertLabToRgb(convertLchToLab(c))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToLab(c)),\n\t\tlab: convertLabToLch\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t},\n\n\tparse: [parseLch],\n\tserialize: c =>\n\t\t`lch(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.c !== undefined ? c.c : 'none'\n\t\t} ${c.h !== undefined ? c.h : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\nimport lch from '../lch/definition.js';\n\nconst definition = {\n\t...lch,\n\tmode: 'lch65',\n\n\tparse: ['--lch-d65'],\n\tserialize: '--lch-d65',\n\n\ttoMode: {\n\t\tlab65: c => convertLchToLab(c, 'lab65'),\n\t\trgb: c => convertLab65ToRgb(convertLchToLab(c, 'lab65'))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToLab65(c), 'lch65'),\n\t\tlab65: c => convertLabToLch(c, 'lch65')\n\t},\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst convertLuvToLchuv = ({ l, u, v, alpha }) => {\n\tif (u === undefined) u = 0;\n\tif (v === undefined) v = 0;\n\tlet c = Math.sqrt(u * u + v * v);\n\tlet res = {\n\t\tmode: 'lchuv',\n\t\tl: l,\n\t\tc: c\n\t};\n\tif (c) {\n\t\tres.h = normalizeHue((Math.atan2(v, u) * 180) / Math.PI);\n\t}\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertLuvToLchuv;\n","const convertLchuvToLuv = ({ l, c, h, alpha }) => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'luv',\n\t\tl: l,\n\t\tu: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tv: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertLchuvToLuv;\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nexport const u_fn = (x, y, z) => (4 * x) / (x + 15 * y + 3 * z);\nexport const v_fn = (x, y, z) => (9 * y) / (x + 15 * y + 3 * z);\n\nexport const un = u_fn(D50.X, D50.Y, D50.Z);\nexport const vn = v_fn(D50.X, D50.Y, D50.Z);\n\nconst l_fn = value => (value <= e ? k * value : 116 * Math.cbrt(value) - 16);\n\nconst convertXyz50ToLuv = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet l = l_fn(y / D50.Y);\n\tlet u = u_fn(x, y, z);\n\tlet v = v_fn(x, y, z);\n\n\t// guard against NaNs produced by `xyz(0 0 0)` black\n\tif (!isFinite(u) || !isFinite(v)) {\n\t\tl = u = v = 0;\n\t} else {\n\t\tu = 13 * l * (u - un);\n\t\tv = 13 * l * (v - vn);\n\t}\n\n\tlet res = {\n\t\tmode: 'luv',\n\t\tl,\n\t\tu,\n\t\tv\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz50ToLuv;\n","import { k } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nexport const u_fn = (x, y, z) => (4 * x) / (x + 15 * y + 3 * z);\nexport const v_fn = (x, y, z) => (9 * y) / (x + 15 * y + 3 * z);\n\nexport const un = u_fn(D50.X, D50.Y, D50.Z);\nexport const vn = v_fn(D50.X, D50.Y, D50.Z);\n\nconst convertLuvToXyz50 = ({ l, u, v, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (l === 0) {\n\t\treturn { mode: 'xyz50', x: 0, y: 0, z: 0 };\n\t}\n\n\tif (u === undefined) u = 0;\n\tif (v === undefined) v = 0;\n\n\tlet up = u / (13 * l) + un;\n\tlet vp = v / (13 * l) + vn;\n\tlet y = D50.Y * (l <= 8 ? l / k : Math.pow((l + 16) / 116, 3));\n\tlet x = (y * (9 * up)) / (4 * vp);\n\tlet z = (y * (12 - 3 * up - 20 * vp)) / (4 * vp);\n\n\tlet res = { mode: 'xyz50', x, y, z };\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLuvToXyz50;\n","/*\n\tCIELChuv color space\n\t--------------------\n\n\tReference: \n\n\t\thttps://en.wikipedia.org/wiki/CIELUV\n */\n\nimport convertLuvToLchuv from './convertLuvToLchuv.js';\nimport convertLchuvToLuv from './convertLchuvToLuv.js';\nimport convertXyz50ToLuv from '../luv/convertXyz50ToLuv.js';\nimport convertLuvToXyz50 from '../luv/convertLuvToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst convertRgbToLchuv = rgb =>\n\tconvertLuvToLchuv(convertXyz50ToLuv(convertRgbToXyz50(rgb)));\nconst convertLchuvToRgb = lchuv =>\n\tconvertXyz50ToRgb(convertLuvToXyz50(convertLchuvToLuv(lchuv)));\n\nconst definition = {\n\tmode: 'lchuv',\n\n\ttoMode: {\n\t\tluv: convertLchuvToLuv,\n\t\trgb: convertLchuvToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToLchuv,\n\t\tluv: convertLuvToLchuv\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tparse: ['--lchuv'],\n\tserialize: '--lchuv',\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 176.956],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import rgb from '../rgb/definition.js';\nimport convertRgbToLrgb from './convertRgbToLrgb.js';\nimport convertLrgbToRgb from './convertLrgbToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'lrgb',\n\n\ttoMode: {\n\t\trgb: convertLrgbToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToLrgb\n\t},\n\n\tparse: ['srgb-linear'],\n\tserialize: 'srgb-linear'\n};\n\nexport default definition;\n","/*\n\tCIELUV color space\n\t------------------\n\n\tReference: \n\n\t\thttps://en.wikipedia.org/wiki/CIELUV\n */\n\nimport convertXyz50ToLuv from './convertXyz50ToLuv.js';\nimport convertLuvToXyz50 from './convertLuvToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'luv',\n\n\ttoMode: {\n\t\txyz50: convertLuvToXyz50,\n\t\trgb: luv => convertXyz50ToRgb(convertLuvToXyz50(luv))\n\t},\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToLuv,\n\t\trgb: rgb => convertXyz50ToLuv(convertRgbToXyz50(rgb))\n\t},\n\n\tchannels: ['l', 'u', 'v', 'alpha'],\n\n\tparse: ['--luv'],\n\tserialize: '--luv',\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tu: [-84.936, 175.042],\n\t\tv: [-125.882, 87.243]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tu: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","const convertLrgbToOklab = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\n\tlet L = Math.cbrt(\n\t\t0.412221469470763 * r + 0.5363325372617348 * g + 0.0514459932675022 * b\n\t);\n\tlet M = Math.cbrt(\n\t\t0.2119034958178252 * r + 0.6806995506452344 * g + 0.1073969535369406 * b\n\t);\n\tlet S = Math.cbrt(\n\t\t0.0883024591900564 * r + 0.2817188391361215 * g + 0.6299787016738222 * b\n\t);\n\n\tlet res = {\n\t\tmode: 'oklab',\n\t\tl:\n\t\t\t0.210454268309314 * L +\n\t\t\t0.7936177747023054 * M -\n\t\t\t0.0040720430116193 * S,\n\t\ta:\n\t\t\t1.9779985324311684 * L -\n\t\t\t2.4285922420485799 * M +\n\t\t\t0.450593709617411 * S,\n\t\tb:\n\t\t\t0.0259040424655478 * L +\n\t\t\t0.7827717124575296 * M -\n\t\t\t0.8086757549230774 * S\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLrgbToOklab;\n","import convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\nimport convertLrgbToOklab from './convertLrgbToOklab.js';\n\nconst convertRgbToOklab = rgb => {\n\tlet res = convertLrgbToOklab(convertRgbToLrgb(rgb));\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToOklab;\n","const convertOklabToLrgb = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\n\tlet L = Math.pow(l + 0.3963377773761749 * a + 0.2158037573099136 * b, 3);\n\tlet M = Math.pow(l - 0.1055613458156586 * a - 0.0638541728258133 * b, 3);\n\tlet S = Math.pow(l - 0.0894841775298119 * a - 1.2914855480194092 * b, 3);\n\n\tlet res = {\n\t\tmode: 'lrgb',\n\t\tr:\n\t\t\t4.0767416360759574 * L -\n\t\t\t3.3077115392580616 * M +\n\t\t\t0.2309699031821044 * S,\n\t\tg:\n\t\t\t-1.2684379732850317 * L +\n\t\t\t2.6097573492876887 * M -\n\t\t\t0.3413193760026573 * S,\n\t\tb:\n\t\t\t-0.0041960761386756 * L -\n\t\t\t0.7034186179359362 * M +\n\t\t\t1.7076146940746117 * S\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertOklabToLrgb;\n","import convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\nimport convertOklabToLrgb from './convertOklabToLrgb.js';\n\nconst convertOklabToRgb = c => convertLrgbToRgb(convertOklabToLrgb(c));\n\nexport default convertOklabToRgb;\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\n\nexport function toe(x) {\n\tconst k_1 = 0.206;\n\tconst k_2 = 0.03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn (\n\t\t0.5 *\n\t\t(k_3 * x -\n\t\t\tk_1 +\n\t\t\tMath.sqrt((k_3 * x - k_1) * (k_3 * x - k_1) + 4 * k_2 * k_3 * x))\n\t);\n}\n\nexport function toe_inv(x) {\n\tconst k_1 = 0.206;\n\tconst k_2 = 0.03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn (x * x + k_1 * x) / (k_3 * (x + k_2));\n}\n\n// Finds the maximum saturation possible for a given hue that fits in sRGB\n// Saturation here is defined as S = C/L\n// a and b must be normalized so a^2 + b^2 == 1\nfunction compute_max_saturation(a, b) {\n\t// Max saturation will be when one of r, g or b goes below zero.\n\n\t// Select different coefficients depending on which component goes below zero first\n\tlet k0, k1, k2, k3, k4, wl, wm, ws;\n\n\tif (-1.88170328 * a - 0.80936493 * b > 1) {\n\t\t// Red component\n\t\tk0 = +1.19086277;\n\t\tk1 = +1.76576728;\n\t\tk2 = +0.59662641;\n\t\tk3 = +0.75515197;\n\t\tk4 = +0.56771245;\n\t\twl = +4.0767416621;\n\t\twm = -3.3077115913;\n\t\tws = +0.2309699292;\n\t} else if (1.81444104 * a - 1.19445276 * b > 1) {\n\t\t// Green component\n\t\tk0 = +0.73956515;\n\t\tk1 = -0.45954404;\n\t\tk2 = +0.08285427;\n\t\tk3 = +0.1254107;\n\t\tk4 = +0.14503204;\n\t\twl = -1.2684380046;\n\t\twm = +2.6097574011;\n\t\tws = -0.3413193965;\n\t} else {\n\t\t// Blue component\n\t\tk0 = +1.35733652;\n\t\tk1 = -0.00915799;\n\t\tk2 = -1.1513021;\n\t\tk3 = -0.50559606;\n\t\tk4 = +0.00692167;\n\t\twl = -0.0041960863;\n\t\twm = -0.7034186147;\n\t\tws = +1.707614701;\n\t}\n\n\t// Approximate max saturation using a polynomial:\n\tlet S = k0 + k1 * a + k2 * b + k3 * a * a + k4 * a * b;\n\n\t// Do one step Halley's method to get closer\n\t// this gives an error less than 10e6, except for some blue hues where the dS/dh is close to infinite\n\t// this should be sufficient for most applications, otherwise do two/three steps\n\n\tlet k_l = +0.3963377774 * a + 0.2158037573 * b;\n\tlet k_m = -0.1055613458 * a - 0.0638541728 * b;\n\tlet k_s = -0.0894841775 * a - 1.291485548 * b;\n\n\t{\n\t\tlet l_ = 1 + S * k_l;\n\t\tlet m_ = 1 + S * k_m;\n\t\tlet s_ = 1 + S * k_s;\n\n\t\tlet l = l_ * l_ * l_;\n\t\tlet m = m_ * m_ * m_;\n\t\tlet s = s_ * s_ * s_;\n\n\t\tlet l_dS = 3 * k_l * l_ * l_;\n\t\tlet m_dS = 3 * k_m * m_ * m_;\n\t\tlet s_dS = 3 * k_s * s_ * s_;\n\n\t\tlet l_dS2 = 6 * k_l * k_l * l_;\n\t\tlet m_dS2 = 6 * k_m * k_m * m_;\n\t\tlet s_dS2 = 6 * k_s * k_s * s_;\n\n\t\tlet f = wl * l + wm * m + ws * s;\n\t\tlet f1 = wl * l_dS + wm * m_dS + ws * s_dS;\n\t\tlet f2 = wl * l_dS2 + wm * m_dS2 + ws * s_dS2;\n\n\t\tS = S - (f * f1) / (f1 * f1 - 0.5 * f * f2);\n\t}\n\n\treturn S;\n}\n\nexport function find_cusp(a, b) {\n\t// First, find the maximum saturation (saturation S = C/L)\n\tlet S_cusp = compute_max_saturation(a, b);\n\n\t// Convert to linear sRGB to find the first point where at least one of r,g or b >= 1:\n\tlet rgb = convertOklabToLrgb({ l: 1, a: S_cusp * a, b: S_cusp * b });\n\tlet L_cusp = Math.cbrt(1 / Math.max(rgb.r, rgb.g, rgb.b));\n\tlet C_cusp = L_cusp * S_cusp;\n\n\treturn [L_cusp, C_cusp];\n}\n\n// Finds intersection of the line defined by\n// L = L0 * (1 - t) + t * L1;\n// C = t * C1;\n// a and b must be normalized so a^2 + b^2 == 1\nfunction find_gamut_intersection(a, b, L1, C1, L0, cusp = null) {\n\tif (!cusp) {\n\t\t// Find the cusp of the gamut triangle\n\t\tcusp = find_cusp(a, b);\n\t}\n\n\t// Find the intersection for upper and lower half seprately\n\tlet t;\n\tif ((L1 - L0) * cusp[1] - (cusp[0] - L0) * C1 <= 0) {\n\t\t// Lower half\n\n\t\tt = (cusp[1] * L0) / (C1 * cusp[0] + cusp[1] * (L0 - L1));\n\t} else {\n\t\t// Upper half\n\n\t\t// First intersect with triangle\n\t\tt = (cusp[1] * (L0 - 1)) / (C1 * (cusp[0] - 1) + cusp[1] * (L0 - L1));\n\n\t\t// Then one step Halley's method\n\t\t{\n\t\t\tlet dL = L1 - L0;\n\t\t\tlet dC = C1;\n\n\t\t\tlet k_l = +0.3963377774 * a + 0.2158037573 * b;\n\t\t\tlet k_m = -0.1055613458 * a - 0.0638541728 * b;\n\t\t\tlet k_s = -0.0894841775 * a - 1.291485548 * b;\n\n\t\t\tlet l_dt = dL + dC * k_l;\n\t\t\tlet m_dt = dL + dC * k_m;\n\t\t\tlet s_dt = dL + dC * k_s;\n\n\t\t\t// If higher accuracy is required, 2 or 3 iterations of the following block can be used:\n\t\t\t{\n\t\t\t\tlet L = L0 * (1 - t) + t * L1;\n\t\t\t\tlet C = t * C1;\n\n\t\t\t\tlet l_ = L + C * k_l;\n\t\t\t\tlet m_ = L + C * k_m;\n\t\t\t\tlet s_ = L + C * k_s;\n\n\t\t\t\tlet l = l_ * l_ * l_;\n\t\t\t\tlet m = m_ * m_ * m_;\n\t\t\t\tlet s = s_ * s_ * s_;\n\n\t\t\t\tlet ldt = 3 * l_dt * l_ * l_;\n\t\t\t\tlet mdt = 3 * m_dt * m_ * m_;\n\t\t\t\tlet sdt = 3 * s_dt * s_ * s_;\n\n\t\t\t\tlet ldt2 = 6 * l_dt * l_dt * l_;\n\t\t\t\tlet mdt2 = 6 * m_dt * m_dt * m_;\n\t\t\t\tlet sdt2 = 6 * s_dt * s_dt * s_;\n\n\t\t\t\tlet r =\n\t\t\t\t\t4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s - 1;\n\t\t\t\tlet r1 =\n\t\t\t\t\t4.0767416621 * ldt -\n\t\t\t\t\t3.3077115913 * mdt +\n\t\t\t\t\t0.2309699292 * sdt;\n\t\t\t\tlet r2 =\n\t\t\t\t\t4.0767416621 * ldt2 -\n\t\t\t\t\t3.3077115913 * mdt2 +\n\t\t\t\t\t0.2309699292 * sdt2;\n\n\t\t\t\tlet u_r = r1 / (r1 * r1 - 0.5 * r * r2);\n\t\t\t\tlet t_r = -r * u_r;\n\n\t\t\t\tlet g =\n\t\t\t\t\t-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s - 1;\n\t\t\t\tlet g1 =\n\t\t\t\t\t-1.2684380046 * ldt +\n\t\t\t\t\t2.6097574011 * mdt -\n\t\t\t\t\t0.3413193965 * sdt;\n\t\t\t\tlet g2 =\n\t\t\t\t\t-1.2684380046 * ldt2 +\n\t\t\t\t\t2.6097574011 * mdt2 -\n\t\t\t\t\t0.3413193965 * sdt2;\n\n\t\t\t\tlet u_g = g1 / (g1 * g1 - 0.5 * g * g2);\n\t\t\t\tlet t_g = -g * u_g;\n\n\t\t\t\tlet b =\n\t\t\t\t\t-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s - 1;\n\t\t\t\tlet b1 =\n\t\t\t\t\t-0.0041960863 * ldt -\n\t\t\t\t\t0.7034186147 * mdt +\n\t\t\t\t\t1.707614701 * sdt;\n\t\t\t\tlet b2 =\n\t\t\t\t\t-0.0041960863 * ldt2 -\n\t\t\t\t\t0.7034186147 * mdt2 +\n\t\t\t\t\t1.707614701 * sdt2;\n\n\t\t\t\tlet u_b = b1 / (b1 * b1 - 0.5 * b * b2);\n\t\t\t\tlet t_b = -b * u_b;\n\n\t\t\t\tt_r = u_r >= 0 ? t_r : 10e5;\n\t\t\t\tt_g = u_g >= 0 ? t_g : 10e5;\n\t\t\t\tt_b = u_b >= 0 ? t_b : 10e5;\n\n\t\t\t\tt += Math.min(t_r, Math.min(t_g, t_b));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn t;\n}\n\nexport function get_ST_max(a_, b_, cusp = null) {\n\tif (!cusp) {\n\t\tcusp = find_cusp(a_, b_);\n\t}\n\tlet L = cusp[0];\n\tlet C = cusp[1];\n\treturn [C / L, C / (1 - L)];\n}\n\nexport function get_ST_mid(a_, b_) {\n\tlet S =\n\t\t0.11516993 +\n\t\t1 /\n\t\t\t(+7.4477897 +\n\t\t\t\t4.1590124 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(-2.19557347 +\n\t\t\t\t\t\t1.75198401 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-2.13704948 -\n\t\t\t\t\t\t\t\t10.02301043 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(-4.24894561 +\n\t\t\t\t\t\t\t\t\t\t5.38770819 * b_ +\n\t\t\t\t\t\t\t\t\t\t4.69891013 * a_))));\n\n\tlet T =\n\t\t0.11239642 +\n\t\t1 /\n\t\t\t(+1.6132032 -\n\t\t\t\t0.68124379 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(+0.40370612 +\n\t\t\t\t\t\t0.90148123 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-0.27087943 +\n\t\t\t\t\t\t\t\t0.6122399 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(+0.00299215 -\n\t\t\t\t\t\t\t\t\t\t0.45399568 * b_ -\n\t\t\t\t\t\t\t\t\t\t0.14661872 * a_))));\n\n\treturn [S, T];\n}\n\nexport function get_Cs(L, a_, b_) {\n\tlet cusp = find_cusp(a_, b_);\n\n\tlet C_max = find_gamut_intersection(a_, b_, L, 1, L, cusp);\n\tlet ST_max = get_ST_max(a_, b_, cusp);\n\n\tlet S_mid =\n\t\t0.11516993 +\n\t\t1 /\n\t\t\t(+7.4477897 +\n\t\t\t\t4.1590124 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(-2.19557347 +\n\t\t\t\t\t\t1.75198401 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-2.13704948 -\n\t\t\t\t\t\t\t\t10.02301043 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(-4.24894561 +\n\t\t\t\t\t\t\t\t\t\t5.38770819 * b_ +\n\t\t\t\t\t\t\t\t\t\t4.69891013 * a_))));\n\n\tlet T_mid =\n\t\t0.11239642 +\n\t\t1 /\n\t\t\t(+1.6132032 -\n\t\t\t\t0.68124379 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(+0.40370612 +\n\t\t\t\t\t\t0.90148123 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-0.27087943 +\n\t\t\t\t\t\t\t\t0.6122399 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(+0.00299215 -\n\t\t\t\t\t\t\t\t\t\t0.45399568 * b_ -\n\t\t\t\t\t\t\t\t\t\t0.14661872 * a_))));\n\n\tlet k = C_max / Math.min(L * ST_max[0], (1 - L) * ST_max[1]);\n\n\tlet C_a = L * S_mid;\n\tlet C_b = (1 - L) * T_mid;\n\tlet C_mid =\n\t\t0.9 *\n\t\tk *\n\t\tMath.sqrt(\n\t\t\tMath.sqrt(\n\t\t\t\t1 / (1 / (C_a * C_a * C_a * C_a) + 1 / (C_b * C_b * C_b * C_b))\n\t\t\t)\n\t\t);\n\n\tC_a = L * 0.4;\n\tC_b = (1 - L) * 0.8;\n\tlet C_0 = Math.sqrt(1 / (1 / (C_a * C_a) + 1 / (C_b * C_b)));\n\treturn [C_0, C_mid, C_max];\n}\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport normalizeHue from '../util/normalizeHue.js';\nimport { get_Cs, toe } from './helpers.js';\n\nexport default function convertOklabToOkhsl(lab) {\n\tconst l = lab.l !== undefined ? lab.l : 0;\n\tconst a = lab.a !== undefined ? lab.a : 0;\n\tconst b = lab.b !== undefined ? lab.b : 0;\n\n\tconst ret = { mode: 'okhsl', l: toe(l) };\n\n\tif (lab.alpha !== undefined) {\n\t\tret.alpha = lab.alpha;\n\t}\n\tlet c = Math.sqrt(a * a + b * b);\n\tif (!c) {\n\t\tret.s = 0;\n\t\treturn ret;\n\t}\n\tlet [C_0, C_mid, C_max] = get_Cs(l, a / c, b / c);\n\tlet s;\n\tif (c < C_mid) {\n\t\tlet k_0 = 0;\n\t\tlet k_1 = 0.8 * C_0;\n\t\tlet k_2 = 1 - k_1 / C_mid;\n\t\tlet t = (c - k_0) / (k_1 + k_2 * (c - k_0));\n\t\ts = t * 0.8;\n\t} else {\n\t\tlet k_0 = C_mid;\n\t\tlet k_1 = (0.2 * C_mid * C_mid * 1.25 * 1.25) / C_0;\n\t\tlet k_2 = 1 - k_1 / (C_max - C_mid);\n\t\tlet t = (c - k_0) / (k_1 + k_2 * (c - k_0));\n\t\ts = 0.8 + 0.2 * t;\n\t}\n\tif (s) {\n\t\tret.s = s;\n\t\tret.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\treturn ret;\n}\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport { toe_inv, get_Cs } from './helpers.js';\n\nexport default function convertOkhslToOklab(hsl) {\n\tlet h = hsl.h !== undefined ? hsl.h : 0;\n\tlet s = hsl.s !== undefined ? hsl.s : 0;\n\tlet l = hsl.l !== undefined ? hsl.l : 0;\n\n\tconst ret = { mode: 'oklab', l: toe_inv(l) };\n\n\tif (hsl.alpha !== undefined) {\n\t\tret.alpha = hsl.alpha;\n\t}\n\n\tif (!s || l === 1) {\n\t\tret.a = ret.b = 0;\n\t\treturn ret;\n\t}\n\n\tlet a_ = Math.cos((h / 180) * Math.PI);\n\tlet b_ = Math.sin((h / 180) * Math.PI);\n\tlet [C_0, C_mid, C_max] = get_Cs(ret.l, a_, b_);\n\tlet t, k_0, k_1, k_2;\n\tif (s < 0.8) {\n\t\tt = 1.25 * s;\n\t\tk_0 = 0;\n\t\tk_1 = 0.8 * C_0;\n\t\tk_2 = 1 - k_1 / C_mid;\n\t} else {\n\t\tt = 5 * (s - 0.8);\n\t\tk_0 = C_mid;\n\t\tk_1 = (0.2 * C_mid * C_mid * 1.25 * 1.25) / C_0;\n\t\tk_2 = 1 - k_1 / (C_max - C_mid);\n\t}\n\tlet C = k_0 + (t * k_1) / (1 - k_2 * t);\n\tret.a = C * a_;\n\tret.b = C * b_;\n\n\treturn ret;\n}\n","import convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertOklabToOkhsl from './convertOklabToOkhsl.js';\nimport convertOkhslToOklab from './convertOkhslToOklab.js';\n\nimport modeHsl from '../hsl/definition.js';\n\nconst modeOkhsl = {\n\t...modeHsl,\n\tmode: 'okhsl',\n\tchannels: ['h', 's', 'l', 'alpha'],\n\tparse: ['--okhsl'],\n\tserialize: '--okhsl',\n\tfromMode: {\n\t\toklab: convertOklabToOkhsl,\n\t\trgb: c => convertOklabToOkhsl(convertRgbToOklab(c))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhslToOklab,\n\t\trgb: c => convertOklabToRgb(convertOkhslToOklab(c))\n\t}\n};\n\nexport default modeOkhsl;\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport normalizeHue from '../util/normalizeHue.js';\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\nimport { get_ST_max, toe_inv, toe } from '../okhsl/helpers.js';\n\nexport default function convertOklabToOkhsv(lab) {\n\tlet l = lab.l !== undefined ? lab.l : 0;\n\tlet a = lab.a !== undefined ? lab.a : 0;\n\tlet b = lab.b !== undefined ? lab.b : 0;\n\n\tlet c = Math.sqrt(a * a + b * b);\n\n\t// TODO: c = 0\n\tlet a_ = c ? a / c : 1;\n\tlet b_ = c ? b / c : 1;\n\n\tlet [S_max, T] = get_ST_max(a_, b_);\n\tlet S_0 = 0.5;\n\tlet k = 1 - S_0 / S_max;\n\n\tlet t = T / (c + l * T);\n\tlet L_v = t * l;\n\tlet C_v = t * c;\n\n\tlet L_vt = toe_inv(L_v);\n\tlet C_vt = (C_v * L_vt) / L_v;\n\n\tlet rgb_scale = convertOklabToLrgb({ l: L_vt, a: a_ * C_vt, b: b_ * C_vt });\n\tlet scale_L = Math.cbrt(\n\t\t1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0)\n\t);\n\n\tl = l / scale_L;\n\tc = ((c / scale_L) * toe(l)) / l;\n\tl = toe(l);\n\n\tconst ret = {\n\t\tmode: 'okhsv',\n\t\ts: c ? ((S_0 + T) * C_v) / (T * S_0 + T * k * C_v) : 0,\n\t\tv: l ? l / L_v : 0\n\t};\n\tif (ret.s) {\n\t\tret.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\tif (lab.alpha !== undefined) {\n\t\tret.alpha = lab.alpha;\n\t}\n\treturn ret;\n}\n","/*\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\nimport { get_ST_max, toe_inv } from '../okhsl/helpers.js';\n\nexport default function convertOkhsvToOklab(hsv) {\n\tconst ret = { mode: 'oklab' };\n\tif (hsv.alpha !== undefined) {\n\t\tret.alpha = hsv.alpha;\n\t}\n\n\tconst h = hsv.h !== undefined ? hsv.h : 0;\n\tconst s = hsv.s !== undefined ? hsv.s : 0;\n\tconst v = hsv.v !== undefined ? hsv.v : 0;\n\n\tconst a_ = Math.cos((h / 180) * Math.PI);\n\tconst b_ = Math.sin((h / 180) * Math.PI);\n\n\tconst [S_max, T] = get_ST_max(a_, b_);\n\tconst S_0 = 0.5;\n\tconst k = 1 - S_0 / S_max;\n\tconst L_v = 1 - (s * S_0) / (S_0 + T - T * k * s);\n\tconst C_v = (s * T * S_0) / (S_0 + T - T * k * s);\n\n\tconst L_vt = toe_inv(L_v);\n\tconst C_vt = (C_v * L_vt) / L_v;\n\tconst rgb_scale = convertOklabToLrgb({\n\t\tl: L_vt,\n\t\ta: a_ * C_vt,\n\t\tb: b_ * C_vt\n\t});\n\tconst scale_L = Math.cbrt(\n\t\t1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0)\n\t);\n\n\tconst L_new = toe_inv(v * L_v);\n\tconst C = (C_v * L_new) / L_v;\n\n\tret.l = L_new * scale_L;\n\tret.a = C * a_ * scale_L;\n\tret.b = C * b_ * scale_L;\n\n\treturn ret;\n}\n","import convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertOklabToOkhsv from './convertOklabToOkhsv.js';\nimport convertOkhsvToOklab from './convertOkhsvToOklab.js';\n\nimport modeHsv from '../hsv/definition.js';\n\nconst modeOkhsv = {\n\t...modeHsv,\n\tmode: 'okhsv',\n\tchannels: ['h', 's', 'v', 'alpha'],\n\tparse: ['--okhsv'],\n\tserialize: '--okhsv',\n\tfromMode: {\n\t\toklab: convertOklabToOkhsv,\n\t\trgb: c => convertOklabToOkhsv(convertRgbToOklab(c))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhsvToOklab,\n\t\trgb: c => convertOklabToRgb(convertOkhsvToOklab(c))\n\t}\n};\n\nexport default modeOkhsv;\n","import { Tok } from '../parse.js';\n\nfunction parseOklab(color, parsed) {\n\tif (!parsed || parsed[0] !== 'oklab') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'oklab' };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tres.l = Math.min(\n\t\t\tMath.max(0, l.type === Tok.Number ? l.value : l.value / 100),\n\t\t\t1\n\t\t);\n\t}\n\tif (a.type !== Tok.None) {\n\t\tres.a = a.type === Tok.Number ? a.value : (a.value * 0.4) / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value : (b.value * 0.4) / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseOklab;\n","import convertOklabToLrgb from './convertOklabToLrgb.js';\nimport convertLrgbToOklab from './convertLrgbToOklab.js';\nimport convertRgbToOklab from './convertRgbToOklab.js';\nimport convertOklabToRgb from './convertOklabToRgb.js';\nimport parseOklab from './parseOklab.js';\n\nimport lab from '../lab/definition.js';\n\n/*\n\tOklab, a perceptual color space for image processing by Björn Ottosson\n\tReference: https://bottosson.github.io/posts/oklab/\n */\n\nconst definition = {\n\t...lab,\n\tmode: 'oklab',\n\n\ttoMode: {\n\t\tlrgb: convertOklabToLrgb,\n\t\trgb: convertOklabToRgb\n\t},\n\n\tfromMode: {\n\t\tlrgb: convertLrgbToOklab,\n\t\trgb: convertRgbToOklab\n\t},\n\n\tranges: {\n\t\tl: [0, 1],\n\t\ta: [-0.4, 0.4],\n\t\tb: [-0.4, 0.4]\n\t},\n\n\tparse: [parseOklab],\n\tserialize: c =>\n\t\t`oklab(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.a !== undefined ? c.a : 'none'\n\t\t} ${c.b !== undefined ? c.b : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`\n};\n\nexport default definition;\n","import { Tok } from '../parse.js';\n\nfunction parseOklch(color, parsed) {\n\tif (!parsed || parsed[0] !== 'oklch') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'oklch' };\n\tconst [, l, c, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = Math.min(\n\t\t\tMath.max(0, l.type === Tok.Number ? l.value : l.value / 100),\n\t\t\t1\n\t\t);\n\t}\n\tif (c.type !== Tok.None) {\n\t\tres.c = Math.max(\n\t\t\t0,\n\t\t\tc.type === Tok.Number ? c.value : (c.value * 0.4) / 100\n\t\t);\n\t}\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseOklch;\n","import lch from '../lch/definition.js';\nimport convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport parseOklch from './parseOklch.js';\n\nconst definition = {\n\t...lch,\n\tmode: 'oklch',\n\n\ttoMode: {\n\t\toklab: c => convertLchToLab(c, 'oklab'),\n\t\trgb: c => convertOklabToRgb(convertLchToLab(c, 'oklab'))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToOklab(c), 'oklch'),\n\t\toklab: c => convertLabToLch(c, 'oklch')\n\t},\n\n\tparse: [parseOklch],\n\tserialize: c =>\n\t\t`oklch(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.c !== undefined ? c.c : 'none'\n\t\t} ${c.h !== undefined ? c.h : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tranges: {\n\t\tl: [0, 1],\n\t\tc: [0, 0.4],\n\t\th: [0, 360]\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert Display P3 values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertP3ToXyz65 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.486570948648216 * r +\n\t\t\t0.265667693169093 * g +\n\t\t\t0.1982172852343625 * b,\n\t\ty:\n\t\t\t0.2289745640697487 * r +\n\t\t\t0.6917385218365062 * g +\n\t\t\t0.079286914093745 * b,\n\t\tz: 0.0 * r + 0.0451133818589026 * g + 1.043944368900976 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertP3ToXyz65;\n","/*\n\tCIE XYZ D65 values to Display P3.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz65ToP3 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb(\n\t\t{\n\t\t\tr:\n\t\t\t\tx * 2.4934969119414263 -\n\t\t\t\ty * 0.9313836179191242 -\n\t\t\t\t0.402710784450717 * z,\n\t\t\tg:\n\t\t\t\tx * -0.8294889695615749 +\n\t\t\t\ty * 1.7626640603183465 +\n\t\t\t\t0.0236246858419436 * z,\n\t\t\tb:\n\t\t\t\tx * 0.0358458302437845 -\n\t\t\t\ty * 0.0761723892680418 +\n\t\t\t\t0.9568845240076871 * z\n\t\t},\n\t\t'p3'\n\t);\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToP3;\n","import rgb from '../rgb/definition.js';\nimport convertP3ToXyz65 from './convertP3ToXyz65.js';\nimport convertXyz65ToP3 from './convertXyz65ToP3.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'p3',\n\tparse: ['display-p3'],\n\tserialize: 'display-p3',\n\n\tfromMode: {\n\t\trgb: color => convertXyz65ToP3(convertRgbToXyz65(color)),\n\t\txyz65: convertXyz65ToP3\n\t},\n\n\ttoMode: {\n\t\trgb: color => convertXyz65ToRgb(convertP3ToXyz65(color)),\n\t\txyz65: convertP3ToXyz65\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert CIE XYZ D50 values to ProPhoto RGB\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst gamma = v => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 1 / 512) {\n\t\treturn Math.sign(v) * Math.pow(abs, 1 / 1.8);\n\t}\n\treturn 16 * v;\n};\n\nconst convertXyz50ToProphoto = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'prophoto',\n\t\tr: gamma(\n\t\t\tx * 1.3457868816471585 -\n\t\t\t\ty * 0.2555720873797946 -\n\t\t\t\t0.0511018649755453 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.5446307051249019 +\n\t\t\t\ty * 1.5082477428451466 +\n\t\t\t\t0.0205274474364214 * z\n\t\t),\n\t\tb: gamma(x * 0.0 + y * 0.0 + 1.2119675456389452 * z)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToProphoto;\n","/*\n\tConvert ProPhoto RGB values to CIE XYZ D50\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst linearize = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 16 / 512) {\n\t\treturn Math.sign(v) * Math.pow(abs, 1.8);\n\t}\n\treturn v / 16;\n};\n\nconst convertProphotoToXyz50 = prophoto => {\n\tlet r = linearize(prophoto.r);\n\tlet g = linearize(prophoto.g);\n\tlet b = linearize(prophoto.b);\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t0.7977666449006423 * r +\n\t\t\t0.1351812974005331 * g +\n\t\t\t0.0313477341283922 * b,\n\t\ty:\n\t\t\t0.2880748288194013 * r +\n\t\t\t0.7118352342418731 * g +\n\t\t\t0.0000899369387256 * b,\n\t\tz: 0 * r + 0 * g + 0.8251046025104602 * b\n\t};\n\tif (prophoto.alpha !== undefined) {\n\t\tres.alpha = prophoto.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertProphotoToXyz50;\n","import rgb from '../rgb/definition.js';\n\nimport convertXyz50ToProphoto from './convertXyz50ToProphoto.js';\nimport convertProphotoToXyz50 from './convertProphotoToXyz50.js';\n\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\n/*\n\tProPhoto RGB Color space\n\n\tReferences:\n\t\t* https://en.wikipedia.org/wiki/ProPhoto_RGB_color_space\n */\n\nconst definition = {\n\t...rgb,\n\tmode: 'prophoto',\n\tparse: ['prophoto-rgb'],\n\tserialize: 'prophoto-rgb',\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToProphoto,\n\t\trgb: color => convertXyz50ToProphoto(convertRgbToXyz50(color))\n\t},\n\n\ttoMode: {\n\t\txyz50: convertProphotoToXyz50,\n\t\trgb: color => convertXyz50ToRgb(convertProphotoToXyz50(color))\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert CIE XYZ D65 values to Rec. 2020\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.itu.int/rec/R-REC-BT.2020/en\n*/\n\nconst α = 1.09929682680944;\nconst β = 0.018053968510807;\nconst gamma = v => {\n\tconst abs = Math.abs(v);\n\tif (abs > β) {\n\t\treturn (Math.sign(v) || 1) * (α * Math.pow(abs, 0.45) - (α - 1));\n\t}\n\treturn 4.5 * v;\n};\n\nconst convertXyz65ToRec2020 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'rec2020',\n\t\tr: gamma(\n\t\t\tx * 1.7166511879712683 -\n\t\t\t\ty * 0.3556707837763925 -\n\t\t\t\t0.2533662813736599 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.6666843518324893 +\n\t\t\t\ty * 1.6164812366349395 +\n\t\t\t\t0.0157685458139111 * z\n\t\t),\n\t\tb: gamma(\n\t\t\tx * 0.0176398574453108 -\n\t\t\t\ty * 0.0427706132578085 +\n\t\t\t\t0.9421031212354739 * z\n\t\t)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToRec2020;\n","/*\n\tConvert Rec. 2020 values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.itu.int/rec/R-REC-BT.2020/en\n*/\n\nconst α = 1.09929682680944;\nconst β = 0.018053968510807;\n\nconst linearize = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs < β * 4.5) {\n\t\treturn v / 4.5;\n\t}\n\treturn (Math.sign(v) || 1) * Math.pow((abs + α - 1) / α, 1 / 0.45);\n};\n\nconst convertRec2020ToXyz65 = rec2020 => {\n\tlet r = linearize(rec2020.r);\n\tlet g = linearize(rec2020.g);\n\tlet b = linearize(rec2020.b);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.6369580483012911 * r +\n\t\t\t0.1446169035862083 * g +\n\t\t\t0.1688809751641721 * b,\n\t\ty:\n\t\t\t0.262700212011267 * r +\n\t\t\t0.6779980715188708 * g +\n\t\t\t0.059301716469862 * b,\n\t\tz: 0 * r + 0.0280726930490874 * g + 1.0609850577107909 * b\n\t};\n\tif (rec2020.alpha !== undefined) {\n\t\tres.alpha = rec2020.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRec2020ToXyz65;\n","import rgb from '../rgb/definition.js';\n\nimport convertXyz65ToRec2020 from './convertXyz65ToRec2020.js';\nimport convertRec2020ToXyz65 from './convertRec2020ToXyz65.js';\n\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'rec2020',\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToRec2020,\n\t\trgb: color => convertXyz65ToRec2020(convertRgbToXyz65(color))\n\t},\n\n\ttoMode: {\n\t\txyz65: convertRec2020ToXyz65,\n\t\trgb: color => convertXyz65ToRgb(convertRec2020ToXyz65(color))\n\t},\n\n\tparse: ['rec2020'],\n\tserialize: 'rec2020'\n};\n\nexport default definition;\n","export const bias = 0.00379307325527544933;\nexport const bias_cbrt = Math.cbrt(bias);\n","import convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\nimport { bias, bias_cbrt } from './constants.js';\n\nconst transfer = v => Math.cbrt(v) - bias_cbrt;\n\nconst convertRgbToXyb = color => {\n\tconst { r, g, b, alpha } = convertRgbToLrgb(color);\n\tconst l = transfer(0.3 * r + 0.622 * g + 0.078 * b + bias);\n\tconst m = transfer(0.23 * r + 0.692 * g + 0.078 * b + bias);\n\tconst s = transfer(\n\t\t0.24342268924547819 * r +\n\t\t\t0.20476744424496821 * g +\n\t\t\t0.5518098665095536 * b +\n\t\t\tbias\n\t);\n\tconst res = {\n\t\tmode: 'xyb',\n\t\tx: (l - m) / 2,\n\t\ty: (l + m) / 2,\n\t\t/* Apply default chroma from luma (subtract Y from B) */\n\t\tb: s - (l + m) / 2\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToXyb;\n","import convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\nimport { bias, bias_cbrt } from './constants.js';\n\nconst transfer = v => Math.pow(v + bias_cbrt, 3);\n\nconst convertXybToRgb = ({ x, y, b, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (b === undefined) b = 0;\n\tconst l = transfer(x + y) - bias;\n\tconst m = transfer(y - x) - bias;\n\t/* Account for chroma from luma: add Y back to B */\n\tconst s = transfer(b + y) - bias;\n\n\tconst res = convertLrgbToRgb({\n\t\tr:\n\t\t\t11.031566904639861 * l -\n\t\t\t9.866943908131562 * m -\n\t\t\t0.16462299650829934 * s,\n\t\tg:\n\t\t\t-3.2541473810744237 * l +\n\t\t\t4.418770377582723 * m -\n\t\t\t0.16462299650829934 * s,\n\t\tb:\n\t\t\t-3.6588512867136815 * l +\n\t\t\t2.7129230459360922 * m +\n\t\t\t1.9459282407775895 * s\n\t});\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertXybToRgb;\n","import { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport convertRgbToXyb from './convertRgbToXyb.js';\nimport convertXybToRgb from './convertXybToRgb.js';\n\n/*\n\tThe XYB color space, used in JPEG XL.\n\tReference: https://ds.jpeg.org/whitepapers/jpeg-xl-whitepaper.pdf\n*/\n\nconst definition = {\n\tmode: 'xyb',\n\tchannels: ['x', 'y', 'b', 'alpha'],\n\tparse: ['--xyb'],\n\tserialize: '--xyb',\n\n\ttoMode: {\n\t\trgb: convertXybToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyb\n\t},\n\n\tranges: {\n\t\tx: [-0.0154, 0.0281],\n\t\ty: [0, 0.8453],\n\t\tb: [-0.2778, 0.388]\n\t},\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","/*\n\tThe XYZ D50 color space\n\t-----------------------\n */\n\nimport convertXyz50ToRgb from './convertXyz50ToRgb.js';\nimport convertXyz50ToLab from '../lab/convertXyz50ToLab.js';\nimport convertRgbToXyz50 from './convertRgbToXyz50.js';\nimport convertLabToXyz50 from '../lab/convertLabToXyz50.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'xyz50',\n\tparse: ['xyz-d50'],\n\tserialize: 'xyz-d50',\n\n\ttoMode: {\n\t\trgb: convertXyz50ToRgb,\n\t\tlab: convertXyz50ToLab\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyz50,\n\t\tlab: convertLabToXyz50\n\t},\n\n\tchannels: ['x', 'y', 'z', 'alpha'],\n\n\tranges: {\n\t\tx: [0, 0.964],\n\t\ty: [0, 0.999],\n\t\tz: [0, 0.825]\n\t},\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","/*\n\tChromatic adaptation of CIE XYZ from D65 to D50 white point\n\tusing the Bradford method.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\t\n*/\n\nconst convertXyz65ToXyz50 = xyz65 => {\n\tlet { x, y, z, alpha } = xyz65;\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t1.0479298208405488 * x +\n\t\t\t0.0229467933410191 * y -\n\t\t\t0.0501922295431356 * z,\n\t\ty:\n\t\t\t0.0296278156881593 * x +\n\t\t\t0.990434484573249 * y -\n\t\t\t0.0170738250293851 * z,\n\t\tz:\n\t\t\t-0.0092430581525912 * x +\n\t\t\t0.0150551448965779 * y +\n\t\t\t0.7518742899580008 * z\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToXyz50;\n","/*\n\tChromatic adaptation of CIE XYZ from D50 to D65 white point\n\tusing the Bradford method.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\t\n*/\n\nconst convertXyz50ToXyz65 = xyz50 => {\n\tlet { x, y, z, alpha } = xyz50;\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.9554734527042182 * x -\n\t\t\t0.0230985368742614 * y +\n\t\t\t0.0632593086610217 * z,\n\t\ty:\n\t\t\t-0.0283697069632081 * x +\n\t\t\t1.0099954580058226 * y +\n\t\t\t0.021041398966943 * z,\n\t\tz:\n\t\t\t0.0123140016883199 * x -\n\t\t\t0.0205076964334779 * y +\n\t\t\t1.3303659366080753 * z\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToXyz65;\n","/*\n\tThe XYZ D65 color space\n\t-----------------------\n */\n\nimport convertXyz65ToRgb from './convertXyz65ToRgb.js';\nimport convertRgbToXyz65 from './convertRgbToXyz65.js';\n\nimport convertXyz65ToXyz50 from './convertXyz65ToXyz50.js';\nimport convertXyz50ToXyz65 from './convertXyz50ToXyz65.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'xyz65',\n\n\ttoMode: {\n\t\trgb: convertXyz65ToRgb,\n\t\txyz50: convertXyz65ToXyz50\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyz65,\n\t\txyz50: convertXyz50ToXyz65\n\t},\n\n\tranges: {\n\t\tx: [0, 0.95],\n\t\ty: [0, 1],\n\t\tz: [0, 1.088]\n\t},\n\n\tchannels: ['x', 'y', 'z', 'alpha'],\n\n\tparse: ['xyz', 'xyz-d65'],\n\tserialize: 'xyz-d65',\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","const convertRgbToYiq = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tconst res = {\n\t\tmode: 'yiq',\n\t\ty: 0.29889531 * r + 0.58662247 * g + 0.11448223 * b,\n\t\ti: 0.59597799 * r - 0.2741761 * g - 0.32180189 * b,\n\t\tq: 0.21147017 * r - 0.52261711 * g + 0.31114694 * b\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToYiq;\n","const convertYiqToRgb = ({ y, i, q, alpha }) => {\n\tif (y === undefined) y = 0;\n\tif (i === undefined) i = 0;\n\tif (q === undefined) q = 0;\n\tconst res = {\n\t\tmode: 'rgb',\n\t\tr: y + 0.95608445 * i + 0.6208885 * q,\n\t\tg: y - 0.27137664 * i - 0.6486059 * q,\n\t\tb: y - 1.10561724 * i + 1.70250126 * q\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertYiqToRgb;\n","import convertRgbToYiq from './convertRgbToYiq.js';\nimport convertYiqToRgb from './convertYiqToRgb.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\n/*\n\tYIQ Color Space\n\n\tReferences\n\t----------\n\n\tWikipedia:\n\t\thttps://en.wikipedia.org/wiki/YIQ\n\n\t\"Measuring perceived color difference using YIQ NTSC\n\ttransmission color space in mobile applications\"\n\t\t\n\t\tby Yuriy Kotsarenko, Fernando Ramos in:\n\t\tProgramación Matemática y Software (2010) \n\n\tAvailable at:\n\t\t\n\t\thttp://www.progmat.uaem.mx:8080/artVol2Num2/Articulo3Vol2Num2.pdf\n */\n\nconst definition = {\n\tmode: 'yiq',\n\n\ttoMode: {\n\t\trgb: convertYiqToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToYiq\n\t},\n\n\tchannels: ['y', 'i', 'q', 'alpha'],\n\n\tparse: ['--yiq'],\n\tserialize: '--yiq',\n\n\tranges: {\n\t\ti: [-0.595, 0.595],\n\t\tq: [-0.522, 0.522]\n\t},\n\n\tinterpolate: {\n\t\ty: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\tq: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","// From: https://github.com/d3/d3-format/issues/32\n\nconst r = (value, precision) =>\n\tMath.round(value * (precision = Math.pow(10, precision))) / precision;\n\nconst round =\n\t(precision = 4) =>\n\tvalue =>\n\t\ttypeof value === 'number' ? r(value, precision) : value;\n\nexport default round;\n","import converter from './converter.js';\nimport round from './round.js';\nimport prepare from './_prepare.js';\nimport { getMode } from './modes.js';\n\nlet twoDecimals = round(2);\n\nconst clamp = value => Math.max(0, Math.min(1, value || 0));\nconst fixup = value => Math.round(clamp(value) * 255);\n\nconst rgb = converter('rgb');\nconst hsl = converter('hsl');\n\nexport const serializeHex = color => {\n\tif (color === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet r = fixup(color.r);\n\tlet g = fixup(color.g);\n\tlet b = fixup(color.b);\n\n\treturn '#' + ((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice(1);\n};\n\nexport const serializeHex8 = color => {\n\tif (color === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet a = fixup(color.alpha !== undefined ? color.alpha : 1);\n\treturn serializeHex(color) + ((1 << 8) | a).toString(16).slice(1);\n};\n\nexport const serializeRgb = color => {\n\tif (color === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet r = fixup(color.r);\n\tlet g = fixup(color.g);\n\tlet b = fixup(color.b);\n\n\tif (color.alpha === undefined || color.alpha === 1) {\n\t\t// opaque color\n\t\treturn `rgb(${r}, ${g}, ${b})`;\n\t} else {\n\t\t// transparent color\n\t\treturn `rgba(${r}, ${g}, ${b}, ${twoDecimals(clamp(color.alpha))})`;\n\t}\n};\n\nexport const serializeHsl = color => {\n\tif (color === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst h = twoDecimals(color.h || 0);\n\tconst s = twoDecimals(clamp(color.s) * 100) + '%';\n\tconst l = twoDecimals(clamp(color.l) * 100) + '%';\n\n\tif (color.alpha === undefined || color.alpha === 1) {\n\t\t// opaque color\n\t\treturn `hsl(${h}, ${s}, ${l})`;\n\t} else {\n\t\t// transparent color\n\t\treturn `hsla(${h}, ${s}, ${l}, ${twoDecimals(clamp(color.alpha))})`;\n\t}\n};\n\nexport const formatCss = c => {\n\tconst color = prepare(c);\n\tif (!color) {\n\t\treturn undefined;\n\t}\n\tconst def = getMode(color.mode);\n\tif (!def.serialize || typeof def.serialize === 'string') {\n\t\tlet res = `color(${def.serialize || `--${color.mode}`} `;\n\t\tdef.channels.forEach((ch, i) => {\n\t\t\tif (ch !== 'alpha') {\n\t\t\t\tres +=\n\t\t\t\t\t(i ? ' ' : '') +\n\t\t\t\t\t(color[ch] !== undefined ? color[ch] : 'none');\n\t\t\t}\n\t\t});\n\t\tif (color.alpha !== undefined && color.alpha < 1) {\n\t\t\tres += ` / ${color.alpha}`;\n\t\t}\n\t\treturn res + ')';\n\t}\n\tif (typeof def.serialize === 'function') {\n\t\treturn def.serialize(color);\n\t}\n\treturn undefined;\n};\n\nexport const formatHex = c => serializeHex(rgb(c));\nexport const formatHex8 = c => serializeHex8(rgb(c));\nexport const formatRgb = c => serializeRgb(rgb(c));\nexport const formatHsl = c => serializeHsl(hsl(c));\n","/*\n\tColor blend modes, as defined in the \n\tCSS Compositing Level 4 spec\n\n\thttps://drafts.fxtf.org/compositing-2/\n\thttps://en.wikipedia.org/wiki/Blend_modes\n\thttps://en.wikipedia.org/wiki/Alpha_compositing\n\thttps://keithp.com/~keithp/porterduff/p253-porter.pdf\n */\n\nimport converter from './converter.js';\nimport { getMode } from './modes.js';\n\nconst BLENDS = {\n\tnormal: (b, s) => s,\n\tmultiply: (b, s) => b * s,\n\tscreen: (b, s) => b + s - b * s,\n\t'hard-light': (b, s) => (s < 0.5 ? b * 2 * s : 2 * s * (1 - b) - 1),\n\toverlay: (b, s) => (b < 0.5 ? s * 2 * b : 2 * b * (1 - s) - 1),\n\tdarken: (b, s) => Math.min(b, s),\n\tlighten: (b, s) => Math.max(b, s),\n\t'color-dodge': (b, s) =>\n\t\tb === 0 ? 0 : s === 1 ? 1 : Math.min(1, b / (1 - s)),\n\t'color-burn': (b, s) =>\n\t\tb === 1 ? 1 : s === 0 ? 0 : 1 - Math.min(1, (1 - b) / s),\n\t'soft-light': (b, s) =>\n\t\ts < 0.5\n\t\t\t? b - (1 - 2 * s) * b * (1 - b)\n\t\t\t: b +\n\t\t\t (2 * s - 1) *\n\t\t\t\t\t((b < 0.25 ? ((16 * b - 12) * b + 4) * b : Math.sqrt(b)) -\n\t\t\t\t\t\tb),\n\tdifference: (b, s) => Math.abs(b - s),\n\texclusion: (b, s) => b + s - 2 * b * s\n};\n\nconst blend = (colors, type = 'normal', mode = 'rgb') => {\n\tlet fn = typeof type === 'function' ? type : BLENDS[type];\n\n\tlet conv = converter(mode);\n\n\t// get mode channels\n\tlet channels = getMode(mode).channels;\n\n\t// convert all colors to the mode\n\t// and assume undefined alphas are 1\n\tlet converted = colors.map(c => {\n\t\tlet cc = conv(c);\n\t\tif (cc.alpha === undefined) {\n\t\t\tcc.alpha = 1;\n\t\t}\n\t\treturn cc;\n\t});\n\n\treturn converted.reduce((b, s) => {\n\t\tif (b === undefined) return s;\n\t\t// blend backdrop and source\n\t\tlet alpha = s.alpha + b.alpha * (1 - s.alpha);\n\t\treturn channels.reduce(\n\t\t\t(res, ch) => {\n\t\t\t\tif (ch !== 'alpha') {\n\t\t\t\t\tif (alpha === 0) {\n\t\t\t\t\t\tres[ch] = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tres[ch] =\n\t\t\t\t\t\t\ts.alpha * (1 - b.alpha) * s[ch] +\n\t\t\t\t\t\t\ts.alpha * b.alpha * fn(b[ch], s[ch]) +\n\t\t\t\t\t\t\t(1 - s.alpha) * b.alpha * b[ch];\n\t\t\t\t\t\t// TODO fix() assumes [0, 1] colors\n\t\t\t\t\t\t// and is only true for RGB / LRGB\n\t\t\t\t\t\tres[ch] = Math.max(0, Math.min(1, res[ch] / alpha));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn res;\n\t\t\t},\n\t\t\t{ mode, alpha }\n\t\t);\n\t});\n};\n\nexport default blend;\n","import { getMode } from './modes.js';\n\n/*\n\tGenerate a random number between `min` and `max`\n */\nconst rand = ([min, max]) => min + Math.random() * (max - min);\n\n/*\n\tConvert a constraints object to intervals.\n */\nconst to_intervals = constraints =>\n\tObject.keys(constraints).reduce((o, k) => {\n\t\tlet v = constraints[k];\n\t\to[k] = Array.isArray(v) ? v : [v, v];\n\t\treturn o;\n\t}, {});\n\n/*\n\tGenerate a random color.\n */\nconst random = (mode = 'rgb', constraints = {}) => {\n\tlet def = getMode(mode);\n\tlet limits = to_intervals(constraints);\n\treturn def.channels.reduce(\n\t\t(res, ch) => {\n\t\t\t// ignore alpha if not present in constraints\n\t\t\tif (limits.alpha || ch !== 'alpha') {\n\t\t\t\tres[ch] = rand(limits[ch] || def.ranges[ch]);\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t{ mode }\n\t);\n};\n\nexport default random;\n","import converter from './converter.js';\nimport prepare from './_prepare.js';\nimport { getMode } from './modes.js';\n\nconst mapper = (fn, mode = 'rgb', preserve_mode = false) => {\n\tlet channels = mode ? getMode(mode).channels : null;\n\tlet conv = mode ? converter(mode) : prepare;\n\treturn color => {\n\t\tlet conv_color = conv(color);\n\t\tif (!conv_color) {\n\t\t\treturn undefined;\n\t\t}\n\t\tlet res = (channels || getMode(conv_color.mode).channels).reduce(\n\t\t\t(res, ch) => {\n\t\t\t\tlet v = fn(conv_color[ch], ch, conv_color, mode);\n\t\t\t\tif (v !== undefined && !isNaN(v)) {\n\t\t\t\t\tres[ch] = v;\n\t\t\t\t}\n\t\t\t\treturn res;\n\t\t\t},\n\t\t\t{ mode: conv_color.mode }\n\t\t);\n\t\tif (!preserve_mode) {\n\t\t\treturn res;\n\t\t}\n\t\tlet prep = prepare(color);\n\t\tif (prep && prep.mode !== res.mode) {\n\t\t\treturn converter(prep.mode)(res);\n\t\t}\n\t\treturn res;\n\t};\n};\n\nconst mapAlphaMultiply = (v, ch, c) => {\n\tif (ch !== 'alpha') {\n\t\treturn (v || 0) * (c.alpha !== undefined ? c.alpha : 1);\n\t}\n\treturn v;\n};\n\nconst mapAlphaDivide = (v, ch, c) => {\n\tif (ch !== 'alpha' && c.alpha !== 0) {\n\t\treturn (v || 0) / (c.alpha !== undefined ? c.alpha : 1);\n\t}\n\treturn v;\n};\n\nconst mapTransferLinear =\n\t(slope = 1, intercept = 0) =>\n\t(v, ch) => {\n\t\tif (ch !== 'alpha') {\n\t\t\treturn v * slope + intercept;\n\t\t}\n\t\treturn v;\n\t};\n\nconst mapTransferGamma =\n\t(amplitude = 1, exponent = 1, offset = 0) =>\n\t(v, ch) => {\n\t\tif (ch !== 'alpha') {\n\t\t\treturn amplitude * Math.pow(v, exponent) + offset;\n\t\t}\n\t\treturn v;\n\t};\n\nexport {\n\tmapper,\n\tmapAlphaMultiply,\n\tmapAlphaDivide,\n\tmapTransferLinear,\n\tmapTransferGamma\n};\n","/*\n\tNormalize an array of color stop positions for a gradient\n\tbased on the rules defined in the CSS Images Module 4 spec:\n\n\t1. make the first position 0 and the last position 1 if missing\n\t2. sequences of unpositioned color stops should be spread out evenly\n\t3. no position can be smaller than any of the ones preceding it\n\t\n\tReference: https://drafts.csswg.org/css-images-4/#color-stop-fixup\n\n\tNote: this method does not make a defensive copy of the array\n\tit receives as argument. Instead, it adjusts the values in-place.\n */\nconst normalizePositions = arr => {\n\t// 1. fix up first/last position if missing\n\tif (arr[0] === undefined) {\n\t\tarr[0] = 0;\n\t}\n\tif (arr[arr.length - 1] === undefined) {\n\t\tarr[arr.length - 1] = 1;\n\t}\n\n\tlet i = 1;\n\tlet j;\n\tlet from_idx;\n\tlet from_pos;\n\tlet inc;\n\twhile (i < arr.length) {\n\t\t// 2. fill up undefined positions\n\t\tif (arr[i] === undefined) {\n\t\t\tfrom_idx = i;\n\t\t\tfrom_pos = arr[i - 1];\n\t\t\tj = i;\n\n\t\t\t// find end of `undefined` sequence...\n\t\t\twhile (arr[j] === undefined) j++;\n\n\t\t\t// ...and add evenly-spread positions\n\t\t\tinc = (arr[j] - from_pos) / (j - i + 1);\n\t\t\twhile (i < j) {\n\t\t\t\tarr[i] = from_pos + (i + 1 - from_idx) * inc;\n\t\t\t\ti++;\n\t\t\t}\n\t\t} else if (arr[i] < arr[i - 1]) {\n\t\t\t// 3. make positions increase\n\t\t\tarr[i] = arr[i - 1];\n\t\t}\n\t\ti++;\n\t}\n\treturn arr;\n};\n\nexport default normalizePositions;\n","// Color interpolation hint exponential function\nconst midpoint = (H = 0.5) => t =>\n\tH <= 0 ? 1 : H >= 1 ? 0 : Math.pow(t, Math.log(0.5) / Math.log(H));\n\nexport default midpoint;\n","import converter from '../converter.js';\nimport { getMode } from '../modes.js';\nimport normalizePositions from '../util/normalizePositions.js';\nimport easingMidpoint from '../easing/midpoint.js';\nimport { mapper, mapAlphaMultiply, mapAlphaDivide } from '../map.js';\n\nconst isfn = o => typeof o === 'function';\nconst isobj = o => o && typeof o === 'object';\nconst isnum = o => typeof o === 'number';\n\nconst interpolate_fn = (colors, mode = 'rgb', overrides, premap) => {\n\tlet def = getMode(mode);\n\tlet conv = converter(mode);\n\n\tlet conv_colors = [];\n\tlet positions = [];\n\tlet fns = {};\n\n\tcolors.forEach(val => {\n\t\tif (Array.isArray(val)) {\n\t\t\tconv_colors.push(conv(val[0]));\n\t\t\tpositions.push(val[1]);\n\t\t} else if (isnum(val) || isfn(val)) {\n\t\t\t// Color interpolation hint or easing function\n\t\t\tfns[positions.length] = val;\n\t\t} else {\n\t\t\tconv_colors.push(conv(val));\n\t\t\tpositions.push(undefined);\n\t\t}\n\t});\n\n\tnormalizePositions(positions);\n\n\t// override the default interpolators\n\t// from the color space definition with any custom ones\n\tlet fixed = def.channels.reduce((res, ch) => {\n\t\tlet ffn;\n\t\tif (isobj(overrides) && isobj(overrides[ch]) && overrides[ch].fixup) {\n\t\t\tffn = overrides[ch].fixup;\n\t\t} else if (isobj(def.interpolate[ch]) && def.interpolate[ch].fixup) {\n\t\t\tffn = def.interpolate[ch].fixup;\n\t\t} else {\n\t\t\tffn = v => v;\n\t\t}\n\t\tres[ch] = ffn(conv_colors.map(color => color[ch]));\n\t\treturn res;\n\t}, {});\n\n\tif (premap) {\n\t\tlet ccolors = conv_colors.map((color, idx) => {\n\t\t\treturn def.channels.reduce(\n\t\t\t\t(c, ch) => {\n\t\t\t\t\tc[ch] = fixed[ch][idx];\n\t\t\t\t\treturn c;\n\t\t\t\t},\n\t\t\t\t{ mode }\n\t\t\t);\n\t\t});\n\t\tfixed = def.channels.reduce((res, ch) => {\n\t\t\tres[ch] = ccolors.map(c => {\n\t\t\t\tlet v = premap(c[ch], ch, c, mode);\n\t\t\t\treturn isNaN(v) ? undefined : v;\n\t\t\t});\n\t\t\treturn res;\n\t\t}, {});\n\t}\n\n\tlet interpolators = def.channels.reduce((res, ch) => {\n\t\tlet ifn;\n\t\tif (isfn(overrides)) {\n\t\t\tifn = overrides;\n\t\t} else if (isobj(overrides) && isfn(overrides[ch])) {\n\t\t\tifn = overrides[ch];\n\t\t} else if (\n\t\t\tisobj(overrides) &&\n\t\t\tisobj(overrides[ch]) &&\n\t\t\toverrides[ch].use\n\t\t) {\n\t\t\tifn = overrides[ch].use;\n\t\t} else if (isfn(def.interpolate[ch])) {\n\t\t\tifn = def.interpolate[ch];\n\t\t} else if (isobj(def.interpolate[ch])) {\n\t\t\tifn = def.interpolate[ch].use;\n\t\t}\n\n\t\tres[ch] = ifn(fixed[ch]);\n\t\treturn res;\n\t}, {});\n\n\tlet n = conv_colors.length - 1;\n\n\treturn t => {\n\t\t// clamp t to the [0, 1] interval\n\t\tt = Math.min(Math.max(0, t), 1);\n\n\t\tif (t <= positions[0]) {\n\t\t\treturn conv_colors[0];\n\t\t}\n\n\t\tif (t > positions[n]) {\n\t\t\treturn conv_colors[n];\n\t\t}\n\n\t\t// Convert `t` from [0, 1] to `t0` between the appropriate two colors.\n\t\t// First, look for the two colors between which `t` is located.\n\t\t// Note: this can be optimized by searching for the index\n\t\t// through bisection instead of start-to-end.\n\t\tlet idx = 0;\n\t\twhile (positions[idx] < t) idx++;\n\t\tlet start = positions[idx - 1];\n\t\tlet delta = positions[idx] - start;\n\n\t\tlet P = (t - start) / delta;\n\n\t\t// use either the local easing, or the global easing, if any\n\t\tlet fn = fns[idx] || fns[0];\n\t\tif (fn !== undefined) {\n\t\t\tif (isnum(fn)) {\n\t\t\t\tfn = easingMidpoint((fn - start) / delta);\n\t\t\t}\n\t\t\tP = fn(P);\n\t\t}\n\n\t\tlet t0 = (idx - 1 + P) / n;\n\n\t\treturn def.channels.reduce(\n\t\t\t(res, channel) => {\n\t\t\t\tlet val = interpolators[channel](t0);\n\t\t\t\tif (val !== undefined) {\n\t\t\t\t\tres[channel] = val;\n\t\t\t\t}\n\t\t\t\treturn res;\n\t\t\t},\n\t\t\t{ mode }\n\t\t);\n\t};\n};\n\nconst interpolate = (colors, mode = 'rgb', overrides) =>\n\tinterpolate_fn(colors, mode, overrides);\n\nconst interpolateWith =\n\t(premap, postmap) =>\n\t(colors, mode = 'rgb', overrides) => {\n\t\tlet post = postmap ? mapper(postmap, mode) : undefined;\n\t\tlet it = interpolate_fn(colors, mode, overrides, premap);\n\t\treturn post ? t => post(it(t)) : it;\n\t};\n\nconst interpolateWithPremultipliedAlpha = interpolateWith(\n\tmapAlphaMultiply,\n\tmapAlphaDivide\n);\n\nexport { interpolate, interpolateWith, interpolateWithPremultipliedAlpha };\n","/*\n\tBasis spline\n\t------------\n\n\tGiven control points V0...Vn (our values)\n\n\t\tS0 = V0\n\t\t...\n\t\tSi = 1/6 * Vi-1 + 2/3 * Vi + 1/6 * Vi+1\n\t\t...\n\t\tSn = Vn\n\n\tThe Bézier curve has control points:\n\n\t\tBi = Si-1, 2/3 * Vi-1 + 1/3 * Vi, 1/3 * Vi-1 + 2/3 * Vi, Si\n\n\tWhich we can then factor into the Bezier's explicit form:\n\t\n\t\tB(t) = (1-t)^3 * P0 + 3 * (1-t)^2 * t * P1 + (1-t) * t^2 * P2 + t^3 * P3 \n\n */\nconst mod = (v, l) => (v + l) % l;\n\nconst bspline = (Vim2, Vim1, Vi, Vip1, t) => {\n\tlet t2 = t * t;\n\tlet t3 = t2 * t;\n\treturn (\n\t\t((1 - 3 * t + 3 * t2 - t3) * Vim2 +\n\t\t\t(4 - 6 * t2 + 3 * t3) * Vim1 +\n\t\t\t(1 + 3 * t + 3 * t2 - 3 * t3) * Vi +\n\t\t\tt3 * Vip1) /\n\t\t6\n\t);\n};\n\nexport const interpolatorSplineBasis = arr => t => {\n\tlet classes = arr.length - 1;\n\tlet i = t >= 1 ? classes - 1 : Math.max(0, Math.floor(t * classes));\n\treturn bspline(\n\t\ti > 0 ? arr[i - 1] : 2 * arr[i] - arr[i + 1],\n\t\tarr[i],\n\t\tarr[i + 1],\n\t\ti < classes - 1 ? arr[i + 2] : 2 * arr[i + 1] - arr[i],\n\t\t(t - i / classes) * classes\n\t);\n};\n\nexport const interpolatorSplineBasisClosed = arr => t => {\n\tconst classes = arr.length - 1;\n\tconst i = Math.floor(t * classes);\n\treturn bspline(\n\t\tarr[mod(i - 1, arr.length)],\n\t\tarr[mod(i, arr.length)],\n\t\tarr[mod(i + 1, arr.length)],\n\t\tarr[mod(i + 2, arr.length)],\n\t\t(t - i / classes) * classes\n\t);\n};\n","import {\n\tinterpolatorSplineBasisClosed,\n\tinterpolatorSplineBasis\n} from './splineBasis.js';\n\nconst solve = v => {\n\tlet i;\n\tlet n = v.length - 1;\n\tlet c = new Array(n);\n\tlet _v = new Array(n);\n\tlet sol = new Array(n);\n\n\tc[1] = 1 / 4;\n\t_v[1] = (6 * v[1] - v[0]) / 4;\n\n\tfor (i = 2; i < n; ++i) {\n\t\tc[i] = 1 / (4 - c[i - 1]);\n\t\t_v[i] = (6 * v[i] - (i == n - 1 ? v[n] : 0) - _v[i - 1]) * c[i];\n\t}\n\n\tsol[0] = v[0];\n\tsol[n] = v[n];\n\tif (n - 1 > 0) {\n\t\tsol[n - 1] = _v[n - 1];\n\t}\n\n\tfor (i = n - 2; i > 0; --i) {\n\t\tsol[i] = _v[i] - c[i] * sol[i + 1];\n\t}\n\n\treturn sol;\n};\n\nexport const interpolatorSplineNatural = arr =>\n\tinterpolatorSplineBasis(solve(arr));\nexport const interpolatorSplineNaturalClosed = arr =>\n\tinterpolatorSplineBasisClosed(solve(arr));\n","import { interpolatorLinear } from './linear.js';\n\n/* \n\tMonotone spline\n\t---------------\n\n\tBased on:\n\n\t\tSteffen, M.\n\t\t\"A simple method for monotonic interpolation in one dimension.\"\n\t\tin Astronomy and Astrophysics, Vol. 239, p. 443-450 (Nov. 1990),\n \tProvided by the SAO/NASA Astrophysics Data System.\n\n\t\thttps://ui.adsabs.harvard.edu/abs/1990A&A...239..443S\n\n\t(Reference thanks to `d3/d3-shape`)\n*/\n\nconst sgn = Math.sign;\nconst min = Math.min;\nconst abs = Math.abs;\n\nconst mono = arr => {\n\tlet n = arr.length - 1;\n\tlet s = [];\n\tlet p = [];\n\tlet yp = [];\n\tfor (let i = 0; i < n; i++) {\n\t\ts.push((arr[i + 1] - arr[i]) * n);\n\t\tp.push(i > 0 ? 0.5 * (arr[i + 1] - arr[i - 1]) * n : undefined);\n\t\typ.push(\n\t\t\ti > 0\n\t\t\t\t? (sgn(s[i - 1]) + sgn(s[i])) *\n\t\t\t\t\t\tmin(abs(s[i - 1]), abs(s[i]), 0.5 * abs(p[i]))\n\t\t\t\t: undefined\n\t\t);\n\t}\n\treturn [s, p, yp];\n};\n\nconst interpolator = (arr, yp, s) => {\n\tlet n = arr.length - 1;\n\tlet n2 = n * n;\n\treturn t => {\n\t\tlet i;\n\t\tif (t >= 1) {\n\t\t\ti = n - 1;\n\t\t} else {\n\t\t\ti = Math.max(0, Math.floor(t * n));\n\t\t}\n\t\tlet t1 = t - i / n;\n\t\tlet t2 = t1 * t1;\n\t\tlet t3 = t2 * t1;\n\t\treturn (\n\t\t\t(yp[i] + yp[i + 1] - 2 * s[i]) * n2 * t3 +\n\t\t\t(3 * s[i] - 2 * yp[i] - yp[i + 1]) * n * t2 +\n\t\t\typ[i] * t1 +\n\t\t\tarr[i]\n\t\t);\n\t};\n};\n\n/*\n\tA monotone spline which uses one-sided finite differences\n\tat the boundaries.\n */\nexport const interpolatorSplineMonotone = arr => {\n\tif (arr.length < 3) {\n\t\treturn interpolatorLinear(arr);\n\t}\n\tlet n = arr.length - 1;\n\tlet [s, , yp] = mono(arr);\n\typ[0] = s[0];\n\typ[n] = s[n - 1];\n\treturn interpolator(arr, yp, s);\n};\n\n/*\n\tThe clamped monotone spline derives the values of y' \n\tat the boundary points by tracing a parabola \n\tthrough the first/last three points.\n\n\tFor arrays of fewer than three values, we fall back to \n\tlinear interpolation.\n */\n\nexport const interpolatorSplineMonotone2 = arr => {\n\tif (arr.length < 3) {\n\t\treturn interpolatorLinear(arr);\n\t}\n\tlet n = arr.length - 1;\n\tlet [s, p, yp] = mono(arr);\n\tp[0] = (arr[1] * 2 - arr[0] * 1.5 - arr[2] * 0.5) * n;\n\tp[n] = (arr[n] * 1.5 - arr[n - 1] * 2 + arr[n - 2] * 0.5) * n;\n\typ[0] = p[0] * s[0] <= 0 ? 0 : abs(p[0]) > 2 * abs(s[0]) ? 2 * s[0] : p[0];\n\typ[n] =\n\t\tp[n] * s[n - 1] <= 0\n\t\t\t? 0\n\t\t\t: abs(p[n]) > 2 * abs(s[n - 1])\n\t\t\t? 2 * s[n - 1]\n\t\t\t: p[n];\n\treturn interpolator(arr, yp, s);\n};\n\n/*\n\tThe closed monotone spline considers \n\tthe array to be periodic:\n\n\tarr[-1] = arr[arr.length - 1]\n\tarr[arr.length] = arr[0]\n\n\t...and so on.\n */\nexport const interpolatorSplineMonotoneClosed = arr => {\n\tlet n = arr.length - 1;\n\tlet [s, p, yp] = mono(arr);\n\t// boundary conditions\n\tp[0] = 0.5 * (arr[1] - arr[n]) * n;\n\tp[n] = 0.5 * (arr[0] - arr[n - 1]) * n;\n\tlet s_m1 = (arr[0] - arr[n]) * n;\n\tlet s_n = s_m1;\n\typ[0] =\n\t\t(sgn(s_m1) + sgn(s[0])) * min(abs(s_m1), abs(s[0]), 0.5 * abs(p[0]));\n\typ[n] =\n\t\t(sgn(s[n - 1]) + sgn(s_n)) *\n\t\tmin(abs(s[n - 1]), abs(s_n), 0.5 * abs(p[n]));\n\treturn interpolator(arr, yp, s);\n};\n","const gamma = (γ = 1) => (γ === 1 ? t => t : t => Math.pow(t, γ));\n\nexport default gamma;\n","import gamma from './easing/gamma.js';\n\nconst samples = (n = 2, γ = 1) => {\n\tlet ease = gamma(γ);\n\tif (n < 2) {\n\t\treturn n < 1 ? [] : [ease(0.5)];\n\t}\n\tlet res = [];\n\tfor (let i = 0; i < n; i++) {\n\t\tres.push(ease(i / (n - 1)));\n\t}\n\treturn res;\n};\n\nexport default samples;\n","import converter from './converter.js';\nimport prepare from './_prepare.js';\nimport { getMode } from './modes.js';\nimport { differenceEuclidean } from './difference.js';\n\nconst rgb = converter('rgb');\nconst fixup_rgb = c => {\n\tconst res = {\n\t\tmode: c.mode,\n\t\tr: Math.max(0, Math.min(c.r !== undefined ? c.r : 0, 1)),\n\t\tg: Math.max(0, Math.min(c.g !== undefined ? c.g : 0, 1)),\n\t\tb: Math.max(0, Math.min(c.b !== undefined ? c.b : 0, 1))\n\t};\n\tif (c.alpha !== undefined) {\n\t\tres.alpha = c.alpha;\n\t}\n\treturn res;\n};\n\nconst to_displayable_srgb = c => fixup_rgb(rgb(c));\n\nconst inrange_rgb = c => {\n\treturn (\n\t\tc !== undefined &&\n\t\t(c.r === undefined || (c.r >= 0 && c.r <= 1)) &&\n\t\t(c.g === undefined || (c.g >= 0 && c.g <= 1)) &&\n\t\t(c.b === undefined || (c.b >= 0 && c.b <= 1))\n\t);\n};\n\n/*\n\tReturns whether the color is in the sRGB gamut.\n */\nexport function displayable(color) {\n\treturn inrange_rgb(rgb(color));\n}\n\n/*\n\tGiven a color space `mode`, returns a function\n\twith which to check whether a color is \n\tin that color space's gamut.\n */\nexport function inGamut(mode = 'rgb') {\n\tconst { gamut } = getMode(mode);\n\tif (!gamut) {\n\t\treturn color => true;\n\t}\n\tconst conv = converter(typeof gamut === 'string' ? gamut : mode);\n\treturn color => inrange_rgb(conv(color));\n}\n\n/*\n\tObtain a color that's in the sRGB gamut\n\tby converting it to sRGB and clipping the channel values\n\tso that they're within the [0, 1] range.\n\n\tThe result is returned in the color's original color space.\n */\nexport function clampRgb(color) {\n\tcolor = prepare(color);\n\n\t// if the color is undefined or displayable, return it directly\n\tif (color === undefined || displayable(color)) return color;\n\n\t// keep track of color's original mode\n\tlet conv = converter(color.mode);\n\n\treturn conv(to_displayable_srgb(color));\n}\n\n/*\n\tGiven the `mode` color space, returns a function\n\twith which to obtain a color that's in gamut for\n\tthe `mode` color space by clipping the channel values\n\tso that they fit in their respective ranges.\n\n\tIt's similar to `clampRgb`, but works for any \n\tbounded color space (RGB or not) for which \n\tany combination of in-range channel values\n\tproduces an in-gamut color.\n */\nexport function clampGamut(mode = 'rgb') {\n\tconst { gamut } = getMode(mode);\n\tif (!gamut) {\n\t\treturn color => prepare(color);\n\t}\n\tconst destMode = typeof gamut === 'string' ? gamut : mode;\n\tconst destConv = converter(destMode);\n\tconst inDestGamut = inGamut(destMode);\n\treturn color => {\n\t\tconst original = prepare(color);\n\t\tif (!original) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst converted = destConv(original);\n\t\tif (inDestGamut(converted)) {\n\t\t\treturn original;\n\t\t}\n\t\tconst clamped = fixup_rgb(converted);\n\t\tif (original.mode === clamped.mode) {\n\t\t\treturn clamped;\n\t\t}\n\t\treturn converter(original.mode)(clamped);\n\t};\n}\n\n/*\n\tObtain a color that’s in a RGB gamut (by default sRGB)\n\tby first converting it to `mode` and then finding \n\tthe greatest chroma value that fits the gamut.\n\n\tBy default, the CIELCh color space is used,\n\tbut any color that has a chroma component will do.\n\n\tThe result is returned in the color's original color space.\n */\nexport function clampChroma(color, mode = 'lch', rgbGamut = 'rgb') {\n\tcolor = prepare(color);\n\n\tlet inDestinationGamut =\n\t\trgbGamut === 'rgb' ? displayable : inGamut(rgbGamut);\n\tlet clipToGamut =\n\t\trgbGamut === 'rgb' ? to_displayable_srgb : clampGamut(rgbGamut);\n\n\t// if the color is undefined or displayable, return it directly\n\tif (color === undefined || inDestinationGamut(color)) return color;\n\n\t// keep track of color's original mode\n\tlet conv = converter(color.mode);\n\n\t// convert to the provided `mode` for clamping\n\tcolor = converter(mode)(color);\n\n\t// try with chroma = 0\n\tlet clamped = { ...color, c: 0 };\n\n\t// if not even chroma = 0 is displayable\n\t// fall back to RGB clamping\n\tif (!inDestinationGamut(clamped)) {\n\t\treturn conv(clipToGamut(clamped));\n\t}\n\n\t// By this time we know chroma = 0 is displayable and our current chroma is not.\n\t// Find the displayable chroma through the bisection method.\n\tlet start = 0;\n\tlet end = color.c !== undefined ? color.c : 0;\n\tlet range = getMode(mode).ranges.c;\n\tlet resolution = (range[1] - range[0]) / Math.pow(2, 13);\n\tlet _last_good_c = clamped.c;\n\n\twhile (end - start > resolution) {\n\t\tclamped.c = start + (end - start) * 0.5;\n\t\tif (inDestinationGamut(clamped)) {\n\t\t\t_last_good_c = clamped.c;\n\t\t\tstart = clamped.c;\n\t\t} else {\n\t\t\tend = clamped.c;\n\t\t}\n\t}\n\n\treturn conv(\n\t\tinDestinationGamut(clamped) ? clamped : { ...clamped, c: _last_good_c }\n\t);\n}\n\n/*\n\tObtain a color that's in the `dest` gamut,\n\tby first converting it to the `mode` color space\n\tand then finding the largest chroma that's in gamut,\n\tsimilar to `clampChroma`. \n\n\tThe color returned is in the `dest` color space.\n\n\tTo address the shortcomings of `clampChroma`, which can\n\tsometimes produce colors more desaturated than necessary,\n\tthe test used in the binary search is replaced with\n\t\"is color is roughly in gamut\", by comparing the candidate \n\tto the clipped version (obtained with `clampGamut`).\n\tThe test passes if the colors are not too dissimilar, \n\tjudged by the `delta` color difference function \n\tand an associated `jnd` just-noticeable difference value.\n\n\tThe default arguments for this function correspond to the\n\tgamut mapping algorithm defined in CSS Color Level 4:\n\thttps://drafts.csswg.org/css-color/#css-gamut-mapping\n\n\tTo disable the “roughly in gamut” part, pass either\n\t`null` for the `delta` parameter, or zero for `jnd`.\n */\nexport function toGamut(\n\tdest = 'rgb',\n\tmode = 'oklch',\n\tdelta = differenceEuclidean('oklch'),\n\tjnd = 0.02\n) {\n\tconst destConv = converter(dest);\n\tconst destMode = getMode(dest);\n\n\tif (!destMode.gamut) {\n\t\treturn color => destConv(color);\n\t}\n\n\tconst inDestinationGamut = inGamut(dest);\n\tconst clipToGamut = clampGamut(dest);\n\n\tconst ucs = converter(mode);\n\tconst { ranges } = getMode(mode);\n\n\tif (!ranges.l || !ranges.c) {\n\t\tthrow new Error('LCH-like space expected');\n\t}\n\n\treturn color => {\n\t\tcolor = prepare(color);\n\t\tif (color === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst candidate = { ...ucs(color) };\n\n\t\t// account for missing components\n\t\tif (candidate.l === undefined) candidate.l = 0;\n\t\tif (candidate.c === undefined) candidate.c = 0;\n\n\t\tif (candidate.l >= ranges.l[1]) {\n\t\t\tconst res = { ...destMode.white, mode: dest };\n\t\t\tif (color.alpha !== undefined) {\n\t\t\t\tres.alpha = color.alpha;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t\tif (candidate.l <= ranges.l[0]) {\n\t\t\tconst res = { ...destMode.black, mode: dest };\n\t\t\tif (color.alpha !== undefined) {\n\t\t\t\tres.alpha = color.alpha;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t\tif (inDestinationGamut(candidate)) {\n\t\t\treturn destConv(candidate);\n\t\t}\n\t\tlet start = 0;\n\t\tlet end = candidate.c;\n\t\tlet epsilon = (ranges.c[1] - ranges.c[0]) / 4000; // 0.0001 for oklch()\n\t\tlet clipped = clipToGamut(candidate);\n\t\twhile (end - start > epsilon) {\n\t\t\tcandidate.c = (start + end) * 0.5;\n\t\t\tclipped = clipToGamut(candidate);\n\t\t\tif (\n\t\t\t\tinDestinationGamut(candidate) ||\n\t\t\t\t(delta && jnd > 0 && delta(candidate, clipped) <= jnd)\n\t\t\t) {\n\t\t\t\tstart = candidate.c;\n\t\t\t} else {\n\t\t\t\tend = candidate.c;\n\t\t\t}\n\t\t}\n\t\treturn destConv(inDestinationGamut(candidate) ? candidate : clipped);\n\t};\n}\n","import { differenceEuclidean } from './difference.js';\n\n/*\n\tThis works linearly right now, but we might get better performance\n\twith a V-P Tree (Vantage Point Tree). \n\n\tReference:\n\t* http://pnylab.com/papers/vptree/main.html\n */\n\nconst nearest = (colors, metric = differenceEuclidean(), accessor = d => d) => {\n\tlet arr = colors.map((c, idx) => ({ color: accessor(c), i: idx }));\n\treturn (color, n = 1, τ = Infinity) => {\n\t\tif (isFinite(n)) {\n\t\t\tn = Math.max(1, Math.min(n, arr.length - 1));\n\t\t}\n\n\t\tarr.forEach(c => {\n\t\t\tc.d = metric(color, c.color);\n\t\t});\n\n\t\treturn arr\n\t\t\t.sort((a, b) => a.d - b.d)\n\t\t\t.slice(0, n)\n\t\t\t.filter(c => c.d < τ)\n\t\t\t.map(c => colors[c.i]);\n\t};\n};\n\nexport default nearest;\n","import { mapper, mapTransferLinear } from './map.js';\nimport converter from './converter.js';\nimport prepare from './_prepare.js';\nimport { getMode } from './modes.js';\n\nconst minzero = v => Math.max(v, 0);\nconst clamp = v => Math.max(Math.min(v, 1), 0);\nconst lerp = (a, b, t) =>\n\ta === undefined || b === undefined ? undefined : a + t * (b - a);\n\nconst matrixSepia = amount => {\n\tlet a = 1 - clamp(amount);\n\treturn [\n\t\t0.393 + 0.607 * a,\n\t\t0.769 - 0.769 * a,\n\t\t0.189 - 0.189 * a,\n\t\t0,\n\t\t0.349 - 0.349 * a,\n\t\t0.686 + 0.314 * a,\n\t\t0.168 - 0.168 * a,\n\t\t0,\n\t\t0.272 - 0.272 * a,\n\t\t0.534 - 0.534 * a,\n\t\t0.131 + 0.869 * a,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1\n\t];\n};\n\nconst matrixSaturate = sat => {\n\tlet s = minzero(sat);\n\treturn [\n\t\t0.213 + 0.787 * s,\n\t\t0.715 - 0.715 * s,\n\t\t0.072 - 0.072 * s,\n\t\t0,\n\t\t0.213 - 0.213 * s,\n\t\t0.715 + 0.285 * s,\n\t\t0.072 - 0.072 * s,\n\t\t0,\n\t\t0.213 - 0.213 * s,\n\t\t0.715 - 0.715 * s,\n\t\t0.072 + 0.928 * s,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1\n\t];\n};\n\nconst matrixGrayscale = amount => {\n\tlet a = 1 - clamp(amount);\n\treturn [\n\t\t0.2126 + 0.7874 * a,\n\t\t0.7152 - 0.7152 * a,\n\t\t0.0722 - 0.0722 * a,\n\t\t0,\n\t\t0.2126 - 0.2126 * a,\n\t\t0.7152 + 0.2848 * a,\n\t\t0.0722 - 0.0722 * a,\n\t\t0,\n\t\t0.2126 - 0.2126 * a,\n\t\t0.7152 - 0.7152 * a,\n\t\t0.0722 + 0.9278 * a,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1\n\t];\n};\n\nconst matrixHueRotate = degrees => {\n\tlet rad = (Math.PI * degrees) / 180;\n\tlet c = Math.cos(rad);\n\tlet s = Math.sin(rad);\n\treturn [\n\t\t0.213 + c * 0.787 - s * 0.213,\n\t\t0.715 - c * 0.715 - s * 0.715,\n\t\t0.072 - c * 0.072 + s * 0.928,\n\t\t0,\n\t\t0.213 - c * 0.213 + s * 0.143,\n\t\t0.715 + c * 0.285 + s * 0.14,\n\t\t0.072 - c * 0.072 - s * 0.283,\n\t\t0,\n\t\t0.213 - c * 0.213 - s * 0.787,\n\t\t0.715 - c * 0.715 + s * 0.715,\n\t\t0.072 + c * 0.928 + s * 0.072,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1\n\t];\n};\n\nconst matrix = (values, mode, preserve_mode = false) => {\n\tlet conv = converter(mode);\n\tlet channels = getMode(mode).channels;\n\treturn color => {\n\t\tlet c = conv(color);\n\t\tif (!c) {\n\t\t\treturn undefined;\n\t\t}\n\t\tlet res = { mode };\n\t\tlet ch;\n\t\tlet count = channels.length;\n\t\tfor (let i = 0; i < values.length; i++) {\n\t\t\tch = channels[Math.floor(i / count)];\n\t\t\tif (c[ch] === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tres[ch] =\n\t\t\t\t(res[ch] || 0) + values[i] * (c[channels[i % count]] || 0);\n\t\t}\n\t\tif (!preserve_mode) {\n\t\t\treturn res;\n\t\t}\n\t\tlet prep = prepare(color);\n\t\treturn prep && res.mode !== prep.mode ? converter(prep.mode)(res) : res;\n\t};\n};\n\nconst filterBrightness = (amt = 1, mode = 'rgb') => {\n\tlet a = minzero(amt);\n\treturn mapper(mapTransferLinear(a), mode, true);\n};\n\nconst filterContrast = (amt = 1, mode = 'rgb') => {\n\tlet a = minzero(amt);\n\treturn mapper(mapTransferLinear(a, (1 - a) / 2), mode, true);\n};\nconst filterSepia = (amt = 1, mode = 'rgb') =>\n\tmatrix(matrixSepia(amt), mode, true);\nconst filterSaturate = (amt = 1, mode = 'rgb') =>\n\tmatrix(matrixSaturate(amt), mode, true);\nconst filterGrayscale = (amt = 1, mode = 'rgb') =>\n\tmatrix(matrixGrayscale(amt), mode, true);\nconst filterInvert = (amt = 1, mode = 'rgb') => {\n\tlet a = clamp(amt);\n\treturn mapper(\n\t\t(v, ch) => (ch === 'alpha' ? v : lerp(a, 1 - a, v)),\n\t\tmode,\n\t\ttrue\n\t);\n};\nconst filterHueRotate = (deg = 0, mode = 'rgb') =>\n\tmatrix(matrixHueRotate(deg), mode, true);\n\nexport {\n\tfilterBrightness,\n\tfilterContrast,\n\tfilterSepia,\n\tfilterSaturate,\n\tfilterGrayscale,\n\tfilterInvert,\n\tfilterHueRotate\n};\n","import converter from './converter.js';\nimport prepare from './_prepare.js';\nimport { lerp } from './interpolate/lerp.js';\n\nlet rgb = converter('rgb');\n\n/*\n\tColor vision deficiency (CVD) simulation based on:\n\n\t\tG. M. Machado, M. M. Oliveira and L. A. F. Fernandes, \n\t\t\"A Physiologically-based Model for Simulation of Color Vision Deficiency\" \n\t\tin IEEE Transactions on Visualization and Computer Graphics, \n\t\tvol. 15, no. 6, pp. 1291-1298, Nov.-Dec. 2009, \n\t\tdoi: 10.1109/TVCG.2009.113.\n\n\tFunctions use precomputed matrices from:\n\n\t\thttps://www.inf.ufrgs.br/~oliveira/pubs_files/CVD_Simulation/CVD_Simulation.html\n\n\tVia the `colorspace` R package documentation:\n\n\t\thttp://colorspace.r-forge.r-project.org/reference/simulate_cvd.html\n */\n\nconst PROT = [\n\t[1.0, 0.0, -0.0, 0.0, 1.0, 0.0, -0.0, -0.0, 1.0],\n\t[\n\t\t0.856167, 0.182038, -0.038205, 0.029342, 0.955115, 0.015544, -0.00288,\n\t\t-0.001563, 1.004443\n\t],\n\t[\n\t\t0.734766, 0.334872, -0.069637, 0.05184, 0.919198, 0.028963, -0.004928,\n\t\t-0.004209, 1.009137\n\t],\n\t[\n\t\t0.630323, 0.465641, -0.095964, 0.069181, 0.890046, 0.040773, -0.006308,\n\t\t-0.007724, 1.014032\n\t],\n\t[\n\t\t0.539009, 0.579343, -0.118352, 0.082546, 0.866121, 0.051332, -0.007136,\n\t\t-0.011959, 1.019095\n\t],\n\t[\n\t\t0.458064, 0.679578, -0.137642, 0.092785, 0.846313, 0.060902, -0.007494,\n\t\t-0.016807, 1.024301\n\t],\n\t[\n\t\t0.38545, 0.769005, -0.154455, 0.100526, 0.829802, 0.069673, -0.007442,\n\t\t-0.02219, 1.029632\n\t],\n\t[\n\t\t0.319627, 0.849633, -0.169261, 0.106241, 0.815969, 0.07779, -0.007025,\n\t\t-0.028051, 1.035076\n\t],\n\t[\n\t\t0.259411, 0.923008, -0.18242, 0.110296, 0.80434, 0.085364, -0.006276,\n\t\t-0.034346, 1.040622\n\t],\n\t[\n\t\t0.203876, 0.990338, -0.194214, 0.112975, 0.794542, 0.092483, -0.005222,\n\t\t-0.041043, 1.046265\n\t],\n\t[\n\t\t0.152286, 1.052583, -0.204868, 0.114503, 0.786281, 0.099216, -0.003882,\n\t\t-0.048116, 1.051998\n\t]\n];\n\nconst DEUTER = [\n\t[1.0, 0.0, -0.0, 0.0, 1.0, 0.0, -0.0, -0.0, 1.0],\n\t[\n\t\t0.866435, 0.177704, -0.044139, 0.049567, 0.939063, 0.01137, -0.003453,\n\t\t0.007233, 0.99622\n\t],\n\t[\n\t\t0.760729, 0.319078, -0.079807, 0.090568, 0.889315, 0.020117, -0.006027,\n\t\t0.013325, 0.992702\n\t],\n\t[\n\t\t0.675425, 0.43385, -0.109275, 0.125303, 0.847755, 0.026942, -0.00795,\n\t\t0.018572, 0.989378\n\t],\n\t[\n\t\t0.605511, 0.52856, -0.134071, 0.155318, 0.812366, 0.032316, -0.009376,\n\t\t0.023176, 0.9862\n\t],\n\t[\n\t\t0.547494, 0.607765, -0.155259, 0.181692, 0.781742, 0.036566, -0.01041,\n\t\t0.027275, 0.983136\n\t],\n\t[\n\t\t0.498864, 0.674741, -0.173604, 0.205199, 0.754872, 0.039929, -0.011131,\n\t\t0.030969, 0.980162\n\t],\n\t[\n\t\t0.457771, 0.731899, -0.18967, 0.226409, 0.731012, 0.042579, -0.011595,\n\t\t0.034333, 0.977261\n\t],\n\t[\n\t\t0.422823, 0.781057, -0.203881, 0.245752, 0.709602, 0.044646, -0.011843,\n\t\t0.037423, 0.974421\n\t],\n\t[\n\t\t0.392952, 0.82361, -0.216562, 0.263559, 0.69021, 0.046232, -0.01191,\n\t\t0.040281, 0.97163\n\t],\n\t[\n\t\t0.367322, 0.860646, -0.227968, 0.280085, 0.672501, 0.047413, -0.01182,\n\t\t0.04294, 0.968881\n\t]\n];\n\nconst TRIT = [\n\t[1.0, 0.0, -0.0, 0.0, 1.0, 0.0, -0.0, -0.0, 1.0],\n\t[\n\t\t0.92667, 0.092514, -0.019184, 0.021191, 0.964503, 0.014306, 0.008437,\n\t\t0.054813, 0.93675\n\t],\n\t[\n\t\t0.89572, 0.13333, -0.02905, 0.029997, 0.9454, 0.024603, 0.013027,\n\t\t0.104707, 0.882266\n\t],\n\t[\n\t\t0.905871, 0.127791, -0.033662, 0.026856, 0.941251, 0.031893, 0.01341,\n\t\t0.148296, 0.838294\n\t],\n\t[\n\t\t0.948035, 0.08949, -0.037526, 0.014364, 0.946792, 0.038844, 0.010853,\n\t\t0.193991, 0.795156\n\t],\n\t[\n\t\t1.017277, 0.027029, -0.044306, -0.006113, 0.958479, 0.047634, 0.006379,\n\t\t0.248708, 0.744913\n\t],\n\t[\n\t\t1.104996, -0.046633, -0.058363, -0.032137, 0.971635, 0.060503, 0.001336,\n\t\t0.317922, 0.680742\n\t],\n\t[\n\t\t1.193214, -0.109812, -0.083402, -0.058496, 0.97941, 0.079086, -0.002346,\n\t\t0.403492, 0.598854\n\t],\n\t[\n\t\t1.257728, -0.139648, -0.118081, -0.078003, 0.975409, 0.102594,\n\t\t-0.003316, 0.501214, 0.502102\n\t],\n\t[\n\t\t1.278864, -0.125333, -0.153531, -0.084748, 0.957674, 0.127074,\n\t\t-0.000989, 0.601151, 0.399838\n\t],\n\t[\n\t\t1.255528, -0.076749, -0.178779, -0.078411, 0.930809, 0.147602, 0.004733,\n\t\t0.691367, 0.3039\n\t]\n];\n\nconst deficiency = (lut, t) => {\n\tlet tt = Math.max(0, Math.min(1, t));\n\tlet i = Math.round(tt / 0.1);\n\tlet w = Math.round(tt % 0.1);\n\tlet arr = lut[i];\n\tif (w > 0 && i < lut.length - 1) {\n\t\tlet arr_2 = lut[i + 1];\n\t\tarr = arr.map((v, idx) => lerp(arr[idx], arr_2[idx], w));\n\t}\n\treturn color => {\n\t\tlet c = prepare(color);\n\t\tif (c === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\tlet { r, g, b } = rgb(c);\n\t\tlet ret = {\n\t\t\tmode: 'rgb',\n\t\t\tr: arr[0] * r + arr[1] * g + arr[2] * b,\n\t\t\tg: arr[3] * r + arr[4] * g + arr[5] * b,\n\t\t\tb: arr[6] * r + arr[7] * g + arr[8] * b\n\t\t};\n\t\tif (c.alpha !== undefined) {\n\t\t\tret.alpha = c.alpha;\n\t\t}\n\t\treturn converter(c.mode)(ret);\n\t};\n};\n\nexport const filterDeficiencyProt = (severity = 1) =>\n\tdeficiency(PROT, severity);\nexport const filterDeficiencyDeuter = (severity = 1) =>\n\tdeficiency(DEUTER, severity);\nexport const filterDeficiencyTrit = (severity = 1) =>\n\tdeficiency(TRIT, severity);\n","/*\n\tSmoothstep easing function and its inverse\n\tReference: https://en.wikipedia.org/wiki/Smoothstep\n */\nconst easingSmoothstep = t => t * t * (3 - 2 * t);\nconst easingSmoothstepInverse = t => 0.5 - Math.sin(Math.asin(1 - 2 * t) / 3);\n\nexport { easingSmoothstep, easingSmoothstepInverse };\n","/*\n\tSmootherstep easing function proposed by K. Perlin\n\tReference: https://en.wikipedia.org/wiki/Smoothstep\n */\nconst smootherstep = t => t * t * t * (t * (t * 6 - 15) + 10);\n\nexport default smootherstep;\n","/* \n\tSinusoidal (cosine) in-out easing\n*/\nconst inOutSine = t => (1 - Math.cos(t * Math.PI)) / 2;\n\nexport default inOutSine;\n","import converter from './converter.js';\n\n/*\n\tWCAG luminance\n\tReferences: \n\n\thttps://en.wikipedia.org/wiki/Relative_luminance\n\thttps://github.com/w3c/wcag/issues/236#issuecomment-379526596\n */\nexport function luminance(color) {\n\tlet c = converter('lrgb')(color);\n\treturn 0.2126 * c.r + 0.7152 * c.g + 0.0722 * c.b;\n}\n\n/*\n\tWCAG contrast\n */\nexport function contrast(a, b) {\n\tlet L1 = luminance(a);\n\tlet L2 = luminance(b);\n\treturn (Math.max(L1, L2) + 0.05) / (Math.min(L1, L2) + 0.05);\n}\n","import { parse, formatHex, formatCss, converter, type Color } from 'culori';\nimport * as ColorLib from 'culori';\n\n// Re-export everything from culori\nexport { ColorLib };\n\n// Converters\nconst toRgb = converter('rgb');\nconst toHsl = converter('hsl');\n\n// Custom colors map for fallback/alias\nconst customColorMap: Record<string, string> = {\n V: '#555555',\n W: '#AAAAAA',\n v: '#000000',\n w: '#FFFFFF',\n\n R: '#AA0000',\n Y: '#FFAA00',\n G: '#00AA00',\n A: '#00AAAA',\n B: '#0000AA',\n P: '#AA00AA',\n\n r: '#FF5555',\n y: '#FFFF55',\n g: '#55FF55',\n a: '#55FFFF',\n b: '#5555FF',\n p: '#FF55FF',\n\n i: '#FfC0CB',\n};\n\n/**\n * 注册一个自定义颜色别名。\n * @param name 别名名称,例如 `abc`、`myColor`。\n * @param color 别名实际映射到的合法颜色字符串,例如 `#ff0000`、`red`。\n */\nexport function registerCustomColor(name: string, color: string) {\n customColorMap[name] = color;\n}\n\n/**\n * 智能解析颜色字符串。\n * 支持:\n * - 通过 culori 解析所有标准 CSS 颜色(名称、hex、rgb、hsl、oklch 等)。\n * - 不带 `#` 的十六进制字符串(如 `ff5555`、`abc`、`aabbccdd`)。\n * - 通过 `registerCustomColor` 注册的自定义别名。\n * - 已经是 `Color` 对象的输入(直接透传)。\n * \n * @param input 要解析的颜色字符串或 `Color` 对象。\n * @param fallback 解析失败时可选的兜底颜色字符串。\n * @returns 解析成功时返回 `Color` 对象,失败时返回 `undefined`。\n */\nexport function smartParse(input: string | Color | any, fallback?: string): Color | undefined {\n // If input is already a Color object (has 'mode'), return it directly\n if (typeof input === 'object' && input !== null && 'mode' in input) {\n return input as Color;\n }\n\n if (typeof input !== 'string') {\n return parse(input) || (fallback ? smartParse(fallback) : undefined);\n }\n\n // 1. Try parsing directly\n let parsed = parse(input);\n if (parsed) return parsed;\n\n // 2. Check custom map first (allow overriding standard logic if needed, or just aliases)\n // Actually, usually aliases handle \"abc\" which fails standard parse.\n if (customColorMap[input]) {\n parsed = parse(customColorMap[input]);\n if (parsed) return parsed;\n }\n\n // 3. Try hex without hash\n // Matches 3, 4, 6, or 8 hex characters\n if (/^([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(input)) {\n parsed = parse('#' + input);\n if (parsed) return parsed;\n }\n\n // 4. Fallback\n if (fallback) {\n return smartParse(fallback);\n }\n\n return undefined;\n}\n\n/**\n * 智能解析颜色并返回对应的 CSS 字符串。\n * 对 sRGB 颜色通常会输出 Hex,其它颜色空间可能输出 CSS 函数形式(如 oklch)。\n * @param input 颜色字符串或颜色对象。\n */\nexport function smartString(input: string | Color | any, fallback?: string): string | undefined {\n const parsed = smartParse(input, fallback);\n if (!parsed) return undefined;\n return formatCss(parsed);\n}\n\n/**\n * 智能判断一个颜色输入是否有效。\n * @param input 颜色字符串或颜色对象。\n */\nexport function isValidColor(input: string | Color | any): boolean {\n return !!smartParse(input);\n}\n\n/**\n * 计算颜色的亮度。\n * 使用 Rec. 601 亮度公式:`(R * 299 + G * 587 + B * 114) / 1000`。\n * 返回值范围通常在 0(黑)到 1(白)之间。\n * \n * @param input 要检测的颜色字符串或对象。\n * @returns 返回亮度值(0-1);如果颜色无效则返回 `0`。\n */\nexport function getBrightness(input: string | Color | any): number {\n const color = smartParse(input);\n if (!color) return 0;\n\n const rgb = toRgb(color);\n if (!rgb) return 0;\n\n // culori rgb channels are 0-1\n // Formula matches: (r*255 * 299 + ...) / 255000 => (r*299 + ...) / 1000\n const r = rgb.r ?? 0;\n const g = rgb.g ?? 0;\n const b = rgb.b ?? 0;\n\n return (r * 0.299) + (g * 0.587) + (b * 0.114);\n}\n\n/**\n * 将颜色转换为 RGBA 数组 `[r, g, b, a]`。\n * 其中 RGB 范围是 0-255,Alpha 范围是 0-1。\n * \n * @param input 要转换的颜色字符串或对象。\n * @returns 转换成功时返回 `[r, g, b, a]`,无效时返回 `undefined`。\n */\nexport function toRgbaArray(input: string | Color | any): [number, number, number, number] | undefined {\n const color = smartParse(input);\n if (!color) return undefined;\n\n const rgb = toRgb(color);\n if (!rgb) return undefined;\n\n return [\n Math.round((rgb.r ?? 0) * 255),\n Math.round((rgb.g ?? 0) * 255),\n Math.round((rgb.b ?? 0) * 255),\n rgb.alpha ?? 1\n ];\n}\n\n/**\n * 将颜色转换为 Hex 字符串。\n * @param input 颜色字符串或颜色对象。\n * @returns 成功时返回如 `#ff0000` 这样的字符串,失败时返回 `undefined`。\n */\nexport function toHexString(input: string | Color | any): string | undefined {\n const color = smartParse(input);\n if (!color) return undefined;\n return formatHex(color);\n}\n\n/**\n * 将颜色转换为 RGB/RGBA 字符串。\n * 为兼容性考虑,这里强制输出旧式逗号分隔语法:`rgb(r, g, b)` 或 `rgba(r, g, b, a)`。\n * \n * @param input 颜色字符串或颜色对象。\n * @returns 成功时返回 RGB/RGBA 字符串,失败时返回 `undefined`。\n */\nexport function toRgbString(input: string | Color | any): string | undefined {\n const arr = toRgbaArray(input);\n if (!arr) return undefined;\n\n const [r, g, b, a] = arr;\n if (a < 1) {\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n return `rgb(${r}, ${g}, ${b})`;\n}\n\n/**\n * 将颜色转换为 HSL/HSLA 字符串。\n * 这里强制输出旧式逗号分隔语法:`hsl(h, s%, l%)` 或 `hsla(h, s%, l%, a)`。\n * \n * @param input 颜色字符串或颜色对象。\n * @returns 成功时返回 HSL/HSLA 字符串,失败时返回 `undefined`。\n */\nexport function toHslString(input: string | Color | any): string | undefined {\n const color = smartParse(input);\n if (!color) return undefined;\n\n const hsl = toHsl(color);\n if (!hsl) return undefined;\n\n const h = Math.round(hsl.h ?? 0);\n const s = Math.round((hsl.s ?? 0) * 100);\n const l = Math.round((hsl.l ?? 0) * 100);\n const a = hsl.alpha ?? 1;\n\n if (a < 1) {\n return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n }\n return `hsl(${h}, ${s}%, ${l}%)`;\n}\n","export * from './x/Dozy'\nexport * from './x/Functions'\nexport * from './x/WebFunctions'\nexport * from './modules/Store'\nexport * from './modules/EnableScaler'\nexport * from './modules/XCode'\nexport * from './modules/RepoStore'\nexport * from './modules/Interface'\nexport * from './modules/gens/Gens'\nexport * from './modules/gens/GensDirectives'\nexport * from './modules/Color'\n\n// 第三方重库已拆到独立子入口,避免命名冲突并让 tree-shake / code-splitting 更干净:\n// lodash-es -> 'dozy/lodash' (含 l 命名空间)\n// axios -> 'dozy/axios'\n// crypto-js -> 'dozy/crypto'\n// browser-image-compression-> 'dozy/image'\n\nexport { nanoid, customAlphabet, urlAlphabet } from 'nanoid'\n\nexport const DOZY = '1.0.104'\n"]}
1
+ {"version":3,"sources":["../node_modules/fast-content-type-parse/index.js","../src/modules/Store.ts","../src/x/Functions.ts","../src/x/Dozy.ts","../node_modules/nanoid/url-alphabet/index.js","../node_modules/nanoid/index.browser.js","../src/x/WebFunctions.ts","../src/modules/EnableScaler.ts","../src/modules/XCode.ts","../node_modules/universal-user-agent/index.js","../node_modules/before-after-hook/lib/register.js","../node_modules/before-after-hook/lib/add.js","../node_modules/before-after-hook/lib/remove.js","../node_modules/before-after-hook/index.js","../node_modules/@octokit/endpoint/dist-bundle/index.js","../node_modules/@octokit/request/dist-bundle/index.js","../node_modules/json-with-bigint/json-with-bigint.js","../node_modules/@octokit/request-error/dist-src/index.js","../node_modules/@octokit/graphql/dist-bundle/index.js","../node_modules/@octokit/auth-token/dist-bundle/index.js","../node_modules/@octokit/core/dist-src/version.js","../node_modules/@octokit/core/dist-src/index.js","../src/modules/RepoStore.ts","../src/modules/InterTypes/InterType.ts","../src/modules/gens/GensDirectives.ts","../src/modules/gens/GensStyleIds.ts","../src/modules/gens/Gens.ts","../node_modules/culori/src/index.js","../node_modules/culori/src/rgb/parseNumber.js","../node_modules/culori/src/colors/named.js","../node_modules/culori/src/rgb/parseNamed.js","../node_modules/culori/src/rgb/parseHex.js","../node_modules/culori/src/util/regex.js","../node_modules/culori/src/rgb/parseRgbLegacy.js","../node_modules/culori/src/_prepare.js","../node_modules/culori/src/converter.js","../node_modules/culori/src/modes.js","../node_modules/culori/src/parse.js","../node_modules/culori/src/rgb/parseRgb.js","../node_modules/culori/src/rgb/parseTransparent.js","../node_modules/culori/src/interpolate/lerp.js","../node_modules/culori/src/interpolate/piecewise.js","../node_modules/culori/src/interpolate/linear.js","../node_modules/culori/src/fixup/alpha.js","../node_modules/culori/src/rgb/definition.js","../node_modules/culori/src/a98/convertA98ToXyz65.js","../node_modules/culori/src/a98/convertXyz65ToA98.js","../node_modules/culori/src/lrgb/convertRgbToLrgb.js","../node_modules/culori/src/xyz65/convertRgbToXyz65.js","../node_modules/culori/src/lrgb/convertLrgbToRgb.js","../node_modules/culori/src/xyz65/convertXyz65ToRgb.js","../node_modules/culori/src/a98/definition.js","../node_modules/culori/src/util/normalizeHue.js","../node_modules/culori/src/fixup/hue.js","../node_modules/culori/src/cubehelix/constants.js","../node_modules/culori/src/cubehelix/convertRgbToCubehelix.js","../node_modules/culori/src/cubehelix/convertCubehelixToRgb.js","../node_modules/culori/src/difference.js","../node_modules/culori/src/average.js","../node_modules/culori/src/cubehelix/definition.js","../node_modules/culori/src/lch/convertLabToLch.js","../node_modules/culori/src/lch/convertLchToLab.js","../node_modules/culori/src/xyz65/constants.js","../node_modules/culori/src/constants.js","../node_modules/culori/src/lab65/convertLab65ToXyz65.js","../node_modules/culori/src/lab65/convertLab65ToRgb.js","../node_modules/culori/src/lab65/convertXyz65ToLab65.js","../node_modules/culori/src/lab65/convertRgbToLab65.js","../node_modules/culori/src/dlch/constants.js","../node_modules/culori/src/dlch/convertDlchToLab65.js","../node_modules/culori/src/dlch/convertLab65ToDlch.js","../node_modules/culori/src/dlab/definition.js","../node_modules/culori/src/dlch/definition.js","../node_modules/culori/src/hsi/convertHsiToRgb.js","../node_modules/culori/src/hsi/convertRgbToHsi.js","../node_modules/culori/src/hsi/definition.js","../node_modules/culori/src/hsl/convertHslToRgb.js","../node_modules/culori/src/hsl/convertRgbToHsl.js","../node_modules/culori/src/util/hue.js","../node_modules/culori/src/hsl/parseHslLegacy.js","../node_modules/culori/src/hsl/parseHsl.js","../node_modules/culori/src/hsl/definition.js","../node_modules/culori/src/hsv/convertHsvToRgb.js","../node_modules/culori/src/hsv/convertRgbToHsv.js","../node_modules/culori/src/hsv/definition.js","../node_modules/culori/src/hwb/convertHwbToRgb.js","../node_modules/culori/src/hwb/convertRgbToHwb.js","../node_modules/culori/src/hwb/parseHwb.js","../node_modules/culori/src/hwb/definition.js","../node_modules/culori/src/hdr/constants.js","../node_modules/culori/src/hdr/transfer.js","../node_modules/culori/src/itp/convertItpToXyz65.js","../node_modules/culori/src/itp/convertXyz65ToItp.js","../node_modules/culori/src/itp/definition.js","../node_modules/culori/src/jab/convertXyz65ToJab.js","../node_modules/culori/src/jab/convertJabToXyz65.js","../node_modules/culori/src/jab/convertRgbToJab.js","../node_modules/culori/src/jab/convertJabToRgb.js","../node_modules/culori/src/jab/definition.js","../node_modules/culori/src/jch/convertJabToJch.js","../node_modules/culori/src/jch/convertJchToJab.js","../node_modules/culori/src/jch/definition.js","../node_modules/culori/src/xyz50/constants.js","../node_modules/culori/src/lab/convertLabToXyz50.js","../node_modules/culori/src/xyz50/convertXyz50ToRgb.js","../node_modules/culori/src/lab/convertLabToRgb.js","../node_modules/culori/src/xyz50/convertRgbToXyz50.js","../node_modules/culori/src/lab/convertXyz50ToLab.js","../node_modules/culori/src/lab/convertRgbToLab.js","../node_modules/culori/src/lab/parseLab.js","../node_modules/culori/src/lab/definition.js","../node_modules/culori/src/lab65/definition.js","../node_modules/culori/src/lch/parseLch.js","../node_modules/culori/src/lch/definition.js","../node_modules/culori/src/lch65/definition.js","../node_modules/culori/src/lchuv/convertLuvToLchuv.js","../node_modules/culori/src/lchuv/convertLchuvToLuv.js","../node_modules/culori/src/luv/convertXyz50ToLuv.js","../node_modules/culori/src/luv/convertLuvToXyz50.js","../node_modules/culori/src/lchuv/definition.js","../node_modules/culori/src/lrgb/definition.js","../node_modules/culori/src/luv/definition.js","../node_modules/culori/src/oklab/convertLrgbToOklab.js","../node_modules/culori/src/oklab/convertRgbToOklab.js","../node_modules/culori/src/oklab/convertOklabToLrgb.js","../node_modules/culori/src/oklab/convertOklabToRgb.js","../node_modules/culori/src/okhsl/helpers.js","../node_modules/culori/src/okhsl/convertOklabToOkhsl.js","../node_modules/culori/src/okhsl/convertOkhslToOklab.js","../node_modules/culori/src/okhsl/modeOkhsl.js","../node_modules/culori/src/okhsv/convertOklabToOkhsv.js","../node_modules/culori/src/okhsv/convertOkhsvToOklab.js","../node_modules/culori/src/okhsv/modeOkhsv.js","../node_modules/culori/src/oklab/parseOklab.js","../node_modules/culori/src/oklab/definition.js","../node_modules/culori/src/oklch/parseOklch.js","../node_modules/culori/src/oklch/definition.js","../node_modules/culori/src/p3/convertP3ToXyz65.js","../node_modules/culori/src/p3/convertXyz65ToP3.js","../node_modules/culori/src/p3/definition.js","../node_modules/culori/src/prophoto/convertXyz50ToProphoto.js","../node_modules/culori/src/prophoto/convertProphotoToXyz50.js","../node_modules/culori/src/prophoto/definition.js","../node_modules/culori/src/rec2020/convertXyz65ToRec2020.js","../node_modules/culori/src/rec2020/convertRec2020ToXyz65.js","../node_modules/culori/src/rec2020/definition.js","../node_modules/culori/src/xyb/constants.js","../node_modules/culori/src/xyb/convertRgbToXyb.js","../node_modules/culori/src/xyb/convertXybToRgb.js","../node_modules/culori/src/xyb/definition.js","../node_modules/culori/src/xyz50/definition.js","../node_modules/culori/src/xyz65/convertXyz65ToXyz50.js","../node_modules/culori/src/xyz65/convertXyz50ToXyz65.js","../node_modules/culori/src/xyz65/definition.js","../node_modules/culori/src/yiq/convertRgbToYiq.js","../node_modules/culori/src/yiq/convertYiqToRgb.js","../node_modules/culori/src/yiq/definition.js","../node_modules/culori/src/round.js","../node_modules/culori/src/formatter.js","../node_modules/culori/src/blend.js","../node_modules/culori/src/random.js","../node_modules/culori/src/map.js","../node_modules/culori/src/util/normalizePositions.js","../node_modules/culori/src/easing/midpoint.js","../node_modules/culori/src/interpolate/interpolate.js","../node_modules/culori/src/interpolate/splineBasis.js","../node_modules/culori/src/interpolate/splineNatural.js","../node_modules/culori/src/interpolate/splineMonotone.js","../node_modules/culori/src/easing/gamma.js","../node_modules/culori/src/samples.js","../node_modules/culori/src/clamp.js","../node_modules/culori/src/nearest.js","../node_modules/culori/src/filter.js","../node_modules/culori/src/deficiency.js","../node_modules/culori/src/easing/smoothstep.js","../node_modules/culori/src/easing/smootherstep.js","../node_modules/culori/src/easing/inOutSine.js","../node_modules/culori/src/wcag.js","../src/modules/Color.ts","../src/index.ts"],"names":["exports","NullObject","parse","safeParse","s","min","M","e","f","c","r","p","num","abs","k","scaler","name","method","hook","value","text","digits","VERSION","isPlainObject","fetch","withDefaults","request","endpoint","noop","auth","hsl","definition_default","rgb","definition","interpolator","a98","fn","hue","lab","sum","val","f2","hsv","vn","d0","u_fn","v_fn","un","lchuv","luv","k2","k3","C1","r2","b","b2","gamma","linearize","prophoto","α","β","rec2020","transfer","xyz65","xyz50","random","res","isfn","clamp","lerp"],"mappings":"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","file":"index.js","sourcesContent":["'use strict'\n\nconst NullObject = function NullObject () { }\nNullObject.prototype = Object.create(null)\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nconst paramRE = /; *([!#$%&'*+.^\\w`|~-]+)=(\"(?:[\\v\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\v\\u0020-\\u00ff])*\"|[!#$%&'*+.^\\w`|~-]+) */gu\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nconst quotedPairRE = /\\\\([\\v\\u0020-\\u00ff])/gu\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nconst mediaTypeRE = /^[!#$%&'*+.^\\w|~-]+\\/[!#$%&'*+.^\\w|~-]+$/u\n\n// default ContentType to prevent repeated object creation\nconst defaultContentType = { type: '', parameters: new NullObject() }\nObject.freeze(defaultContentType.parameters)\nObject.freeze(defaultContentType)\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} header\n * @return {Object}\n * @public\n */\n\nfunction parse (header) {\n if (typeof header !== 'string') {\n throw new TypeError('argument header is required and must be a string')\n }\n\n let index = header.indexOf(';')\n const type = index !== -1\n ? header.slice(0, index).trim()\n : header.trim()\n\n if (mediaTypeRE.test(type) === false) {\n throw new TypeError('invalid media type')\n }\n\n const result = {\n type: type.toLowerCase(),\n parameters: new NullObject()\n }\n\n // parse parameters\n if (index === -1) {\n return result\n }\n\n let key\n let match\n let value\n\n paramRE.lastIndex = index\n\n while ((match = paramRE.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .slice(1, value.length - 1)\n\n quotedPairRE.test(value) && (value = value.replace(quotedPairRE, '$1'))\n }\n\n result.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n\n return result\n}\n\nfunction safeParse (header) {\n if (typeof header !== 'string') {\n return defaultContentType\n }\n\n let index = header.indexOf(';')\n const type = index !== -1\n ? header.slice(0, index).trim()\n : header.trim()\n\n if (mediaTypeRE.test(type) === false) {\n return defaultContentType\n }\n\n const result = {\n type: type.toLowerCase(),\n parameters: new NullObject()\n }\n\n // parse parameters\n if (index === -1) {\n return result\n }\n\n let key\n let match\n let value\n\n paramRE.lastIndex = index\n\n while ((match = paramRE.exec(header))) {\n if (match.index !== index) {\n return defaultContentType\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .slice(1, value.length - 1)\n\n quotedPairRE.test(value) && (value = value.replace(quotedPairRE, '$1'))\n }\n\n result.parameters[key] = value\n }\n\n if (index !== header.length) {\n return defaultContentType\n }\n\n return result\n}\n\nmodule.exports.default = { parse, safeParse }\nmodule.exports.parse = parse\nmodule.exports.safeParse = safeParse\nmodule.exports.defaultContentType = defaultContentType\n","// --- JSON ---\nexport const $jsonParse = JSON.parse\nexport const $jsonStringify = JSON.stringify\n\n// --- Object ---\nexport const $keys = Object.keys as <T extends object>(obj: T) => (keyof T & string)[]\nexport const $entries = Object.entries as <T extends object>(\n\tobj: T,\n) => [keyof T & string, T[keyof T]][]\nexport const $values = Object.values\nexport const $assign = Object.assign\nexport const $defineProperty = Object.defineProperty\nexport const $freeze = Object.freeze\nexport const $is = Object.is\n\n// --- Array ---\nexport const $arrayFrom = Array.from\nexport const $arrayIsArray = Array.isArray\n\n// --- String ---\nexport const $stringFromCharCode = String.fromCharCode\nexport const $stringFromCodePoint = String.fromCodePoint\n\n// --- Number ---\nexport const $numberIsNaN = Number.isNaN\nexport const $numberIsFinite = Number.isFinite\n\n// --- Math ---\nexport const $math = Math\n\n// --- Date ---\nexport const $now = Date.now\nexport const $date = Date\n\n// --- Promise ---\nexport const $promise = Promise\n\n// --- URL / URLSearchParams ---\nexport const $URL = URL\nexport const $URLSearchParams = URLSearchParams\n\n// --- StructuredClone ---\nexport const $clone = globalThis.structuredClone\n\n// --- DOM(仅在浏览器中存在)---\nexport const $window = typeof window === 'undefined' ? undefined : window\nexport const $document = typeof document === 'undefined' ? undefined : document\nexport const $location = typeof window === 'undefined' ? undefined : window.location\nexport const $open = typeof window === 'undefined' ? undefined : window.open\nexport const $setTimeout = typeof window === 'undefined' ? undefined : window.setTimeout\nexport const $clearTimeout = typeof window === 'undefined' ? undefined : window.clearTimeout\nexport const $setInterval = typeof window === 'undefined' ? undefined : window.setInterval\nexport const $clearInterval = typeof window === 'undefined' ? undefined : window.clearInterval\n\n// --- Fetch / Headers / Request / Response ---\nexport const $fetch = typeof fetch === 'undefined' ? undefined : fetch\nexport const $Headers = typeof Headers === 'undefined' ? undefined : Headers\nexport const $Request = typeof Request === 'undefined' ? undefined : Request\nexport const $Response = typeof Response === 'undefined' ? undefined : Response\n\n// --- Console ---\n\n/**\n * 输出一个值到控制台,并原样返回该值。\n *\n * 适合在表达式链中做内联调试。\n *\n * @typeParam T 第一个参数的类型。\n * @param a 主要输出值,同时也是返回值。\n * @param x 其余会继续传给 `console.log` 的附加参数。\n * @returns 原样返回传入的 `a`。\n */\nexport const $log = <T>(a?: T, ...x: any[]) => {\n\tconsole.log(a, ...x) // Allow user to override console.log\n\treturn a\n}\n\n// --- Crypto ---\nexport const $crypto = typeof crypto === 'undefined' ? undefined : crypto\n","import { AxiosError } from 'axios'\nimport { $keys, $jsonParse, $jsonStringify } from '../modules/Store'\nimport { Any, Null } from '../modules/InterTypes/InterType'\n\n/**\n * 判断一个值是否为非 `null` 的对象。\n *\n * @param value 要检测的值。\n * @returns 当值是对象且不为 `null` 时返回 `true`,否则返回 `false`。\n */\nexport function $isObject(value: unknown): value is Record<string, unknown> {\n\treturn value !== null && typeof value === 'object'\n}\n\n/**\n * 使用当前运行环境中可用的最佳方式深拷贝一个值。\n *\n * 行为说明:\n * - 优先使用 `structuredClone`。\n * - 不可用时回退到 `JSON.stringify` / `JSON.parse`。\n * - JSON 方案会丢失函数、`undefined`、循环引用以及部分类实例信息。\n *\n * @typeParam T 输入与返回值的类型。\n * @param value 源值。\n * @returns 返回深拷贝后的结果,但具体保真度取决于底层拷贝方案。\n */\nexport function $deepClone<T>(value: T): T {\n\tif (typeof structuredClone === 'function') {\n\t\t// @ts-ignore -- structuredClone exists in modern runtimes\n\t\treturn structuredClone(value)\n\t}\n\treturn JSON.parse(JSON.stringify(value))\n}\n// export function debounce<T extends (...args: any[]) => any>(fn: T, wait = 200) {\n// \tlet timer: ReturnType<typeof setTimeout> | null = null\n// \treturn function (...args: Parameters<T>) {\n// \t\tif (timer) clearTimeout(timer)\n// \t\ttimer = setTimeout(() => fn(...args), wait)\n// \t} as (...args: Parameters<T>) => void\n// }\n// export function throttle<T extends (...args: any[]) => any>(fn: T, limit = 200) {\n\n/**\n * 将字符串首字母转为大写。\n *\n * @param s 输入字符串。\n * @returns 如果输入为空则原样返回;否则返回首字符大写后的字符串。\n */\n// \tlet inThrottle = false\n// \treturn function (...args: Parameters<T>) {\n// \t\tif (!inThrottle) {\n// \t\t\tfn(...args)\n// \t\t\tinThrottle = true\n// \t\t\tsetTimeout(() => (inThrottle = false), limit)\n// \t\t}\n// \t} as (...args: Parameters<T>) => void\n// }\nexport function $capitalize(s: string) {\n\tif (!s) return s\n\treturn s.charAt(0).toUpperCase() + s.slice(1)\n}\n\n/**\n * 将数字限制在闭区间 `[min, max]` 内。\n *\n * @param n 输入数字。\n * @param min 最小值。\n * @param max 最大值。\n * @returns 小于最小值时返回 `min`,大于最大值时返回 `max`,否则返回原值。\n */\nexport function $clamp(n: number, min: number, max: number) {\n\treturn Math.min(max, Math.max(min, n))\n}\n\n/**\n * 将一个对象中的配置项合并到目标对象中。\n *\n * 行为说明:\n * - 如果 `obj` 不存在,则直接返回 `thiz`。\n * - 当源字段和目标字段都是对象时,会尝试调用目标上的 `$loadOpt` 继续递归合并。\n * - 否则直接覆盖赋值。\n *\n * @param thiz 目标对象,会被原地修改。\n * @param obj 可选的源对象。\n * @returns 返回被修改后的目标对象 `thiz`。\n */\nexport function $loadOpt(thiz: Object, obj?: Object): any {\n\tif (!obj) return thiz\n\tlet ks = $keys(obj)\n\tfor (const it of ks) {\n\t\tlet x = (<any>obj)[it]\n\t\tlet w = (<any>thiz)[it]\n\t\tif (x instanceof Object && w instanceof Object) w.$loadOpt(x)\n\t\telse {\n\t\t\tlet zhis = <any>thiz\n\t\t\tzhis[it] = x\n\t\t}\n\t}\n\treturn thiz\n}\n\n/**\n * 抛出一个带指定消息的 `Error`。\n *\n * @param msg 错误消息。\n * @returns 不会返回。\n * @throws 始终抛出 `Error`。\n */\nexport function errMsg(msg: string) {\n\tthrow new Error(msg)\n}\n\n/**\n * 去掉 HTML 标记并返回纯文本内容。\n *\n * @param fragment HTML 片段字符串。\n * @returns 返回去除换行并裁剪首尾空白后的纯文本。\n */\nexport function $pureText(fragment: string) {\n\treturn (new DOMParser().parseFromString(fragment, 'text/html').body.textContent || '')\n\t\t.replace(/\\n/g, '')\n\t\t.trim()\n}\n\n/**\n * 判断一个值是否为普通对象记录。\n *\n * @param o 要检测的值。\n * @returns 非 `null` 对象时返回 `true`,否则返回 `false`。\n */\nexport function $oc(o: any): o is Record<string, any> {\n\treturn typeof o === 'object' && o !== null\n}\n\n/**\n * 判断一个值是否为字符串,并可选要求其非空。\n *\n * @param s 要检测的值。\n * @param val 为真时,除了要求是字符串外,还要求 `!!s` 为真。\n * @returns 是否满足对应的字符串条件。\n */\nexport function $s(s: any, val?: boolean): s is string {\n\tif (typeof s !== 'string') return false\n\treturn val ? !!s : true\n}\n\n/**\n * 判断一个值是否为有限数字。\n *\n * @param n 要检测的值。\n * @returns 只有在值是数字且不是 `NaN`、`Infinity`、`-Infinity` 时才返回 `true`。\n */\nexport function $sc(n: any): n is number {\n\tif (typeof n !== 'number') return false\n\treturn isFinite(n)\n}\n\n/**\n * 对循环索引执行加减步进,并保证结果始终落在循环范围内。\n *\n * @param v 当前值。\n * @param t 循环长度,也可理解为上边界(不包含)。\n * @param plus 步进值,默认为 `1`。\n * @returns 返回落在 `[0, t)` 区间内的循环结果。\n */\nexport function $lplus(v: number, t: number, plus: number = 1) {\n\tv += plus\n\twhile (v >= t) v -= t\n\twhile (v < 0) v += t\n\treturn v\n}\n\n/**\n * 使用循环索引方式读取数组项。\n *\n * @param arr 源数组。\n * @param i 目标索引,可以是负数,也可以超过数组长度。\n * @returns 返回折算后的数组项;如果数组为空则返回 `undefined`。\n */\nexport function $lindex(arr: Array<any>, i: number) {\n\tlet l = arr.length\n\tif (l === 0) return\n\twhile (i >= l) {\n\t\ti -= l\n\t}\n\twhile (i < 0) {\n\t\ti += l\n\t}\n\treturn arr[i]\n}\n\n/**\n * 校验一个简单标识符是否合法。\n *\n * 允许字符:字母、数字、连字符 `-`、下划线 `_`。\n *\n * @param id 待校验的标识符。\n * @returns 当 `id` 非空且符合规则时返回 `true`,否则返回 `false`。\n */\nexport function $validName(id?: string): id is string {\n\treturn !!id && /^[a-zA-Z0-9-_]+$/.test(id)\n}\n\nexport type FileType = 'text' | 'image' | 'audio' | 'video' | 'font' | 'unknown'\n\n/**\n * 根据文件扩展名推断文件的大致类型。\n *\n * @param fileName 文件名或路径。\n * @returns 可能返回 `text`、`image`、`audio`、`video`、`font` 或 `unknown`。\n */\nexport function $getFileType(fileName: string): FileType {\n\tconst extension = fileName.split('.').pop()?.toLowerCase()\n\tif (!extension) return 'unknown'\n\n\tconst textExtensions = ['txt', 'csv', 'json', 'xml', 'html', 'css', 'js', 'ts', 'md', 'log']\n\tconst imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'svg', 'webp']\n\tconst audioExtensions = ['mp3', 'wav', 'ogg', 'aac', 'flac', 'm4a']\n\tconst videoExtensions = ['mp4', 'webm', 'ogv', 'mov', 'avi', 'mkv']\n\tconst fontExtensions = ['woff', 'woff2', 'ttf', 'otf']\n\n\tif (textExtensions.includes(extension)) return 'text'\n\tif (imageExtensions.includes(extension)) return 'image'\n\tif (audioExtensions.includes(extension)) return 'audio'\n\tif (videoExtensions.includes(extension)) return 'video'\n\tif (fontExtensions.includes(extension)) return 'font'\n\n\treturn 'unknown'\n}\n\n/**\n * 判断一个字符串是否看起来像 URL,允许省略协议头。\n *\n * @param url 待检测的 URL 字符串。\n * @returns 输入为空时返回 `false`;否则返回是否匹配内部 URL 规则。\n */\nexport function $isValidOrBriefURL(url?: string) {\n\tif (!url) return false\n\tlet pattern = new RegExp(\n\t\t'^(https?:\\\\/\\\\/)?' + // protocol\n\t\t\t'((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\n\t\t\t'((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\n\t\t\t'(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\n\t\t\t'(\\\\?[;&a-z\\\\d%_.~+=-]*)?' + // query string\n\t\t\t'(\\\\#[-a-z\\\\d_]*)?$',\n\t\t'i',\n\t)\n\treturn pattern.test(url)\n}\n\n/**\n * 补全 URL: 如果缺少协议头 (http:// 或 https://) 则自动补上 https://。\n * 适用于用户输入的简写 URL, 例如 `a.ac` → `https://a.ac`。\n *\n * @param url 待补全的 URL 字符串。\n * @returns 补全后的 URL;空字符串原样返回。\n */\nexport function $ensureUrl(url: string): string {\n\tif (!url) return url\n\tif (!/^https?:\\/\\//i.test(url)) {\n\t\treturn 'https://' + url\n\t}\n\treturn url\n}\n\n/**\n * 将 tick 时间格式化为可读字符串。\n *\n * @param stampTicks 时间值,默认规则下 40 tick = 1 秒。\n * @param short 为 `true` 时返回 `MM:SS`,否则返回 `HH:MM:SS`。\n * @param unitS 为 `true` 时表示传入值单位是秒,函数内部会自动换算成 tick。\n * @param exact 为 `true` 时会在末尾追加 `%xx`,表示更细的余数信息。\n * @returns 返回格式化后的时间字符串;若输入不是有效数字,则按 `short` 返回 `00:00` 或 `00:00:00`。\n */\nexport function $getTimeString(\n\tstampTicks: number,\n\tshort: boolean,\n\tunitS: boolean = false,\n\texact: boolean = false,\n) {\n\tif (!$sc(stampTicks)) return short ? '00:00' : '00:00:00'\n\tshort ? '00:00' : '00:00:00'\n\tif (unitS) stampTicks *= 40\n\tlet h = stampTicks / (40 * 60 * 60)\n\th = Math.floor(h)\n\tlet m = stampTicks\n\tif (!short) m %= 40 * 60 * 60\n\tm /= 40 * 60\n\tm = Math.floor(m)\n\tlet s = stampTicks % (40 * 60)\n\ts /= 40\n\ts = Math.floor(s)\n\tlet sp = ((stampTicks % 40) / 40) * 100\n\tsp = Math.floor(sp)\n\tlet H = String(h).padStart(2, '0')\n\tlet M = String(m).padStart(2, '0')\n\tlet S = String(s).padStart(2, '0')\n\tlet result = short ? '' + M + ':' + S : '' + H + ':' + M + ':' + S\n\treturn exact ? result + '%' + String(sp).padStart(2, '0') : result\n}\n\n/**\n * 在指定范围内生成随机整数。\n *\n * 参数语义:\n * - 只传 `start` 时,返回 `[0, start)` 范围内的整数。\n * - 同时传 `start`、`end` 时,返回 `[start, end)` 范围内的整数。\n *\n * @param start 当 `end` 省略时表示上限;否则表示下限。\n * @param end 可选的上限(不包含)。\n * @returns 返回目标范围内的随机整数;当范围无效时返回 `0`。\n */\nexport function $magic(start: number, end?: number): number {\n\tif (typeof end !== 'number') {\n\t\tif (start <= 1) return 0\n\t\treturn Math.floor(Math.random() * start)\n\t} else {\n\t\tif (end <= start) return 0\n\t\tconst range = end - start\n\t\treturn start + Math.floor(Math.random() * range)\n\t}\n}\n\n// use nanoid\n/**\n * 生成指定长度的伪随机字母数字字符串。\n *\n * @param len 目标长度,小于 `1` 时会被强制改为 `1`。\n * @returns 返回长度恰好为 `len` 的随机字符串。\n */\nexport function $randomByte(len: number = 32) {\n\tif (len < 1) len = 1\n\tlet s = ''\n\twhile (s.length < len) s += Math.random().toString(36).substring(2)\n\treturn s.substring(0, len)\n}\n\n/**\n * 解析 JSON 字符串,并读取其中某个点路径对应的值。\n *\n * @param s JSON 字符串。\n * @param path 可选的点分隔路径,如 `a.b.c`。\n * @param def 当输入为空或路径读取失败时使用的默认值。\n * @returns 返回读取到的值;如果失败则返回 `def`。\n */\nexport function $rsValue(s: string = '', path?: string, def?: any) {\n\tif (!s) return def\n\treturn $rvalue($jsonParse(s), path, def)\n}\n\n/**\n * 按点路径给对象设置嵌套值。\n *\n * @param obj 目标对象。\n * @param path 点分隔属性路径。\n * @param value 要设置的值。\n * @returns 返回最终写入的值。\n */\nexport function $rsetValue(obj: Object, path: string, value: any) {\n\treturn $rvalue(obj, path, value, true, true)\n}\n\n/**\n * 使用点路径读取或设置对象中的嵌套属性。\n *\n * @param obj 目标对象。\n * @param path 可选的点分隔路径;如果不传,则直接返回 `obj` 本身。\n * @param def 默认值;在设置模式下也会作为要写入的值。\n * @param sdef 为 `true` 时,缺失的中间对象或最终值可以按需用 `def` 创建。\n * @param set 为 `true` 时强制进入设置模式,并把 `def` 写入最终路径。\n * @returns 可能返回读取到的值、写入的值、默认值 `def`,或者原对象 `obj`,具体取决于路径情况与参数组合。\n */\nexport function $rvalue(\n\tobj: Object,\n\tpath?: string,\n\tdef?: any,\n\tsdef: boolean = false,\n\tset: boolean = false,\n) {\n\tif (set) sdef = true\n\tif (!obj) return def\n\tlet ps = path ? path.split('.') : []\n\tlet target: { [x: string]: any } = obj\n\tlet i = -1\n\tfor (let sub of ps) {\n\t\ti++\n\t\tlet end = i == ps.length - 1\n\t\tif (end) {\n\t\t\tif (set) {\n\t\t\t\ttarget[sub] = def\n\t\t\t\treturn def\n\t\t\t}\n\t\t\tif ($hasKey(target, sub)) return target[sub]\n\t\t\tif (sdef) target[sub] = def\n\t\t\treturn def\n\t\t} else {\n\t\t\tif ($hasKey(target, sub)) {\n\t\t\t\ttarget = target[sub]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (sdef) {\n\t\t\t\ttarget[sub] = {}\n\t\t\t\ttarget = target[sub]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn def\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * 判断对象是否直接拥有某个属性。\n *\n * @param obj 要检查的对象。\n * @param key 属性名。\n * @returns 只有当属性是对象自身属性时才返回 `true`。\n */\nexport function $hasKey(obj: Object, key: string) {\n\treturn Object.hasOwnProperty.call(obj, key)\n}\n\n/**\n * 安全地把未知值转换成适合日志或调试展示的短字符串。\n *\n * @param a 要序列化的值。\n * @param maxLength 最大输出长度;小于等于 `0` 时表示不截断。\n * @param deep 内部递归深度,用于处理序列化失败时的错误对象。\n * @returns 返回字符串结果;必要时会附带截断标记或失败提示。\n */\nfunction _maybeString(a: any, maxLength: number = 600, deep: number = 0) {\n\tlet x = ''\n\tif (deep >= 6) x = '[Too deep]'\n\telse\n\t\ttry {\n\t\t\tx = (JSON.stringify(a) ?? String(a)) || '[never]'\n\t\t} catch (err) {\n\t\t\tx = 'Failed to stringify: ' + _maybeString(err, undefined, deep + 1)\n\t\t}\n\tif (maxLength > 0 && x.length > maxLength) {\n\t\tx = x.slice(0, maxLength) + '...'\n\t}\n\treturn x\n}\n\n/**\n * `_maybeString` 的对外包装函数。\n *\n * @param a 要转成字符串的值。\n * @param maxLength 最大输出长度,默认为 `600`。\n * @returns 返回相对安全的字符串表示。\n */\nexport function maybeString(a: any, maxLength: number = 600) {\n\treturn _maybeString(a, maxLength)\n}\n\n/**\n * 将未知错误尽量转换为可读的错误消息。\n *\n * @param e 未知的错误值。\n * @returns 返回尽可能提取出的错误消息;若是 Axios 错误且响应中存在 `data.msg`,会优先使用它。\n */\nexport function errToString(e: unknown): string {\n\tif (e instanceof AxiosError) {\n\t\tconst o = e.response?.data?.msg\n\t\tif ($s(o, true)) return o\n\t}\n\treturn (e instanceof Error ? e.message : String(e)) || 'ERROR'\n}\n\n/**\n * 以一个固定的小概率返回 `true`。\n *\n * @returns 当 `Math.random() > 0.8` 时返回 `true`,否则返回 `false`。\n */\nexport function smallChance() {\n\treturn Math.random() > 0.8\n}\n\n/**\n * 判断一个值是否是指定构造函数的普通实例。\n *\n * @param obj 要检测的值。\n * @param clas 期望的构造函数,默认为 `Object`。\n * @returns 当 `obj` 非空且其 `constructor === clas` 时返回 `true`。\n */\nexport function $isPlainClass(obj: any, clas: Function = Object): boolean {\n\treturn typeof obj === 'object' && obj !== null && obj.constructor === clas\n}\n\n/**\n * 将 Unicode 字符串编码为 Base64。\n *\n * @param str 源字符串。\n * @returns 返回 Base64 字符串。\n */\nexport function $encodeUnicodeToBase64(str: string) {\n\treturn btoa(unescape(encodeURIComponent(str)))\n}\n\n/**\n * 将 Base64 字符串解码回 Unicode 文本。\n *\n * @param base64 Base64 编码字符串。\n * @returns 返回解码后的 Unicode 字符串。\n */\nexport function $decodeBase64ToUnicode(base64: string) {\n\treturn decodeURIComponent(escape(atob(base64)))\n}\n\n/**\n * 读取浏览器 `File`,并返回不带 data URL 前缀的纯 Base64 内容。\n *\n * @param file 要读取的文件对象。\n * @returns 返回一个 Promise,成功时得到纯 Base64 字符串。\n * @throws 当文件读取失败或结果不是字符串时,Promise 会被拒绝。\n */\nexport async function $fileToBase64(file: File): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader()\n\t\treader.onload = () => {\n\t\t\tconst result = reader.result\n\t\t\tif (typeof result === 'string') {\n\t\t\t\tresolve(result.split(',')[1]) // Remove the \"data:*/*;base64,\" prefix\n\t\t\t} else {\n\t\t\t\treject(new Error('Failed to convert file to Base64.'))\n\t\t\t}\n\t\t}\n\t\treader.onerror = () => {\n\t\t\treject(new Error('Error reading file.'))\n\t\t}\n\t\treader.readAsDataURL(file)\n\t})\n}\n\n/**\n * 将 Base64 字符串解码为原始字节数组。\n *\n * @param base64 纯 Base64 字符串。\n * @returns 返回解码后的 `Uint8Array`。\n */\nexport function $decodeBase64ToBinary(base64: string) {\n\tconst binaryStr = atob(base64)\n\tconst bytes = new Uint8Array(binaryStr.length)\n\tfor (let i = 0; i < binaryStr.length; i++) {\n\t\tbytes[i] = binaryStr.charCodeAt(i)\n\t}\n\treturn bytes\n}\n\n/**\n * 仅在边界值有效时,将数字限制到对应范围内。\n *\n * @param v 输入值。\n * @param min 可选最小值。\n * @param max 可选最大值。\n * @returns 返回处理后的结果值。\n */\nexport function $setRange(v: number, min?: number, max?: number) {\n\tif ($sc(min) && <number>min > v) v = <number>min\n\tif ($sc(max) && <number>max < v) v = <number>max\n\treturn v\n}\n\n/**\n * 判断一个值是否位于某个中心点的对称范围内。\n *\n * @param v 要检测的值。\n * @param mid 中心值。\n * @param range 左右两侧允许的偏移范围。\n * @returns 当 `v` 位于 `[mid - range, mid + range]` 区间内时返回 `true`。\n */\nexport function $inRange2(v: number, mid: number, range: number) {\n\treturn $inRange(v, mid - range, mid + range)\n}\n\n/**\n * 判断一个数是否位于可选的最小值和最大值之间。\n *\n * @param v 要检测的值。\n * @param min 可选最小值。\n * @param max 可选最大值。\n * @returns 如果违反任一已提供边界则返回 `false`,否则返回 `true`。\n */\nexport function $inRange(v: number, min?: number, max?: number) {\n\tif ($sc(min) && <number>min > v) return false\n\tif ($sc(max) && <number>max < v) return false\n\treturn true\n}\n\n/**\n * 按指定分隔符拆分字符串。\n *\n * @param str 原始字符串。\n * @param cut 分隔符,默认为 `^`。\n * @returns 返回 `str.split(cut)` 的结果数组。\n */\nexport function $strings(str: string, cut: string = '^') {\n\treturn str.split(cut)\n}\n\n/**\n * 生成一个按成对字符串参数进行处理的辅助函数。\n *\n * 规则说明:\n * - 如果只传了一个参数且其中包含 `^`,会先按 `^` 拆分。\n * - 然后按 `(s1, s2)` 两两配对执行处理。\n * - 如果某组缺少第二项,运行时该参数会是 `undefined`。\n *\n * @param f 成对处理函数。\n * @param gap 每组结果之间插入的分隔字符串。\n * @returns 返回一个新函数,用于把字符串列表合成为最终字符串。\n */\nexport function $genSSF(\n\tf: (s1: string, s2: string) => string,\n\tgap: string = '',\n): (...args: string[]) => string {\n\treturn (...args: string[]) => {\n\t\tlet ss = args.length === 1 && args[0].includes('^') ? $strings(args[0]) : args\n\t\tlet v = ''\n\t\tlet i = Math.ceil(ss.length / 2)\n\t\tfor (let c = 0; c < i; c++) {\n\t\t\tif (v) v += gap\n\t\t\tlet r = ss[c * 2]\n\t\t\tlet t = ss[c * 2 + 1]\n\t\t\tv += f(r, t)\n\t\t}\n\t\treturn v\n\t}\n}\n\n/**\n * 规范化多行字符串中的空白字符。\n *\n * @param s 输入字符串。\n * @returns 返回压缩多余空行、规范行内空白并去除首尾空白后的字符串。\n */\nexport function xtrim(s: string) {\n\treturn s\n\t\t.replace(/(\\r?\\n)+/g, '\\n')\n\t\t.replace(/[^\\S\\n]+/g, ' ')\n\t\t.replace(/(^\\s*|\\s*$)/g, '')\n}\n\n/**\n * 根据键值选择映射项,并在映射值为函数时执行它。\n *\n * @typeParam T 键类型。\n * @typeParam V 非函数映射值类型。\n * @param val 当前要选择的键。\n * @param fs 键到函数或普通值的映射表。\n * @returns 如果命中项是函数则返回函数执行结果,否则返回映射值本身。\n */\nexport function $if<T extends string | number | symbol, V>(val: T, fs: Record<T, Function | V>) {\n\tconst f = fs[val]\n\tif (typeof f === 'function') return f()\n\treturn f as V\n}\n\n/**\n * 获取数组或长度值对应的最后一个有效索引。\n *\n * @param items 数组本身或数字长度。\n * @returns 返回 `max(length - 1, 0)` 的结果。\n */\nexport function $lastIndex(items: Array<any> | number) {\n\tlet i = $sc(items) ? <number>items : (<Array<any>>items).length\n\ti -= 1\n\treturn i >= 0 ? i : 0\n}\n\n/**\n * 将稀疏数组中的空洞补成显式的 `undefined`。\n *\n * 注意:该函数会修改原数组,同时返回一个浅拷贝。\n *\n * @typeParam T 元素类型。\n * @param arr 可能包含空洞的数组。\n * @returns 返回浅拷贝后的数组。\n */\nexport function $replaceHolesWithUndefined<T>(arr: Array<T | undefined>): Array<T | undefined> {\n\tconst newArr = arr.slice()\n\tfor (let i = 0; i < newArr.length; i++) {\n\t\tif (!(i in newArr)) {\n\t\t\tarr[i] = undefined\n\t\t}\n\t}\n\treturn newArr\n}\n\n/**\n * 将字符串稳定映射到 `[0, max)` 范围内的整数。\n *\n * @param str 源字符串。\n * @param max 上界(不包含)。\n * @returns 返回确定性的整数结果;即使字符串为空,也会得到合法范围内的值。\n */\nexport function $stringToRange(str: string, max: number): number {\n\tstr ||= ''\n\tlet hash = 5381\n\tfor (let i = 0; i < str.length; i++) {\n\t\thash = (hash * 33) ^ str.charCodeAt(i)\n\t}\n\thash = Math.abs(hash)\n\tconst goldenRatioConjugate = 0.61803398875\n\tlet value = (hash * goldenRatioConjugate) % 1\n\treturn Math.floor(value * max)\n}\n\n/**\n * 去掉路径开头的 `/`。\n *\n * @param path 输入路径。\n * @returns 如果路径有前导斜杠则返回去掉后的结果,否则原样返回。\n */\nexport function $rmvSlash(path: string) {\n\treturn path.startsWith('/') ? path.slice(1) : path\n}\n\n/**\n * 解析紧凑编码的路径参数字符串。\n *\n * 规则:\n * - 单个 `-` 表示参数分隔。\n * - 双 `--` 表示字面量 `-`。\n * - `_` 与 `%20` 会被还原为空格。\n * - 双下划线 `__` 用于保留字面量下划线。\n *\n * @param path 编码后的路径字符串。\n * @returns 返回解码后的参数数组。\n */\nexport function $parseParams(path: string): (string | undefined)[] {\n\tpath = $rmvSlash(path)\n\tconst parts: string[] = []\n\tlet current = ''\n\tlet i = 0\n\tconst UNDERSCORE_PLACEHOLDER = 'PLACEHOLDER_' + Math.random().toString(36).slice(2, 10)\n\twhile (i < path.length) {\n\t\tif (path[i] === '-') {\n\t\t\tif (path[i + 1] === '-') {\n\t\t\t\tcurrent += '-'\n\t\t\t\ti += 2\n\t\t\t} else {\n\t\t\t\tparts.push(current)\n\t\t\t\tcurrent = ''\n\t\t\t\ti++\n\t\t\t}\n\t\t} else {\n\t\t\tcurrent += path[i]\n\t\t\ti++\n\t\t}\n\t}\n\tif (current) parts.push(current)\n\tconst decoded = parts.map((p) =>\n\t\tp\n\t\t\t.replace(/__/g, UNDERSCORE_PLACEHOLDER)\n\t\t\t.replace(/_/g, ' ')\n\t\t\t.replace(/%20/g, ' ')\n\t\t\t.replace(new RegExp(UNDERSCORE_PLACEHOLDER, 'g'), '_'),\n\t)\n\treturn decoded\n}\n\n/**\n * 给数字或数字字符串添加千分位分隔符。\n *\n * @param num 数字或可转为字符串的数字值。\n * @returns 返回带千分位逗号的字符串。\n */\nexport function $formatWithCommas(num: number | string): string {\n\tconst [integerPart, decimalPart] = num.toString().split('.')\n\tconst formattedInt = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n\treturn decimalPart ? `${formattedInt}.${decimalPart}` : formattedInt\n}\n\n/**\n * 校验邮箱地址是否符合支持 Unicode 字母的规则。\n *\n * @param email 待校验邮箱。\n * @returns 符合规则时返回 `true`,否则返回 `false`。\n */\nexport function $isValidEmailWithUnicode(email?: string) {\n\temail = email || ''\n\tconst regex = /^[\\p{L}\\p{N}._%+-]+@(?:[\\p{L}\\p{N}-]+\\.)+[\\p{L}]{2,}$/u\n\treturn regex.test(email)\n}\n\n/**\n * 校验邮箱格式,不合法时直接抛错。\n *\n * @param email 待校验邮箱。\n * @returns 合法时无返回值。\n * @throws 当邮箱不合法时抛出错误。\n */\nexport function $checkValidEmailWithUnicode(email?: string) {\n\tif (!$isValidEmailWithUnicode(email)) errMsg('Invalid email address')\n}\n\nexport const shanghaiDateFormatter = new Intl.DateTimeFormat('zh-CN', {\n\ttimeZone: 'Asia/Shanghai',\n\tyear: 'numeric',\n\tmonth: 'numeric',\n\tday: 'numeric',\n\thour: '2-digit',\n\tminute: '2-digit',\n\thour12: false,\n})\n/**\n * 将日期输入格式化为 `YYYY年M月D日 HH:mm`。\n *\n * @param dateInput 任何可被 `Date` 构造函数接受的输入。\n * @returns 返回格式化后的日期字符串。\n */\nexport function $formatDate(dateInput: string | number | Date): string {\n\tconst date = new Date(dateInput)\n\tconst parts = shanghaiDateFormatter.formatToParts(date)\n\tconst getPart = (type: Intl.DateTimeFormatPartTypes) =>\n\t\tparts.find((part) => part.type === type)?.value ?? ''\n\n\tconst year = getPart('year')\n\tconst month = getPart('month')\n\tconst day = getPart('day')\n\tconst hour = getPart('hour')\n\tconst minute = getPart('minute')\n\n\treturn `${year}年${month}月${day}日 ${hour}:${minute}`\n}\n\n/**\n * 格式化数值为字符串,先放大再保留指定小数位数,并添加千分位分隔符。\n *\n * 行为说明:\n * - 先将数值乘以 10^bits 进行放大。\n * - 然后使用 `toFixed(bits)` 保留指定位数的小数。\n * - 最后通过 `$formatWithCommas` 添加千分位逗号分隔符。\n * - 当输入不是有效数字时返回 `'-'`。\n *\n * @param points 要格式化的数值。\n * @param bits 放大倍数的指数,同时也是小数位数,默认为 `2`。\n * @returns 返回格式化后的字符串(含千分位);输入无效时返回 `'-'`。\n *\n * @example\n * $formatPoints(1.23, 2) // 返回 \"123.00\"\n * $formatPoints(12.34, 2) // 返回 \"1,234.00\"\n * $formatPoints(0.5, 3) // 返回 \"500.000\"\n */\nexport function $formatPoints(points?: number, bits = 2) {\n\tif (!$sc(points)) return '-'\n\treturn $formatWithCommas((points * Math.pow(10, -bits)).toFixed(bits))\n}\n\n/**\n * 格式化数值为带符号和颜色的显示元组,并添加千分位分隔符。\n *\n * 行为说明:\n * - 先将数值乘以 10^bits 进行放大,然后使用 `toFixed(bits)` 格式化。\n * - 通过 `$formatWithCommas` 添加千分位逗号分隔符。\n * - 根据数值正负自动添加符号前缀并分配对应颜色。\n * - 正数:前缀 `'+'`,颜色 `'#0a0'`(绿色)。\n * - 负数:前缀 `'-'`,颜色 `'#a00'`(红色)。\n * - 零或其他:无前缀,颜色 `'#333'`(深灰色)。\n * - 当输入不是有效数字时返回 `['+?', '#333']`。\n *\n * @param points 要格式化的数值。\n * @param bits 放大倍数的指数,同时也是小数位数,默认为 `2`。\n * @returns 返回包含显示文本(含千分位)和颜色的元组 `[display, color]`。\n *\n * @example\n * $formatPointsWithChange(1.23, 2) // 返回 [\"+123.00\", \"#0a0\"]\n * $formatPointsWithChange(12.34, 2) // 返回 [\"+1,234.00\", \"#0a0\"]\n * $formatPointsWithChange(-0.5, 2) // 返回 [\"-50.00\", \"#a00\"]\n * $formatPointsWithChange(0, 2) // 返回 [\"0.00\", \"#333\"]\n */\nexport function $formatPointsWithChange(\n\tpoints?: number,\n\tbits = 2,\n): [display: string, color: string] {\n\tlet color = '#333'\n\tif (!$sc(points)) return ['+?', color]\n\tlet prefix = ''\n\tif (points > 0) {\n\t\tprefix = '+'\n\t\tcolor = '#0a0'\n\t} else if (points < 0) {\n\t\tcolor = '#a00'\n\t}\n\treturn [prefix + $formatWithCommas((points * Math.pow(10, -bits)).toFixed(bits)), color]\n}\n\nconst BYTE_UNITS = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB']\n\n/**\n * 字节数语义化显示,格式与 npm `pretty-bytes` 库一致(1000 进制)。\n *\n * 行为说明:\n * - 0 / NaN / undefined 返回 `'0 B'`。\n * - 负数与官方一致:记录符号 → 取绝对值计算 → 前缀拼回 `'-'`。\n * - 保留 3 位有效数字,单位前后有空格。\n *\n * @param n 字节数。\n * @returns 返回语义化字符串。\n *\n * @example\n * $humanizeBytes(0) // 返回 \"0 B\"\n * $humanizeBytes(1234) // 返回 \"1.23 kB\"\n * $humanizeBytes(12345678) // 返回 \"12.3 MB\"\n * $humanizeBytes(1500000000) // 返回 \"1.5 GB\"\n * $humanizeBytes(-1234) // 返回 \"-1.23 kB\"\n */\nexport function $humanizeBytes(n?: number): string {\n\tif (!n) return '0 B'\n\tconst sign = n < 0 ? '-' : ''\n\tconst abs = Math.abs(n)\n\tlet i = Math.floor(Math.log(abs) / Math.log(1000))\n\tif (i >= BYTE_UNITS.length) i = BYTE_UNITS.length - 1\n\tconst v = abs / Math.pow(1000, i)\n\tconst num = v >= 100 ? v.toFixed(0) : v >= 10 ? v.toFixed(1) : v.toFixed(2)\n\treturn `${sign}${num} ${BYTE_UNITS[i]}`\n}\n\n/**\n * 以 k 为单位、保留 1 位小数;整数部分每 3 位加英文逗号。\n *\n * 行为说明:\n * - NaN / undefined 当作 0 处理。\n * - 负数:记录符号 → 取绝对值计算 → 前缀拼回 `'-'`。\n * - 小数四舍五入到 1 位,进位到 10 时整数部分 +1、小数归零。\n *\n * @param n 待格式化的整数。\n * @returns 返回语义化字符串。\n *\n * @example\n * $formatK(0) // 返回 \"0.0 k\"\n * $formatK(999) // 返回 \"1.0 k\"\n * $formatK(12345) // 返回 \"12.3 k\"\n * $formatK(1234567) // 返回 \"1,234.6 k\"\n * $formatK(-12345) // 返回 \"-12.3 k\"\n */\nexport function $formatK(n?: number): string {\n\tconst x = n ?? 0\n\tconst sign = x < 0 ? '-' : ''\n\tconst k = Math.abs(x) / 1000\n\tlet intPart = Math.floor(k)\n\tlet deci = Math.round((k - intPart) * 10)\n\tif (deci === 10) {\n\t\tintPart += 1\n\t\tdeci = 0\n\t}\n\treturn `${sign}${$formatWithCommas(intPart)}.${deci} k`\n}\n\n/**\n * 将错误转换成一个始终包含 `msg` 字段的对象。\n *\n * @typeParam T 附加字段对象类型。\n * @param error 错误来源。\n * @param defVal 可选的附加字段对象。\n * @returns 返回 `{ msg }` 或 `{ msg, ...defVal }`。\n */\nexport function errCode<T extends Any>(error: any, defVal?: T) {\n\tconst msg = errToString(error)\n\treturn defVal ? { msg, ...defVal } : { msg }\n}\n\n/**\n * 抛出统一的“内容不正确”错误。\n *\n * @returns 不会返回。\n * @throws 始终抛出错误。\n */\nexport function errContent() {\n\terrMsg('内容不正确')\n}\n\n/**\n * 抛出统一的“参数不正确”错误。\n *\n * @returns 不会返回。\n * @throws 始终抛出错误。\n */\nexport function errArg() {\n\terrMsg('参数不正确')\n}\n\n/**\n * 抛出统一的“未登录”错误。\n *\n * @returns 不会返回。\n * @throws 始终抛出错误。\n */\nexport function errNotLoggedIn() {\n\terrMsg('你还没有登录')\n}\n\n/**\n * 抛出统一的“没有权限”错误。\n *\n * @returns 不会返回。\n * @throws 始终抛出错误。\n */\nexport function err403() {\n\terrMsg('你没有这个权限')\n}\n\n/**\n * 判断当前 UTC 时间是否接近指定的 UTC 整点。\n *\n * 当前实现允许前后约 3 分钟误差,并处理跨天情况。\n *\n * @param targetHour 目标 UTC 小时,通常应在 `0-23` 范围内。\n * @returns 如果当前 UTC 时间与目标小时足够接近,则返回 `true`。\n */\nexport function isNowAroundUtcHour(targetHour: number) {\n\tconst now = new Date()\n\n\t// 获取当前 UTC 小时和分钟\n\tconst utcHour = now.getUTCHours()\n\tconst utcMinute = now.getUTCMinutes()\n\n\t// 计算目标时间(UTC)的时间戳(以分钟为单位)\n\tconst targetTimeInMinutes = targetHour * 60\n\n\t// 当前时间的总 UTC 分钟\n\tconst nowTimeInMinutes = utcHour * 60 + utcMinute\n\n\t// 差值(正负都接受)\n\tconst diff = Math.abs(nowTimeInMinutes - targetTimeInMinutes)\n\n\t// 处理跨天情况,例如 targetHour 是 0,而当前时间是 23:58 UTC\n\tconst diffAlt = 1440 - diff // 24 * 60 = 1440\n\n\treturn diff <= 3 || diffAlt <= 3\n}\n\n/**\n * 将纯 base64 字符串解码为字节数组,兼容 Node 与浏览器环境。\n *\n * 说明:\n * - 优先使用浏览器 `atob`,失败后回退到 Node `Buffer`。\n * - 若输入为空或无法解码,返回空数组(长度为 0)。\n *\n * 返回值约定:\n * - 一定返回 `Uint8Array`(不会返回 null/undefined)。\n */\nfunction $decodeBase64ToBytes(base64: string) {\n\tconst pure = base64.trim()\n\n\tif (!pure) {\n\t\treturn new Uint8Array(0)\n\t}\n\n\ttry {\n\t\tif (typeof atob === 'function') {\n\t\t\tconst binary = atob(pure)\n\t\t\tconst bytes = new Uint8Array(binary.length)\n\t\t\tfor (let i = 0; i < binary.length; i++) {\n\t\t\t\tbytes[i] = binary.charCodeAt(i)\n\t\t\t}\n\t\t\treturn bytes\n\t\t}\n\t} catch {\n\t\t// noop\n\t}\n\n\ttry {\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\treturn Uint8Array.from(Buffer.from(pure, 'base64'))\n\t\t}\n\t} catch {\n\t\t// noop\n\t}\n\n\treturn new Uint8Array(0)\n}\n\n/**\n * 将字节数组指定区间转成 ASCII 字符串。\n *\n * 说明:\n * - 仅做逐字节 ASCII 转换,不做编码探测。\n * - 当区间越界时会自动截断到可读范围。\n *\n * 返回值约定:\n * - 一定返回 `string`(不会返回 null/undefined)。\n */\nfunction $bytesToAscii(bytes: Uint8Array, start: number, end: number) {\n\tlet out = ''\n\tfor (let i = start; i < end && i < bytes.length; i++) {\n\t\tout += String.fromCharCode(bytes[i])\n\t}\n\treturn out\n}\n\n/**\n * 清洗 base64 输入,统一得到“纯 base64”(不含 data URL 前缀)。\n *\n * 说明:\n * - 会移除 `data:*;base64,` 前缀。\n * - 会移除所有空白字符并 trim。\n * - 会校验 base64 格式;不合法时返回 null。\n * - 非字符串输入会返回 null。\n *\n * 返回值约定:\n * - 返回合法的纯 base64;不合法时返回 `null`。\n */\nexport function $purifyBase64(input: string | Null): string | null {\n\tif (typeof input !== 'string') {\n\t\treturn null\n\t}\n\n\tconst cleaned = input\n\t\t.replace(/^data:[^;]+;base64,/i, '')\n\t\t.replace(/\\s+/g, '')\n\t\t.trim()\n\n\tif (!cleaned) {\n\t\treturn null\n\t}\n\n\tif (!/^[A-Za-z0-9+/]+={0,2}$/.test(cleaned)) {\n\t\treturn null\n\t}\n\n\tif (cleaned.length % 4 !== 0) {\n\t\treturn null\n\t}\n\n\treturn cleaned\n}\n\n/**\n * 基于“纯 base64”推断文件 mime 类型。\n *\n * 说明:\n * - 图片:jpeg/png/gif/webp/bmp/tiff/avif/heic/x-icon/svg+xml。\n * - 音频:mpeg(mp3)/wav/ogg/flac/aac/m4a。\n * - 视频:mp4/webm/quicktime(mov)/x-msvideo(avi)/x-matroska(mkv)。\n * - 文档:pdf/msword(doc)/vnd.ms-excel(xls)/vnd.ms-powerpoint(ppt)/\n * vnd.openxmlformats-officedocument.*(docx/xlsx/pptx)。\n * - 压缩包:zip/x-rar-compressed/x-7z-compressed/gzip/x-tar。\n * - 其它:xml。\n * - 输入可为纯 base64 或 data URL,内部会先清洗。\n * - 无法识别时回退为 `application/octet-stream`。\n *\n * 返回值约定:\n * - 一定返回非空 mime 字符串(不会返回 null/undefined/空串)。\n */\nexport function $inferMimeTypeFormPureBase64(pureBase64: string | Null) {\n\tconst normalized = $purifyBase64(pureBase64)\n\tif (!normalized) {\n\t\treturn 'application/octet-stream'\n\t}\n\tconst bytes = $decodeBase64ToBytes(normalized)\n\n\t// === 图片 ===\n\tif (bytes.length >= 3 && bytes[0] === 0xff && bytes[1] === 0xd8 && bytes[2] === 0xff) {\n\t\treturn 'image/jpeg'\n\t}\n\tif (\n\t\tbytes.length >= 8 &&\n\t\tbytes[0] === 0x89 &&\n\t\tbytes[1] === 0x50 &&\n\t\tbytes[2] === 0x4e &&\n\t\tbytes[3] === 0x47 &&\n\t\tbytes[4] === 0x0d &&\n\t\tbytes[5] === 0x0a &&\n\t\tbytes[6] === 0x1a &&\n\t\tbytes[7] === 0x0a\n\t) {\n\t\treturn 'image/png'\n\t}\n\tif (\n\t\tbytes.length >= 6 &&\n\t\t($bytesToAscii(bytes, 0, 6) === 'GIF87a' || $bytesToAscii(bytes, 0, 6) === 'GIF89a')\n\t) {\n\t\treturn 'image/gif'\n\t}\n\tif (bytes.length >= 2 && bytes[0] === 0x42 && bytes[1] === 0x4d) {\n\t\treturn 'image/bmp'\n\t}\n\tif (\n\t\tbytes.length >= 4 &&\n\t\t((bytes[0] === 0x49 && bytes[1] === 0x49 && bytes[2] === 0x2a && bytes[3] === 0x00) ||\n\t\t\t(bytes[0] === 0x4d && bytes[1] === 0x4d && bytes[2] === 0x00 && bytes[3] === 0x2a))\n\t) {\n\t\treturn 'image/tiff'\n\t}\n\tif (\n\t\tbytes.length >= 8 &&\n\t\tbytes[0] === 0x00 &&\n\t\tbytes[1] === 0x00 &&\n\t\tbytes[2] === 0x01 &&\n\t\tbytes[3] === 0x00\n\t) {\n\t\treturn 'image/x-icon'\n\t}\n\n\t// SVG:常见以 `<?xml` 或 `<svg` 开头\n\tconst head = $bytesToAscii(bytes, 0, Math.min(bytes.length, 256)).trimStart().toLowerCase()\n\tif (head.startsWith('<svg') || (head.startsWith('<?xml') && head.includes('<svg'))) {\n\t\treturn 'image/svg+xml'\n\t}\n\n\t// === RIFF 容器(webp / wav / avi) ===\n\tif (bytes.length >= 12 && $bytesToAscii(bytes, 0, 4) === 'RIFF') {\n\t\tconst sub = $bytesToAscii(bytes, 8, 12)\n\t\tif (sub === 'WEBP') return 'image/webp'\n\t\tif (sub === 'WAVE') return 'audio/wav'\n\t\tif (sub === 'AVI ') return 'video/x-msvideo'\n\t}\n\n\t// === ISO BMFF 容器(mp4 / mov / avif / heic / m4a) ===\n\tif (bytes.length >= 12 && $bytesToAscii(bytes, 4, 8) === 'ftyp') {\n\t\tconst brand = $bytesToAscii(bytes, 8, 12)\n\t\tif (brand === 'avif' || brand === 'avis') return 'image/avif'\n\t\tif (brand === 'heic' || brand === 'heix' || brand === 'hevc' || brand === 'hevx')\n\t\t\treturn 'image/heic'\n\t\tif (brand === 'qt ') return 'video/quicktime'\n\t\tif (brand === 'M4A ' || brand === 'M4B ' || brand === 'M4P ') return 'audio/mp4'\n\t\t// 其余 ftyp 品牌(mp42/isom/iso2/avc1/mmp4/dash/...)当作 mp4 视频\n\t\treturn 'video/mp4'\n\t}\n\n\t// === EBML(webm / mkv) ===\n\tif (\n\t\tbytes.length >= 4 &&\n\t\tbytes[0] === 0x1a &&\n\t\tbytes[1] === 0x45 &&\n\t\tbytes[2] === 0xdf &&\n\t\tbytes[3] === 0xa3\n\t) {\n\t\t// 在前 4KB 内找 DocType;webm 字符串出现则判定 webm,否则按 mkv\n\t\tconst sniffEnd = Math.min(bytes.length, 4096)\n\t\tconst sniff = $bytesToAscii(bytes, 0, sniffEnd)\n\t\tif (sniff.includes('webm')) return 'video/webm'\n\t\treturn 'video/x-matroska'\n\t}\n\n\t// === 音频 ===\n\tif (bytes.length >= 4 && $bytesToAscii(bytes, 0, 4) === 'OggS') {\n\t\treturn 'audio/ogg'\n\t}\n\tif (bytes.length >= 4 && $bytesToAscii(bytes, 0, 4) === 'fLaC') {\n\t\treturn 'audio/flac'\n\t}\n\t// MP3:ID3v2 头 或 帧同步 0xFF Ex/Fx\n\tif (bytes.length >= 3 && $bytesToAscii(bytes, 0, 3) === 'ID3') {\n\t\treturn 'audio/mpeg'\n\t}\n\tif (bytes.length >= 2 && bytes[0] === 0xff && (bytes[1] & 0xe0) === 0xe0) {\n\t\t// AAC ADTS 同步字 (FF F1 / FF F9)\n\t\tif (bytes[1] === 0xf1 || bytes[1] === 0xf9) return 'audio/aac'\n\t\treturn 'audio/mpeg'\n\t}\n\n\t// === 文档 ===\n\tif (bytes.length >= 4 && $bytesToAscii(bytes, 0, 4) === '%PDF') {\n\t\treturn 'application/pdf'\n\t}\n\t// CFB(老 Office:doc/xls/ppt)\n\tif (\n\t\tbytes.length >= 8 &&\n\t\tbytes[0] === 0xd0 &&\n\t\tbytes[1] === 0xcf &&\n\t\tbytes[2] === 0x11 &&\n\t\tbytes[3] === 0xe0 &&\n\t\tbytes[4] === 0xa1 &&\n\t\tbytes[5] === 0xb1 &&\n\t\tbytes[6] === 0x1a &&\n\t\tbytes[7] === 0xe1\n\t) {\n\t\treturn 'application/x-cfb'\n\t}\n\n\t// === 压缩包(含 OOXML:docx/xlsx/pptx 也是 zip) ===\n\tif (\n\t\tbytes.length >= 4 &&\n\t\tbytes[0] === 0x50 &&\n\t\tbytes[1] === 0x4b &&\n\t\t(bytes[2] === 0x03 || bytes[2] === 0x05 || bytes[2] === 0x07) &&\n\t\t(bytes[3] === 0x04 || bytes[3] === 0x06 || bytes[3] === 0x08)\n\t) {\n\t\t// 在前 4KB 内嗅探 OOXML 特征文件名,以区分 docx/xlsx/pptx\n\t\tconst sniffEnd = Math.min(bytes.length, 4096)\n\t\tconst sniff = $bytesToAscii(bytes, 0, sniffEnd)\n\t\tif (sniff.includes('word/')) {\n\t\t\treturn 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n\t\t}\n\t\tif (sniff.includes('xl/')) {\n\t\t\treturn 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t}\n\t\tif (sniff.includes('ppt/')) {\n\t\t\treturn 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\n\t\t}\n\t\treturn 'application/zip'\n\t}\n\tif (\n\t\tbytes.length >= 7 &&\n\t\tbytes[0] === 0x52 &&\n\t\tbytes[1] === 0x61 &&\n\t\tbytes[2] === 0x72 &&\n\t\tbytes[3] === 0x21 &&\n\t\tbytes[4] === 0x1a &&\n\t\tbytes[5] === 0x07\n\t) {\n\t\treturn 'application/x-rar-compressed'\n\t}\n\tif (\n\t\tbytes.length >= 6 &&\n\t\tbytes[0] === 0x37 &&\n\t\tbytes[1] === 0x7a &&\n\t\tbytes[2] === 0xbc &&\n\t\tbytes[3] === 0xaf &&\n\t\tbytes[4] === 0x27 &&\n\t\tbytes[5] === 0x1c\n\t) {\n\t\treturn 'application/x-7z-compressed'\n\t}\n\tif (bytes.length >= 2 && bytes[0] === 0x1f && bytes[1] === 0x8b) {\n\t\treturn 'application/gzip'\n\t}\n\t// tar:在偏移 257 处有 \"ustar\"\n\tif (bytes.length >= 265 && $bytesToAscii(bytes, 257, 262) === 'ustar') {\n\t\treturn 'application/x-tar'\n\t}\n\n\t// === XML / 通用文本 ===\n\tif (head.startsWith('<?xml')) {\n\t\treturn 'application/xml'\n\t}\n\n\treturn 'application/octet-stream'\n}\n\n/**\n * 基于“纯 base64”推断文件后缀。\n *\n * 说明:\n * - 覆盖 `$inferMimeTypeFormPureBase64` 支持的全部类型。\n * - 输入可为纯 base64 或 data URL,内部会先清洗。\n * - 无法识别时回退为 `bin`。\n *\n * 返回值约定:\n * - 一定返回非空后缀字符串(不含点号,不会返回 null/undefined/空串)。\n */\nexport function $inferExtensionFormPureBase64(pureBase64: string | Null) {\n\tconst mime = $inferMimeTypeFormPureBase64(pureBase64)\n\tswitch (mime) {\n\t\t// 图片\n\t\tcase 'image/jpeg':\n\t\t\treturn 'jpg'\n\t\tcase 'image/png':\n\t\t\treturn 'png'\n\t\tcase 'image/gif':\n\t\t\treturn 'gif'\n\t\tcase 'image/webp':\n\t\t\treturn 'webp'\n\t\tcase 'image/bmp':\n\t\t\treturn 'bmp'\n\t\tcase 'image/tiff':\n\t\t\treturn 'tiff'\n\t\tcase 'image/avif':\n\t\t\treturn 'avif'\n\t\tcase 'image/heic':\n\t\t\treturn 'heic'\n\t\tcase 'image/x-icon':\n\t\t\treturn 'ico'\n\t\tcase 'image/svg+xml':\n\t\t\treturn 'svg'\n\t\t// 音频\n\t\tcase 'audio/mpeg':\n\t\t\treturn 'mp3'\n\t\tcase 'audio/wav':\n\t\t\treturn 'wav'\n\t\tcase 'audio/ogg':\n\t\t\treturn 'ogg'\n\t\tcase 'audio/flac':\n\t\t\treturn 'flac'\n\t\tcase 'audio/aac':\n\t\t\treturn 'aac'\n\t\tcase 'audio/mp4':\n\t\t\treturn 'm4a'\n\t\t// 视频\n\t\tcase 'video/mp4':\n\t\t\treturn 'mp4'\n\t\tcase 'video/webm':\n\t\t\treturn 'webm'\n\t\tcase 'video/quicktime':\n\t\t\treturn 'mov'\n\t\tcase 'video/x-msvideo':\n\t\t\treturn 'avi'\n\t\tcase 'video/x-matroska':\n\t\t\treturn 'mkv'\n\t\t// 文档\n\t\tcase 'application/pdf':\n\t\t\treturn 'pdf'\n\t\tcase 'application/x-cfb':\n\t\t\treturn 'doc'\n\t\tcase 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n\t\t\treturn 'docx'\n\t\tcase 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n\t\t\treturn 'xlsx'\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n\t\t\treturn 'pptx'\n\t\t// 压缩包\n\t\tcase 'application/zip':\n\t\t\treturn 'zip'\n\t\tcase 'application/x-rar-compressed':\n\t\t\treturn 'rar'\n\t\tcase 'application/x-7z-compressed':\n\t\t\treturn '7z'\n\t\tcase 'application/gzip':\n\t\t\treturn 'gz'\n\t\tcase 'application/x-tar':\n\t\t\treturn 'tar'\n\t\t// 其它\n\t\tcase 'application/xml':\n\t\t\treturn 'xml'\n\t\tdefault:\n\t\t\treturn 'bin'\n\t}\n}\n\n/**\n * 将“纯 base64 或 data URL”统一转成标准 data URL。\n *\n * 说明:\n * - 如果输入本来是 data URL,会清洗并标准化后返回。\n * - 如果输入是纯 base64,会自动推断 mime 并补齐 `data:*;base64,` 前缀。\n * - 非字符串、空字符串或不合法内容返回 null。\n *\n * 返回值约定:\n * - 返回标准 data URL;若输入不合法则返回 `null`。\n */\nexport function $toDataUrlFromBase64(base64WithDataOrPure: string | Null): string | null {\n\tif (typeof base64WithDataOrPure !== 'string') {\n\t\treturn null\n\t}\n\tconst pure = $purifyBase64(base64WithDataOrPure)\n\tif (!pure) {\n\t\treturn null\n\t}\n\ttry {\n\t\tconst mime =\n\t\t\t/^data:([^;]+);base64,/i.exec(base64WithDataOrPure.trim())?.[1] ||\n\t\t\t$inferMimeTypeFormPureBase64(pure)\n\t\treturn `data:${mime};base64,${pure}`\n\t} catch {\n\t\treturn null\n\t}\n}\n\nexport const $getHue = (json: Object) => {\n\tlet f = ''\n\ttry {\n\t\tf = $jsonStringify(json)\n\t} catch (e) {\n\t\tf = String(json)\n\t}\n\treturn $stringToRange(f, 360)\n}\n\nexport const $borderColor = (json: any) => `hsl(${$getHue(json)}, 100%, 33%)`\nexport const $backgroundColor = (json: any) => `hsl(${$getHue(json)}, 100%, 40%)`\n","// export type LogFilter = (msg: string) => boolean // true means filter out\n\nimport { $loadOpt } from './Functions'\n\nexport type DozyConfigItem = {}\nexport type DozyConfig = Partial<DozyConfigItem>\n\nclass Dozy {\n\t/**\n\t * 将用户传入的配置合并到当前运行时配置对象中。\n\t *\n\t * 行为说明:\n\t * - 通过 `$loadOpt` 逐字段合并。\n\t * - 当两边字段都是对象时,会继续执行嵌套合并。\n\t * - 现有属性可能会被新值覆盖。\n\t *\n\t * @param config 要合并进 `this.config` 的部分配置对象。\n\t * @returns 无返回值;内部 `config` 会被原地更新。\n\t */\n\tloadConfig(config: DozyConfig) {\n\t\t$loadOpt(this.config, config)\n\t}\n\tconfig: DozyConfig = {}\n}\nexport const dozy = new Dozy()\n","export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n","/* @ts-self-types=\"./index.d.ts\" */\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << Math.log2(alphabet.length - 1)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step | 0\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length >= size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","import { nanoid } from 'nanoid'\nimport imageCompression, { Options } from 'browser-image-compression'\nimport { $toDataUrlFromBase64 } from './Functions'\n\n/**\n * 将当前历史记录替换为规范化后的路径。\n *\n * @param s 目标路径;如果没有以 `/` 开头会自动补上。\n * @returns 无返回值。\n */\nexport function web$setPathTarget(s: string) {\n\tif (!s.startsWith('/')) s = '/' + s\n\thistory.replaceState(null, '', s)\n}\n\n/**\n * 读取并规范化当前浏览器地址信息。\n *\n * 行为说明:\n * - 会识别 `#/...` 这种 hash 路由跳转,并把地址改写成规范路径。\n * - 会去掉 `path` 前导 `/` 以及结尾的 `.html` / `.htm`。\n * - 会去掉 `search` 前面的 `?`。\n *\n * @returns 返回一个描述当前地址状态的对象,包含 `href`、`origin`、`target`、`host`、`path`、`search`、`standardJump` 等字段。\n */\nexport function web$pathStartData() {\n\tlet o = {\n\t\thref: '',\n\t\torigin: '',\n\t\ttarget: '',\n\t\thost: '',\n\t\tpath: '',\n\t\tsearch: '',\n\t\tstandardJump: false,\n\t}\n\tlet current = window.location.href\n\to.href = current\n\tlet index = current.indexOf('/', current.indexOf(':') + 3)\n\to.origin = current.substring(0, index)\n\to.target = current.substring(index)\n\to.host = o.origin.substring(o.origin.indexOf(':') + 3)\n\tlet hash = window.location.hash\n\to.standardJump = hash.startsWith('#/')\n\tif (o.standardJump) {\n\t\to.target = hash.substring(1)\n\t\tweb$setPathTarget(o.target)\n\t}\n\tlet xx = window.location.pathname\n\txx = xx.startsWith('/') ? xx.substring(1) : xx\n\tif (xx.endsWith('.html')) xx = xx.substring(0, xx.length - 5)\n\tif (xx.endsWith('.htm')) xx = xx.substring(0, xx.length - 4)\n\tif (xx.endsWith('/')) xx = xx.substring(0, xx.length - 1)\n\to.path = xx\n\tlet x = window.location.search\n\to.search = !x.startsWith('?') || x.length < 2 ? '' : x.substring(1)\n\treturn o\n}\nlet failed = false\n\n/**\n * 在浏览器中开启轻量级的生产环境防调试保护。\n *\n * 副作用包括:\n * - 禁用右键菜单。\n * - 阻止 `F12` 和 `Ctrl+Shift+I`。\n * - 周期性检测开发者工具是否可能被打开,若触发则跳转离开当前页。\n *\n * @returns 无返回值;在服务端环境下不会执行任何逻辑。\n */\nexport function web$enableProdProtector() {\n\tif (typeof window === 'undefined') return\n\tdocument.oncontextmenu = function (event: any) {\n\t\tif (window.event) {\n\t\t\tevent = window.event\n\t\t}\n\t\ttry {\n\t\t\tlet the = event.srcElement\n\t\t\tif (\n\t\t\t\t!(\n\t\t\t\t\t(the.tagName == 'INPUT' && the.type.toLowerCase() == 'text') ||\n\t\t\t\t\tthe.tagName == 'TEXTAREA'\n\t\t\t\t)\n\t\t\t)\n\t\t\t\treturn false\n\t\t\treturn false\n\t\t} catch (e) {\n\t\t\treturn false\n\t\t}\n\t}\n\tdocument.addEventListener('keydown', (event: KeyboardEvent) => {\n\t\tif (event.key === 'F12' || (event.ctrlKey && event.shiftKey && event.key === 'I')) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t})\n\tsetInterval(() => {\n\t\tif (\n\t\t\t(() => {\n\t\t\t\tconst threshold = Number(430) && 900\n\t\t\t\tlet dw = window.outerWidth - window.innerWidth\n\t\t\t\tlet dh = window.outerHeight - window.innerHeight\n\t\t\t\tconst widthThreshold = dw > threshold\n\t\t\t\tconst heightThreshold = dh > threshold\n\t\t\t\tif (widthThreshold || heightThreshold) return true\n\t\t\t\tconst startTime = performance.now()\n\t\t\t\tdebugger\n\t\t\t\tconst endTime = performance.now()\n\t\t\t\treturn endTime - startTime > 100\n\t\t\t})() &&\n\t\t\t!failed\n\t\t) {\n\t\t\tfailed = true\n\t\t\twindow.location.href = `https://www.bing.com/search?q=${nanoid()}`\n\t\t}\n\t}, 80)\n}\n\n/**\n * 在浏览器环境下把 `http:` 页面自动重定向到 `https:`。\n *\n * 例外情况:\n * - `localhost`\n * - `127.0.0.1`\n *\n * @returns 无返回值。\n */\nexport function web$enableHttpsRedirect() {\n\tif (typeof window !== 'undefined') {\n\t\tconst { protocol, hostname, href } = window.location\n\t\tif (\n\t\t\ttypeof href === 'string' &&\n\t\t\thref.startsWith('http:') &&\n\t\t\t!['localhost', '127.0.0.1'].includes(hostname) &&\n\t\t\tprotocol === 'http:'\n\t\t)\n\t\t\twindow.location.href = href.replace(/^http:/, 'https:')\n\t}\n}\n\n/**\n * 将当前页面重定向到另一个域名,同时保留路径、查询参数和哈希。\n *\n * @param newDomain 目标域名,可以带或不带结尾斜杠。\n * @returns 无返回值;在服务端环境下直接返回。\n */\nexport function web$redirectToDomain(newDomain: string) {\n\tif (typeof window === 'undefined') return\n\tconst { pathname, search, hash } = window.location\n\twindow.location.href = `${newDomain.replace(/\\/$/, '')}${pathname}${search}${hash}`\n}\n\n/**\n * 将文本复制到系统剪贴板。\n *\n * 行为说明:\n * - 会先对传入内容执行 `trim()`。\n * - 优先使用 `navigator.clipboard.writeText`。\n * - 现代剪贴板接口失败时会回退到 `$fallbackCopy`。\n * - 非浏览器环境下返回 `undefined`。\n *\n * @param content 要复制的文本内容。\n * @returns 成功时返回 `true`,回退复制失败时返回 `false`,非浏览器环境下返回 `undefined`。\n */\nexport async function $copy(content: string) {\n\tcontent = content?.trim() || ''\n\tif (typeof window === 'undefined') return\n\tif (navigator.clipboard?.writeText) {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(content)\n\t\t\treturn true\n\t\t} catch (error) {\n\t\t\treturn $fallbackCopy(content)\n\t\t}\n\t}\n\treturn $fallbackCopy(content)\n}\n\n/**\n * 使用隐藏的 `<textarea>` 作为兼容方案执行复制。\n *\n * @param content 要复制的文本,会先被 `trim()` 处理。\n * @returns 当 `document.execCommand('copy')` 返回成功时为 `true`,否则为 `false`。\n */\nexport function $fallbackCopy(content: string) {\n\tcontent = content?.trim() || ''\n\tconst textArea = document.createElement('textarea')\n\ttextArea.value = content\n\ttextArea.style.position = 'fixed'\n\ttextArea.style.opacity = '0'\n\tdocument.body.appendChild(textArea)\n\ttextArea.focus()\n\ttextArea.select()\n\ttry {\n\t\tconst successful = document.execCommand('copy')\n\t\treturn successful\n\t} catch (err) {\n\t\treturn false\n\t} finally {\n\t\tdocument.body.removeChild(textArea)\n\t}\n}\n\n/**\n * 替换当前地址栏的 hash 部分,保留 pathname 和 search 不变。\n *\n * @param hash 目标 hash 值;传入时不需要带 `#` 前缀(会自动补上)。传空字符串则清除 hash。\n */\nexport function web$replaceHash(hash: string) {\n\tif (typeof window === 'undefined') return\n\tconst h = hash ? (hash.startsWith('#') ? hash : '#' + hash) : ''\n\twindow.history.replaceState(null, '', window.location.pathname + window.location.search + h)\n}\n\n/**\n * 将当前页面的路径、查询参数和哈希编码成一个 URI 片段字符串。\n *\n * @param hash 可选的替代 hash;如果传入时没有 `#` 前缀会自动补上。\n * @returns 编码后的 URI 组件字符串。\n * @throws 在非浏览器环境中会抛出空字符串。\n */\nexport function web$encodeURI(hash?: string) {\n\tif (typeof window === 'undefined') throw ''\n\tlet h = location.hash\n\tif (h === '#') h = ''\n\tif (hash && !hash.startsWith('#')) hash = '#' + hash\n\treturn `${encodeURIComponent(location.pathname + location.search + (h || hash || ''))}`\n}\n\nexport const $compressImageDefaultOptions: Options = {\n\t/** 最大文件大小 (MB),默认为无穷大 */\n\tmaxSizeMB: 0.5,\n\t/** 是否使用 Web Worker (多线程) 进行压缩,避免卡顿 UI,默认为 true */\n\tuseWebWorker: true,\n\t/** 最大宽度或高度,图片将缩放以适应此尺寸,默认为 undefined */\n\tmaxWidthOrHeight: 1920,\n\t/** 初始压缩质量 (0-1),默认为 1.0 */\n\t// initialQuality: 1.0,\n\t/** 最大迭代次数,默认为 10 */\n\t// maxIteration: 10,\n\t/** 是否保留 Exif 信息 (如拍摄时间、地点等),默认为 false */\n\t// preserveExif: false,\n\t/** 输出文件的 MIME 类型,默认与原图相同 */\n\t// fileType: 'image/jpeg',\n}\n\n/**\n * 将浏览器中的 `File` 对象转换为 data URL 字符串。\n *\n * @param file 浏览器文件对象。\n * @returns 返回一个 Promise,成功时得到完整的 data URL 字符串。\n */\nasync function $fileToDataUrl(file: File) {\n\treturn new Promise<string>((resolve, reject) => {\n\t\tconst reader = new FileReader()\n\t\treader.onload = () => {\n\t\t\tif (typeof reader.result === 'string') {\n\t\t\t\tresolve(reader.result)\n\t\t\t} else {\n\t\t\t\treject(new Error('Failed to convert file to data URL.'))\n\t\t\t}\n\t\t}\n\t\treader.onerror = () => reject(new Error('Error reading file.'))\n\t\treader.readAsDataURL(file)\n\t})\n}\n\n/**\n * 压缩 Base64 图片并以 data URL 形式返回。\n *\n * 说明:\n * - 同时支持纯 Base64 和已有 data URL 两种输入。\n * - 如果输入无法被规范化为合法 data URL,则返回空字符串。\n *\n * @param base64 输入的图片数据。\n * @param options 可选压缩配置,会覆盖默认配置。\n * @returns 返回压缩后的 data URL;如果输入无效则返回空字符串。\n */\nexport async function $compressImageBase64(base64: string, options?: Options) {\n\tconst dataUrl = $toDataUrlFromBase64(base64)\n\tif (!dataUrl) return ''\n\n\tconst mime = /^data:([^;]+);base64,/i.exec(dataUrl)?.[1] || 'image/jpeg'\n\tconst response = await fetch(dataUrl)\n\tconst blob = await response.blob()\n\tconst ext = mime.split('/')[1]?.replace('jpeg', 'jpg') || 'jpg'\n\tconst file = new File([blob], `${nanoid()}.${ext}`, { type: blob.type || mime })\n\tconst compressedFile = await $compressImage(file, options)\n\treturn $fileToDataUrl(compressedFile)\n}\n\nexport async function $compressImage(file: File, options?: Options): Promise<File>\nexport async function $compressImage(files: File[], options?: Options): Promise<File[]>\n\n/**\n * 在浏览器中压缩一个或多个图片文件。\n *\n * 行为说明:\n * - 会将用户传入配置与 `$compressImageDefaultOptions` 合并。\n * - 会保留原始文件名。\n * - 某个文件压缩失败时,会直接返回该原始文件,不会抛出中断整个批次。\n *\n * @param input 单个 `File` 或 `File[]`。\n * @param options 可选压缩配置。\n * @returns 返回 Promise;输入是单文件时得到单个 `File`,输入是数组时得到 `File[]`。\n */\nexport async function $compressImage(\n\tinput: File | File[],\n\toptions?: Options,\n): Promise<File | File[]> {\n\tconst opts = { ...$compressImageDefaultOptions, ...options }\n\n\tconst processFile = async (f: File) => {\n\t\ttry {\n\t\t\tconst compressedBlob = await imageCompression(f, opts)\n\t\t\treturn new File([compressedBlob], f.name, { type: compressedBlob.type })\n\t\t} catch (error) {\n\t\t\tconsole.error('Image compression failed:', error)\n\t\t\treturn f\n\t\t}\n\t}\n\n\tif (Array.isArray(input)) {\n\t\treturn Promise.all(input.map(processFile))\n\t} else {\n\t\treturn processFile(input)\n\t}\n}\n","import { $s, $sc } from '..'\nimport { l } from '../lodash'\n\n/*\n<div ref={outerContainer current}>\n\t<div>\n\t\t{children}\n\t</div>\n</div>\n*/\n\n/** xls 横屏模式下的默认最大宽高比。 */\nexport const DEFAULT_XLS_MAX_ASPECT_RATIO = 1.2\n\nexport type ScaleComputer = undefined | ((scaler: Scaler) => number)\nexport type ScaleIniter = (scaler: Scaler) => void\nexport type ScaleResponsiveOptions = {\n\t/**\n\t * xls 横屏模式下的 base 乘数。\n\t *\n\t * 默认写成 `640 / 320`,方便直观看出是从 320 基准扩展到 640 基准。\n\t */\n\tbaseMultiplier?: number\n\t/**\n\t * xls 横屏模式下的最大宽高比。\n\t *\n\t * 默认 {@link DEFAULT_XLS_MAX_ASPECT_RATIO}。\n\t */\n\txlsMaxAspectRatio?: number\n\t/** xls 状态变化时触发,方便业务侧保存状态。 */\n\tsetXls?: (b: boolean) => void\n}\nclass Scaler {\n\theightElement!: HTMLElement\n\twidthElement!: HTMLElement\n\toffsetHorizontal = 8\n\t/** 未进入 xls 响应式扩展前的基础内容宽度,setBase 会更新这个值。 */\n\tsourceBase = 320\n\t#base = 320\n\tset base(val: number) {\n\t\tif ($sc(val)) this.#base = val\n\t}\n\tget base() {\n\t\treturn this.#base\n\t}\n\t#mainScale = 1\n\tset mainScale(val: number) {\n\t\tthis.#mainScale = val || 1\n\t\tthis.onMainScaleChange?.(this.#mainScale)\n\t\tif (typeof window === 'undefined') return\n\t\tthis.innerContainer.style.transform =\n\t\t\t'translateX(-50%) scale(' +\n\t\t\t(this.mainScale + this.offsetHorizontal / this.base) +\n\t\t\t', ' +\n\t\t\tthis.mainScale +\n\t\t\t')'\n\t}\n\tget mainScale() {\n\t\treturn this.#mainScale\n\t}\n\t#scaleComputer: ScaleComputer\n\tget scaleComputer() {\n\t\treturn this.#scaleComputer\n\t}\n\tset scaleComputer(val: ScaleComputer) {\n\t\tif (val) {\n\t\t\tthis.mainScale = val(this)\n\t\t}\n\t\tthis.#scaleComputer = val\n\t}\n\n\tonMainScaleChange?: (scale: number) => void\n\n\tinnerContainer\n\t/**\n\t * 创建内部缩放器状态对象。\n\t *\n\t * @param innerContainer 需要接收宽度与 transform 更新的内部元素。\n\t */\n\tconstructor(innerContainer: HTMLElement) {\n\t\tthis.innerContainer = innerContainer\n\t}\n}\n\n/**\n * 为固定宽度的内部容器启用响应式缩放行为。\n *\n * 典型结构:\n * - `outerContainer` 作为高度占位容器。\n * - 第一个子元素或显式传入的 `innerContainer` 会通过 CSS transform 进行视觉缩放。\n *\n * 运行时行为:\n * - 在非浏览器环境下会直接返回 `undefined`。\n * - 如果无法解析出有效的内部容器,会直接抛错。\n * - 会挂载 `resize` 和 `ResizeObserver` 监听。\n *\n * @param outerContainer 外层包裹元素。\n * @param initer 可选初始化器,用于配置内部 `Scaler` 实例。\n * @param innerContainer 可选的内部缩放元素,默认取 `outerContainer.children[0]`。\n * @returns 在浏览器环境下返回包含 `resizer`、`clean`、`setBase` 方法的对象;否则返回 `undefined`。\n */\nexport function enableScaler(\n\touterContainer: HTMLElement,\n\tiniter?: ScaleIniter,\n\tinnerContainer?: HTMLElement,\n) {\n\tif (typeof window === 'undefined') return\n\tinnerContainer ||= outerContainer.children[0] as any\n\tif (!innerContainer || !(innerContainer instanceof HTMLElement))\n\t\tthrow 'please make the right constructure'\n\tconst scaler = new Scaler(innerContainer)\n\tiniter?.(scaler)\n\tconst outer = outerContainer.style\n\touter.width = '0'\n\touter.marginLeft = 'auto'\n\touter.marginRight = 'auto'\n\tconst inner = innerContainer.style\n\tinner.width = scaler.base + 'px'\n\tinner.height = 'fit-content'\n\tinner.transformOrigin = 'top center'\n\tinner.marginLeft = 'auto'\n\tinner.marginRight = 'auto'\n\tconst resizer = () => {\n\t\tif (scaler.scaleComputer) {\n\t\t\tscaler.mainScale = scaler.scaleComputer(scaler)\n\t\t}\n\t}\n\tconst thr = l.throttle(resizer)\n\tconst setBase = (val: number) => {\n\t\tscaler.sourceBase = val\n\t\tscaler.base = val\n\t\tinner.width = scaler.base + 'px'\n\t\tthr()\n\t}\n\twindow.addEventListener('resize', thr)\n\tresizer()\n\t// Fix: DevTools open on refresh or late mount may report stale clientWidth.\n\t// Use rAF + setTimeout fallback to guarantee re-measure after layout settles.\n\trequestAnimationFrame(() => requestAnimationFrame(resizer))\n\tconst initTimer = setTimeout(resizer, 150)\n\tconst ro = new ResizeObserver((entries) => {\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.target === innerContainer) {\n\t\t\t\touterContainer.style.height = `${entry.contentRect.height * scaler.mainScale}px`\n\t\t\t}\n\t\t\tif (entry.target === scaler.heightElement || entry.target === scaler.widthElement) {\n\t\t\t\tresizer()\n\t\t\t}\n\t\t}\n\t})\n\tro.observe(innerContainer)\n\tro.observe(scaler.widthElement)\n\tro.observe(scaler.heightElement)\n\treturn {\n\t\tresizer,\n\t\tclean: () => {\n\t\t\tclearTimeout(initTimer)\n\t\t\twindow.removeEventListener('resize', thr)\n\t\t\tro.disconnect()\n\t\t},\n\t\tsetBase,\n\t}\n}\n\n/**\n * 构建一个适用于常见视口布局的标准缩放初始化器。\n *\n * 返回的初始化器会配置宽高测量元素,并根据可用宽度与可选的最大宽高比计算缩放比例。\n *\n * @param args 初始化配置项。\n * @param args.maxAspectRatio 计算可用宽度时允许的最大 `width / height` 比例,默认 `Infinity`。\n * @param args.setFullScreenWidth 可选回调,用于接收计算后的可用宽度。\n * @param args.setFullContentHeight 可选回调,用于接收缩放后的虚拟内容高度。\n * @param args.setMainScale 可选回调,在主缩放值变化时触发。\n * @param args.offsetHorizontal 可选的水平像素补偿值,默认额外溢出 `8px`(左右各 `4px`)。\n * @param args.heightElement 可选高度测量元素,默认使用 `document.documentElement`。\n * @param args.widthElement 可选宽度测量元素,默认使用 `document.documentElement`。\n * @param args.base 可选基础内容宽度。\n * @param args.responsive 传入后启用 xls 横屏响应式:宽大于高时切换 base 与 maxAspectRatio,并同步 `html[data-xad-xls]`。\n * @returns 返回一个可供 `enableScaler` 使用的 `ScaleIniter` 函数。\n */\nexport const standardIniter: (args: {\n\tmaxAspectRatio?: number\n\tsetFullScreenWidth?: (x: number) => void\n\tsetFullContentHeight?: (x: number) => void\n\tsetMainScale?: (x: number) => void\n\toffsetHorizontal?: number\n\theightElement?: HTMLElement\n\twidthElement?: HTMLElement\n\tbase?: number\n\tresponsive?: ScaleResponsiveOptions\n}) => ScaleIniter =\n\t({\n\t\tmaxAspectRatio = Infinity,\n\t\tsetFullScreenWidth,\n\t\tsetFullContentHeight,\n\t\tsetMainScale,\n\t\twidthElement,\n\t\theightElement,\n\t\tbase,\n\t\toffsetHorizontal,\n\t\tresponsive,\n\t}) =>\n\t(scaler) => {\n\t\tscaler.widthElement = widthElement || document.documentElement\n\t\tscaler.heightElement = heightElement || document.documentElement\n\t\tscaler.onMainScaleChange = setMainScale\n\t\tconst originBase = ($sc(base) ? base : scaler.base) as number\n\t\tscaler.sourceBase = originBase\n\t\tscaler.base = originBase\n\t\tif ($sc(offsetHorizontal)) scaler.offsetHorizontal = offsetHorizontal\n\t\tscaler.scaleComputer = (scaler) => {\n\t\t\tif (typeof window === 'undefined') return 1\n\t\t\tconst welement = scaler.widthElement\n\t\t\tconst helement = scaler.heightElement\n\t\t\tconst w = welement.clientWidth\n\t\t\tconst h = helement.clientHeight\n\t\t\tconst xls = !!responsive && w > h\n\t\t\tconst finalBase = xls\n\t\t\t\t? scaler.sourceBase * (responsive.baseMultiplier ?? 640 / 320)\n\t\t\t\t: scaler.sourceBase\n\t\t\tconst finalMaxAspectRatio = xls\n\t\t\t\t? (responsive.xlsMaxAspectRatio ?? DEFAULT_XLS_MAX_ASPECT_RATIO)\n\t\t\t\t: maxAspectRatio\n\t\t\t// xls 状态交给 html 属性驱动 Tailwind 自定义变体,比如 xls:grid-cols-5。\n\t\t\tdocument.documentElement.dataset.xadXls = xls ? '1' : '0'\n\t\t\tresponsive?.setXls?.(xls)\n\t\t\tscaler.base = finalBase\n\t\t\tscaler.innerContainer.style.width = scaler.base + 'px'\n\t\t\tconst fullScreenWidth = Math.min(w, h * finalMaxAspectRatio)\n\t\t\tconst fscl = fullScreenWidth / scaler.base\n\t\t\tsetFullScreenWidth?.(fullScreenWidth) // setFullScreenWidth 此引用不会过期\n\t\t\tsetFullContentHeight?.(h / fscl)\n\t\t\treturn fscl\n\t\t}\n\t}\n","import { $decodeBase64ToUnicode, $encodeUnicodeToBase64 } from '../x/Functions'\n\nexport class StringObfuscator {\n\tkey: string\n\tlength: number\n\n\t/**\n\t * 创建一个基于 XOR + Base64 的字符串混淆器。\n\t *\n\t * @param key 用于逐字符 XOR 的密钥。\n\t * @param length 可选的固定输出长度;传 `-1` 表示关闭固定长度模式。\n\t */\n\tconstructor(key: string, length: number = -1) {\n\t\tthis.key = key\n\t\tthis.length = length\n\t}\n\n\t/**\n\t * 用给定密钥对字符串的每个字符执行 XOR,必要时循环使用密钥。\n\t *\n\t * @param str 需要转换的源文本。\n\t * @param key 循环参与 XOR 的密钥。\n\t * @returns 返回 XOR 处理后的字符串;结果更像二进制文本,不保证可直接阅读。\n\t */\n\txors(str: string, key: string): string {\n\t\tlet result = ''\n\t\tfor (let i = 0; i < str.length; i++) {\n\t\t\tresult += String.fromCharCode(str.charCodeAt(i) ^ key.charCodeAt(i % key.length))\n\t\t}\n\t\treturn result\n\t}\n\n\t/**\n\t * 将明文混淆成一个适合放在 URL 中的 Base64 风格字符串。\n\t *\n\t * 行为说明:\n\t * - 固定长度模式下,输入会先用空格补齐再进行 XOR。\n\t * - 结果会移除 `=` 补位,并把 `/` 替换为 `-`、`+` 替换为 `_`。\n\t * - 固定长度模式下,Base64 输出还会被截断到配置长度。\n\t *\n\t * @param input 要混淆的明文。\n\t * @returns 返回适合常见 URL/路径场景使用的混淆字符串。\n\t */\n\ten(input: string): string {\n\t\tlet length = this.length\n\t\tlet free = length === -1\n\t\tconst paddedInput = free ? input : input.padEnd(length, ' ')\n\t\tconst obfuscated = this.xors(paddedInput, this.key)\n\t\tlet a = $encodeUnicodeToBase64(obfuscated)\n\t\tif (!free) a = a.slice(0, length)\n\t\treturn a.replace(/=/g, '').replace(/\\//g, '-').replace(/\\+/g, '_')\n\t}\n\n\t/**\n\t * 从混淆字符串中恢复原始明文。\n\t *\n\t * 说明:\n\t * - 会先把 URL 安全替换恢复后再做 Base64 解码。\n\t * - 反混淆后会去掉尾部空格,这对固定长度模式很重要。\n\t * - 如果输入格式不正确,底层解码步骤可能会抛错。\n\t *\n\t * @param obfuscated 由 `en` 生成的混淆字符串。\n\t * @returns 返回解码后的原文,尾部补位空格会被移除。\n\t * @throws 输入无效时会继续向外抛出底层解码错误。\n\t */\n\tde(obfuscated: string): string {\n\t\ttry {\n\t\t\tconst base64Decoded = $decodeBase64ToUnicode(\n\t\t\t\tobfuscated.replace(/-/g, '/').replace(/_/g, '+'),\n\t\t\t)\n\t\t\treturn this.xors(base64Decoded, this.key).trim()\n\t\t} catch (error) {\n\t\t\tthrow error\n\t\t}\n\t}\n}\n\n// const free = new StringObfuscator(SECRET, -1)\n\n// export function $enx(text: string) {\n// return cp.AES.encrypt(text, SECRET).toString();\n// return free.en(text)\n// }\n\n// export function $dex(ciphertext: string) {\n// \t// const bytes = cp.AES.decrypt(ciphertext, SECRET);\n// \t// return bytes.toString(cp.enc.Utf8);\n// \treturn free.de(ciphertext)\n// }\n","export function getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n\n if (typeof process === \"object\" && process.version !== undefined) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${\n process.arch\n })`;\n }\n\n return \"<environment undetectable>\";\n}\n","// @ts-check\n\nexport function register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce((callback, name) => {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(() => {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce((method, registered) => {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n","// @ts-check\n\nexport function addHook(state, kind, name, hook) {\n const orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = (method, options) => {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = (method, options) => {\n let result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then((result_) => {\n result = result_;\n return orig(result, options);\n })\n .then(() => {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = (method, options) => {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch((error) => {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n","// @ts-check\n\nexport function removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n const index = state.registry[name]\n .map((registered) => {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n","// @ts-check\n\nimport { register } from \"./lib/register.js\";\nimport { addHook } from \"./lib/add.js\";\nimport { removeHook } from \"./lib/remove.js\";\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nconst bind = Function.bind;\nconst bindable = bind.bind(bind);\n\nfunction bindApi(hook, state, name) {\n const removeHookRef = bindable(removeHook, null).apply(\n null,\n name ? [state, name] : [state]\n );\n hook.api = { remove: removeHookRef };\n hook.remove = removeHookRef;\n [\"before\", \"error\", \"after\", \"wrap\"].forEach((kind) => {\n const args = name ? [state, kind, name] : [state, kind];\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);\n });\n}\n\nfunction Singular() {\n const singularHookName = Symbol(\"Singular\");\n const singularHookState = {\n registry: {},\n };\n const singularHook = register.bind(null, singularHookState, singularHookName);\n bindApi(singularHook, singularHookState, singularHookName);\n return singularHook;\n}\n\nfunction Collection() {\n const state = {\n registry: {},\n };\n\n const hook = register.bind(null, state);\n bindApi(hook, state);\n\n return hook;\n}\n\nexport default { Singular, Collection };\n","// pkg/dist-src/defaults.js\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/defaults.js\nvar userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\nvar DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\"\n }\n};\n\n// pkg/dist-src/util/lowercase-keys.js\nfunction lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n\n// pkg/dist-src/util/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/util/merge-deep.js\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults)) Object.assign(result, { [key]: options[key] });\n else result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n\n// pkg/dist-src/util/remove-undefined-properties.js\nfunction removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === void 0) {\n delete obj[key];\n }\n }\n return obj;\n}\n\n// pkg/dist-src/merge.js\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n } else {\n options = Object.assign({}, route);\n }\n options.headers = lowercaseKeys(options.headers);\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n if (options.url === \"/graphql\") {\n if (defaults && defaults.mediaType.previews?.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n (preview) => !mergedOptions.mediaType.previews.includes(preview)\n ).concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n }\n return mergedOptions;\n}\n\n// pkg/dist-src/util/add-query-parameters.js\nfunction addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return url + separator + names.map((name) => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\n\n// pkg/dist-src/util/extract-url-variable-names.js\nvar urlVariableRegex = /\\{[^{}}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/(?:^\\W+)|(?:(?<!\\W)\\W+$)/g, \"\").split(/,/);\n}\nfunction extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n\n// pkg/dist-src/util/omit.js\nfunction omit(object, keysToOmit) {\n const result = { __proto__: null };\n for (const key of Object.keys(object)) {\n if (keysToOmit.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n}\n\n// pkg/dist-src/util/url-template.js\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"bigint\" || typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(\n encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n );\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n result.push(\n encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n );\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n tmp.push(encodeValue(operator, value2));\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n template = template.replace(\n /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n function(_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function(variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n }\n );\n if (template === \"/\") {\n return template;\n } else {\n return template.replace(/\\/$/, \"\");\n }\n}\n\n// pkg/dist-src/parse.js\nfunction parse(options) {\n let method = options.method.toUpperCase();\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\"\n ]);\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n headers.accept = headers.accept.split(/,/).map(\n (format) => format.replace(\n /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n `application/vnd$1$2.${options.mediaType.format}`\n )\n ).join(\",\");\n }\n if (url.endsWith(\"/graphql\")) {\n if (options.mediaType.previews?.length) {\n const previewsFromAcceptHeader = headers.accept.match(/(?<![\\w-])[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n }\n }\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n }\n }\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n return Object.assign(\n { method, url, headers },\n typeof body !== \"undefined\" ? { body } : null,\n options.request ? { request: options.request } : null\n );\n}\n\n// pkg/dist-src/endpoint-with-defaults.js\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS2 = merge(oldDefaults, newDefaults);\n const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);\n return Object.assign(endpoint2, {\n DEFAULTS: DEFAULTS2,\n defaults: withDefaults.bind(null, DEFAULTS2),\n merge: merge.bind(null, DEFAULTS2),\n parse\n });\n}\n\n// pkg/dist-src/index.js\nvar endpoint = withDefaults(null, DEFAULTS);\nexport {\n endpoint\n};\n","// pkg/dist-src/index.js\nimport { endpoint } from \"@octokit/endpoint\";\n\n// pkg/dist-src/defaults.js\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"10.0.8\";\n\n// pkg/dist-src/defaults.js\nvar defaults_default = {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`\n }\n};\n\n// pkg/dist-src/fetch-wrapper.js\nimport { safeParse } from \"fast-content-type-parse\";\nimport { JSONParse, JSONStringify } from \"json-with-bigint\";\n\n// pkg/dist-src/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/fetch-wrapper.js\nimport { RequestError } from \"@octokit/request-error\";\nvar noop = () => \"\";\nasync function fetchWrapper(requestOptions) {\n const fetch = requestOptions.request?.fetch || globalThis.fetch;\n if (!fetch) {\n throw new Error(\n \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n );\n }\n const log = requestOptions.request?.log || console;\n const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;\n const body = isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body) ? JSONStringify(requestOptions.body) : requestOptions.body;\n const requestHeaders = Object.fromEntries(\n Object.entries(requestOptions.headers).map(([name, value]) => [\n name,\n String(value)\n ])\n );\n let fetchResponse;\n try {\n fetchResponse = await fetch(requestOptions.url, {\n method: requestOptions.method,\n body,\n redirect: requestOptions.request?.redirect,\n headers: requestHeaders,\n signal: requestOptions.request?.signal,\n // duplex must be set if request.body is ReadableStream or Async Iterables.\n // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n ...requestOptions.body && { duplex: \"half\" }\n });\n } catch (error) {\n let message = \"Unknown Error\";\n if (error instanceof Error) {\n if (error.name === \"AbortError\") {\n error.status = 500;\n throw error;\n }\n message = error.message;\n if (error.name === \"TypeError\" && \"cause\" in error) {\n if (error.cause instanceof Error) {\n message = error.cause.message;\n } else if (typeof error.cause === \"string\") {\n message = error.cause;\n }\n }\n }\n const requestError = new RequestError(message, 500, {\n request: requestOptions\n });\n requestError.cause = error;\n throw requestError;\n }\n const status = fetchResponse.status;\n const url = fetchResponse.url;\n const responseHeaders = {};\n for (const [key, value] of fetchResponse.headers) {\n responseHeaders[key] = value;\n }\n const octokitResponse = {\n url,\n status,\n headers: responseHeaders,\n data: \"\"\n };\n if (\"deprecation\" in responseHeaders) {\n const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(\n `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n );\n }\n if (status === 204 || status === 205) {\n return octokitResponse;\n }\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return octokitResponse;\n }\n throw new RequestError(fetchResponse.statusText, status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status === 304) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(\"Not modified\", status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status >= 400) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(toErrorMessage(octokitResponse.data), status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;\n return octokitResponse;\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (!contentType) {\n return response.text().catch(noop);\n }\n const mimetype = safeParse(contentType);\n if (isJSONResponse(mimetype)) {\n let text = \"\";\n try {\n text = await response.text();\n return JSONParse(text);\n } catch (err) {\n return text;\n }\n } else if (mimetype.type.startsWith(\"text/\") || mimetype.parameters.charset?.toLowerCase() === \"utf-8\") {\n return response.text().catch(noop);\n } else {\n return response.arrayBuffer().catch(\n /* v8 ignore next -- @preserve */\n () => new ArrayBuffer(0)\n );\n }\n}\nfunction isJSONResponse(mimetype) {\n return mimetype.type === \"application/json\" || mimetype.type === \"application/scim+json\";\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\") {\n return data;\n }\n if (data instanceof ArrayBuffer) {\n return \"Unknown error\";\n }\n if (\"message\" in data) {\n const suffix = \"documentation_url\" in data ? ` - ${data.documentation_url}` : \"\";\n return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(\", \")}${suffix}` : `${data.message}${suffix}`;\n }\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint2 = oldEndpoint.defaults(newDefaults);\n const newApi = function(route, parameters) {\n const endpointOptions = endpoint2.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint2.parse(endpointOptions));\n }\n const request2 = (route2, parameters2) => {\n return fetchWrapper(\n endpoint2.parse(endpoint2.merge(route2, parameters2))\n );\n };\n Object.assign(request2, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n return endpointOptions.request.hook(request2, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n}\n\n// pkg/dist-src/index.js\nvar request = withDefaults(endpoint, defaults_default);\nexport {\n request\n};\n/* v8 ignore next -- @preserve */\n/* v8 ignore else -- @preserve */\n","const intRegex = /^-?\\d+$/;\nconst noiseValue = /^-?\\d+n+$/; // Noise - strings that match the custom format before being converted to it\nconst originalStringify = JSON.stringify;\nconst originalParse = JSON.parse;\nconst customFormat = /^-?\\d+n$/;\n\nconst bigIntsStringify = /([\\[:])?\"(-?\\d+)n\"($|([\\\\n]|\\s)*(\\s|[\\\\n])*[,\\}\\]])/g;\nconst noiseStringify =\n /([\\[:])?(\"-?\\d+n+)n(\"$|\"([\\\\n]|\\s)*(\\s|[\\\\n])*[,\\}\\]])/g;\n\n/**\n * @typedef {(this: any, key: string | number | undefined, value: any) => any} Replacer\n * @typedef {(key: string | number | undefined, value: any, context?: { source: string }) => any} Reviver\n */\n\n/**\n * Converts a JavaScript value to a JSON string.\n *\n * Supports serialization of BigInt values using two strategies:\n * 1. Custom format \"123n\" → \"123\" (universal fallback)\n * 2. Native JSON.rawJSON() (Node.js 22+, fastest) when available\n *\n * All other values are serialized exactly like native JSON.stringify().\n *\n * @param {*} value The value to convert to a JSON string.\n * @param {Replacer | Array<string | number> | null} [replacer]\n * A function that alters the behavior of the stringification process,\n * or an array of strings/numbers to indicate properties to exclude.\n * @param {string | number} [space]\n * A string or number to specify indentation or pretty-printing.\n * @returns {string} The JSON string representation.\n */\nconst JSONStringify = (value, replacer, space) => {\n if (\"rawJSON\" in JSON) {\n return originalStringify(\n value,\n (key, value) => {\n if (typeof value === \"bigint\") return JSON.rawJSON(value.toString());\n\n if (typeof replacer === \"function\") return replacer(key, value);\n\n if (Array.isArray(replacer) && replacer.includes(key)) return value;\n\n return value;\n },\n space,\n );\n }\n\n if (!value) return originalStringify(value, replacer, space);\n\n const convertedToCustomJSON = originalStringify(\n value,\n (key, value) => {\n const isNoise = typeof value === \"string\" && noiseValue.test(value);\n\n if (isNoise) return value.toString() + \"n\"; // Mark noise values with additional \"n\" to offset the deletion of one \"n\" during the processing\n\n if (typeof value === \"bigint\") return value.toString() + \"n\";\n\n if (typeof replacer === \"function\") return replacer(key, value);\n\n if (Array.isArray(replacer) && replacer.includes(key)) return value;\n\n return value;\n },\n space,\n );\n const processedJSON = convertedToCustomJSON.replace(\n bigIntsStringify,\n \"$1$2$3\",\n ); // Delete one \"n\" off the end of every BigInt value\n const denoisedJSON = processedJSON.replace(noiseStringify, \"$1$2$3\"); // Remove one \"n\" off the end of every noisy string\n\n return denoisedJSON;\n};\n\nconst featureCache = new Map();\n\n/**\n * Detects if the current JSON.parse implementation supports the context.source feature.\n *\n * Uses toString() fingerprinting to cache results and automatically detect runtime\n * replacements of JSON.parse (polyfills, mocks, etc.).\n *\n * @returns {boolean} true if context.source is supported, false otherwise.\n */\nconst isContextSourceSupported = () => {\n const parseFingerprint = JSON.parse.toString();\n\n if (featureCache.has(parseFingerprint)) {\n return featureCache.get(parseFingerprint);\n }\n\n try {\n const result = JSON.parse(\n \"1\",\n (_, __, context) => !!context?.source && context.source === \"1\",\n );\n featureCache.set(parseFingerprint, result);\n\n return result;\n } catch {\n featureCache.set(parseFingerprint, false);\n\n return false;\n }\n};\n\n/**\n * Reviver function that converts custom-format BigInt strings back to BigInt values.\n * Also handles \"noise\" strings that accidentally match the BigInt format.\n *\n * @param {string | number | undefined} key The object key.\n * @param {*} value The value being parsed.\n * @param {object} [context] Parse context (if supported by JSON.parse).\n * @param {Reviver} [userReviver] User's custom reviver function.\n * @returns {any} The transformed value.\n */\nconst convertMarkedBigIntsReviver = (key, value, context, userReviver) => {\n const isCustomFormatBigInt =\n typeof value === \"string\" && customFormat.test(value);\n if (isCustomFormatBigInt) return BigInt(value.slice(0, -1));\n\n const isNoiseValue = typeof value === \"string\" && noiseValue.test(value);\n if (isNoiseValue) return value.slice(0, -1);\n\n if (typeof userReviver !== \"function\") return value;\n\n return userReviver(key, value, context);\n};\n\n/**\n * Fast JSON.parse implementation (~2x faster than classic fallback).\n * Uses JSON.parse's context.source feature to detect integers and convert\n * large numbers directly to BigInt without string manipulation.\n *\n * Does not support legacy custom format from v1 of this library.\n *\n * @param {string} text JSON string to parse.\n * @param {Reviver} [reviver] Transform function to apply to each value.\n * @returns {any} Parsed JavaScript value.\n */\nconst JSONParseV2 = (text, reviver) => {\n return JSON.parse(text, (key, value, context) => {\n const isBigNumber =\n typeof value === \"number\" &&\n (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER);\n const isInt = context && intRegex.test(context.source);\n const isBigInt = isBigNumber && isInt;\n\n if (isBigInt) return BigInt(context.source);\n\n if (typeof reviver !== \"function\") return value;\n\n return reviver(key, value, context);\n });\n};\n\nconst MAX_INT = Number.MAX_SAFE_INTEGER.toString();\nconst MAX_DIGITS = MAX_INT.length;\nconst stringsOrLargeNumbers =\n /\"(?:\\\\.|[^\"])*\"|-?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+-]?[0-9]+)?/g;\nconst noiseValueWithQuotes = /^\"-?\\d+n+\"$/; // Noise - strings that match the custom format before being converted to it\n\n/**\n * Converts a JSON string into a JavaScript value.\n *\n * Supports parsing of large integers using two strategies:\n * 1. Classic fallback: Marks large numbers with \"123n\" format, then converts to BigInt\n * 2. Fast path (JSONParseV2): Uses context.source feature (~2x faster) when available\n *\n * All other JSON values are parsed exactly like native JSON.parse().\n *\n * @param {string} text A valid JSON string.\n * @param {Reviver} [reviver]\n * A function that transforms the results. This function is called for each member\n * of the object. If a member contains nested objects, the nested objects are\n * transformed before the parent object is.\n * @returns {any} The parsed JavaScript value.\n * @throws {SyntaxError} If text is not valid JSON.\n */\nconst JSONParse = (text, reviver) => {\n if (!text) return originalParse(text, reviver);\n\n if (isContextSourceSupported()) return JSONParseV2(text, reviver); // Shortcut to a faster (2x) and simpler version\n\n // Find and mark big numbers with \"n\"\n const serializedData = text.replace(\n stringsOrLargeNumbers,\n (text, digits, fractional, exponential) => {\n const isString = text[0] === '\"';\n const isNoise = isString && noiseValueWithQuotes.test(text);\n\n if (isNoise) return text.substring(0, text.length - 1) + 'n\"'; // Mark noise values with additional \"n\" to offset the deletion of one \"n\" during the processing\n\n const isFractionalOrExponential = fractional || exponential;\n const isLessThanMaxSafeInt =\n digits &&\n (digits.length < MAX_DIGITS ||\n (digits.length === MAX_DIGITS && digits <= MAX_INT)); // With a fixed number of digits, we can correctly use lexicographical comparison to do a numeric comparison\n\n if (isString || isFractionalOrExponential || isLessThanMaxSafeInt)\n return text;\n\n return '\"' + text + 'n\"';\n },\n );\n\n return originalParse(serializedData, (key, value, context) =>\n convertMarkedBigIntsReviver(key, value, context, reviver),\n );\n};\n\nexport { JSONStringify, JSONParse };\n","class RequestError extends Error {\n name;\n /**\n * http status code\n */\n status;\n /**\n * Request options that lead to the error.\n */\n request;\n /**\n * Response object if a response was received\n */\n response;\n constructor(message, statusCode, options) {\n super(message, { cause: options.cause });\n this.name = \"HttpError\";\n this.status = Number.parseInt(statusCode);\n if (Number.isNaN(this.status)) {\n this.status = 0;\n }\n /* v8 ignore else -- @preserve -- Bug with vitest coverage where it sees an else branch that doesn't exist */\n if (\"response\" in options) {\n this.response = options.response;\n }\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(\n /(?<! ) .*$/,\n \" [REDACTED]\"\n )\n });\n }\n requestCopy.url = requestCopy.url.replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\").replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n }\n}\nexport {\n RequestError\n};\n","// pkg/dist-src/index.js\nimport { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/with-defaults.js\nimport { request as Request2 } from \"@octokit/request\";\n\n// pkg/dist-src/graphql.js\nimport { request as Request } from \"@octokit/request\";\n\n// pkg/dist-src/error.js\nfunction _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nvar GraphqlResponseError = class extends Error {\n constructor(request2, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request2;\n this.headers = headers;\n this.response = response;\n this.errors = response.errors;\n this.data = response.data;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n name = \"GraphqlResponseError\";\n errors;\n data;\n};\n\n// pkg/dist-src/graphql.js\nvar NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\",\n \"operationName\"\n];\nvar FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nvar GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request2, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(\n new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n );\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;\n return Promise.reject(\n new Error(\n `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n )\n );\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(\n parsedOptions\n ).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request2(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(\n requestOptions,\n headers,\n response.data\n );\n }\n return response.data.data;\n });\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(request2, newDefaults) {\n const newRequest = request2.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: newRequest.endpoint\n });\n}\n\n// pkg/dist-src/index.js\nvar graphql2 = withDefaults(request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\nexport {\n GraphqlResponseError,\n graphql2 as graphql,\n withCustomRequest\n};\n","// pkg/dist-src/is-jwt.js\nvar b64url = \"(?:[a-zA-Z0-9_-]+)\";\nvar sep = \"\\\\.\";\nvar jwtRE = new RegExp(`^${b64url}${sep}${b64url}${sep}${b64url}$`);\nvar isJWT = jwtRE.test.bind(jwtRE);\n\n// pkg/dist-src/auth.js\nasync function auth(token) {\n const isApp = isJWT(token);\n const isInstallation = token.startsWith(\"v1.\") || token.startsWith(\"ghs_\");\n const isUserToServer = token.startsWith(\"ghu_\");\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token,\n tokenType\n };\n}\n\n// pkg/dist-src/with-authorization-prefix.js\nfunction withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n\n// pkg/dist-src/hook.js\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(\n route,\n parameters\n );\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n\n// pkg/dist-src/index.js\nvar createTokenAuth = function createTokenAuth2(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\n \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n );\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\nexport {\n createTokenAuth\n};\n","const VERSION = \"7.0.6\";\nexport {\n VERSION\n};\n","import { getUserAgent } from \"universal-user-agent\";\nimport Hook from \"before-after-hook\";\nimport { request } from \"@octokit/request\";\nimport { withCustomRequest } from \"@octokit/graphql\";\nimport { createTokenAuth } from \"@octokit/auth-token\";\nimport { VERSION } from \"./version.js\";\nconst noop = () => {\n};\nconst consoleWarn = console.warn.bind(console);\nconst consoleError = console.error.bind(console);\nfunction createLogger(logger = {}) {\n if (typeof logger.debug !== \"function\") {\n logger.debug = noop;\n }\n if (typeof logger.info !== \"function\") {\n logger.info = noop;\n }\n if (typeof logger.warn !== \"function\") {\n logger.warn = consoleWarn;\n }\n if (typeof logger.error !== \"function\") {\n logger.error = consoleError;\n }\n return logger;\n}\nconst userAgentTrail = `octokit-core.js/${VERSION} ${getUserAgent()}`;\nclass Octokit {\n static VERSION = VERSION;\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(\n Object.assign(\n {},\n defaults,\n options,\n options.userAgent && defaults.userAgent ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`\n } : null\n )\n );\n }\n };\n return OctokitWithDefaults;\n }\n static plugins = [];\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n const currentPlugins = this.plugins;\n const NewOctokit = class extends this {\n static plugins = currentPlugins.concat(\n newPlugins.filter((plugin) => !currentPlugins.includes(plugin))\n );\n };\n return NewOctokit;\n }\n constructor(options = {}) {\n const hook = new Hook.Collection();\n const requestDefaults = {\n baseUrl: request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\")\n }),\n mediaType: {\n previews: [],\n format: \"\"\n }\n };\n requestDefaults.headers[\"user-agent\"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = request.defaults(requestDefaults);\n this.graphql = withCustomRequest(this.request).defaults(requestDefaults);\n this.log = createLogger(options.log);\n this.hook = hook;\n if (!options.authStrategy) {\n if (!options.auth) {\n this.auth = async () => ({\n type: \"unauthenticated\"\n });\n } else {\n const auth = createTokenAuth(options.auth);\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n } else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(\n Object.assign(\n {\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions\n },\n options.auth\n )\n );\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n const classConstructor = this.constructor;\n for (let i = 0; i < classConstructor.plugins.length; ++i) {\n Object.assign(this, classConstructor.plugins[i](this, options));\n }\n }\n // assigned during constructor\n request;\n graphql;\n log;\n hook;\n // TODO: type `octokit.auth` based on passed options.authStrategy\n auth;\n}\nexport {\n Octokit\n};\n","import { Octokit } from '@octokit/core'\nimport {\n\t$decodeBase64ToBinary,\n\t$decodeBase64ToUnicode,\n\t$encodeUnicodeToBase64,\n\t$formatDate,\n\t$s,\n} from '../x/Functions'\nimport { $jsonParse, $jsonStringify } from './Store'\n\ntype q = any\n\n/**\n * RepoStore - GitHub 仓库内容存储类\n *\n * 基于 Octokit 实现的 GitHub 仓库文件操作类,支持文件的增删改查、JSON 序列化存储、\n * 目录列表等功能。所有操作都通过 GitHub REST API v3 的 Contents API 完成。\n *\n * @remarks\n * - 支持自动处理 Base64 编码/解码(GitHub API 要求文件内容使用 Base64 编码)\n * - 内置冲突重试机制(HTTP 409 冲突时自动重试)\n * - 提供原始模式和文本模式的切换(raw 参数)\n * - 可通过重写 `_process` 和 `path` 方法实现自定义处理(如加密、路径映射等)\n *\n * @example\n * ```typescript\n * const repo = new RepoStore('github-token', 'username', 'repo-name')\n *\n * // 存储 JSON 数据\n * await repo.putJson('data/config.json', { key: 'value' })\n *\n * // 读取 JSON 数据\n * const data = await repo.getJson('data/config.json')\n *\n * // 列出目录\n * const files = await repo.list('data')\n * ```\n */\nexport class RepoStore {\n\t/**\n\t * Octokit 实例,用于与 GitHub API 交互\n\t * @internal\n\t */\n\tware: Octokit\n\n\t/**\n\t * 仓库所有者(用户名或组织名)\n\t */\n\towner: string\n\n\t/**\n\t * 仓库名称\n\t */\n\trepo: string\n\n\t/**\n\t * HTTP 请求头配置\n\t * @property {'\"\"'} ['If-None-Match'] - 设置为空字符串以禁用 ETag 缓存,确保获取最新内容\n\t * @property {string} ['Cache-Control'] - 可选,用于禁用缓存(当前已注释)\n\t */\n\theaders = {\n\t\t// 'Cache-Control': 'no-cache',\n\t\t'If-None-Match': '\"\"',\n\t}\n\n\t/**\n\t * 内容预处理方法(可重写)\n\t *\n\t * 在内容被编码存储前或解码读取后调用,用于对内容进行自定义处理(如加密/解密、压缩/解压等)。\n\t * 这是一个钩子方法,子类可以重写以实现特定的内容转换逻辑。\n\t *\n\t * @param content - 要处理的内容字符串\n\t * @param en - 处理方向:`true` 表示编码(存储前),`false` 表示解码(读取后)\n\t * @returns 处理后的内容字符串\n\t *\n\t * @remarks\n\t * - 默认实现直接返回原内容,不做任何处理\n\t * - 当 `en=true` 时,在 Base64 编码之前调用\n\t * - 当 `en=false` 时,在 Base64 解码之后调用\n\t *\n\t * @example\n\t * ```typescript\n\t * class EncryptedRepoStore extends RepoStore {\n\t * _process(content: string, en: boolean) {\n\t * return en ? encrypt(content) : decrypt(content)\n\t * }\n\t * }\n\t * ```\n\t */\n\t_process(content: string, en: boolean) {\n\t\treturn content\n\t}\n\n\t/**\n\t * 路径处理方法(可重写)\n\t *\n\t * 在每次操作路径之前调用,用于对路径进行自定义转换(如添加前缀、路径映射等)。\n\t * 这是一个钩子方法,子类可以重写以实现特定的路径处理逻辑。\n\t *\n\t * @param path - 原始路径\n\t * @returns 处理后的路径\n\t *\n\t * @remarks\n\t * - 默认实现直接返回原路径,不做任何处理\n\t * - 所有公开方法(get、put、del、det、list 等)都会先调用此方法处理路径\n\t *\n\t * @example\n\t * ```typescript\n\t * class PrefixedRepoStore extends RepoStore {\n\t * path(path: string) {\n\t * return `data/${path}`\n\t * }\n\t * }\n\t * ```\n\t */\n\tpath(path: string) {\n\t\treturn path\n\t}\n\n\t/**\n\t * 检测文件或目录是否存在\n\t *\n\t * @param path - 要检测的文件或目录路径(相对于仓库根目录)\n\t * @returns `true` 表示存在,`false` 表示不存在(HTTP 404)\n\t *\n\t * @throws {Error} 当遇到非 404 错误时抛出异常(如权限不足、API 限流等)\n\t *\n\t * @remarks\n\t * - 使用 GitHub API 的 GET contents 端点进行检测\n\t * - 仅对 HTTP 404 错误返回 false,其他错误会向上抛出\n\t * - 会自动应用 `path()` 方法处理路径\n\t *\n\t * @example\n\t * ```typescript\n\t * if (await repo.det('config.json')) {\n\t * console.log('文件存在')\n\t * } else {\n\t * console.log('文件不存在')\n\t * }\n\t * ```\n\t */\n\tasync det(path: string) {\n\t\tpath = this.path(path)\n\t\ttry {\n\t\t\tawait this.ware.request('GET /repos/{owner}/{repo}/contents/{path}', {\n\t\t\t\towner: this.owner,\n\t\t\t\trepo: this.repo,\n\t\t\t\tpath: path,\n\t\t\t\theaders: this.headers,\n\t\t\t})\n\t\t\treturn true\n\t\t} catch (e: q) {\n\t\t\tif (e.status === 404) return false\n\t\t\tthrow e\n\t\t}\n\t}\n\n\t/**\n\t * 获取文件或目录内容\n\t *\n\t * @param path - 文件或目录路径(相对于仓库根目录)\n\t * @param raw - 原始模式标志\n\t * - `false`(默认):自动解码 Base64 内容,返回文本字符串或二进制数据\n\t * - `true`:返回 GitHub API 响应的原始 Base64 编码内容\n\t * @returns\n\t * - 当 `raw=true`:返回 Base64 编码的字符串\n\t * - 当 `raw=false` 且内容是文本:返回解码后的 Unicode 字符串(会经过 `_process` 处理)\n\t * - 当 `raw=false` 且内容是二进制:返回 `ArrayBuffer`\n\t * - 当 `data.content` 为空时:返回完整的 API 响应数据(可能是目录列表或文件元数据)\n\t *\n\t * @throws {Error} 当 GitHub API 请求失败时抛出异常(如文件不存在、权限不足等)\n\t *\n\t * @remarks\n\t * - 文本内容会尝试使用 `$decodeBase64ToUnicode` 解码,失败则使用 `$decodeBase64ToBinary` 解码\n\t * - 返回目录列表时,`data.content` 为空,此时返回原始响应数据\n\t * - 会自动应用 `path()` 方法处理路径\n\t * - 解码后的文本会经过 `_process(content, false)` 处理\n\t *\n\t * @see https://docs.github.com/en/rest/repos/contents\n\t *\n\t * @example\n\t * ```typescript\n\t * // 获取文本文件\n\t * const text = await repo.get('README.md')\n\t * console.log(text) // 解码后的文本字符串\n\t *\n\t * // 获取目录列表(返回原始数据)\n\t * const dirData = await repo.get('src')\n\t * console.log(dirData) // 数组,包含目录下的文件信息\n\t *\n\t * // 获取原始 Base64 内容\n\t * const base64 = await repo.get('image.png', true)\n\t * ```\n\t */\n\tasync get(path: string, raw: boolean = false) {\n\t\tpath = this.path(path)\n\t\tlet x = await this.ware.request('GET /repos/{owner}/{repo}/contents/{path}', {\n\t\t\towner: this.owner,\n\t\t\trepo: this.repo,\n\t\t\tpath: path,\n\t\t\theaders: this.headers,\n\t\t})\n\t\tlet data = <q>x.data\n\t\tif (raw) return data.content\n\t\tif (!$s(data.content)) return data\n\t\ttry {\n\t\t\tlet t = $decodeBase64ToUnicode(data.content)\n\t\t\treturn this._process(t, false)\n\t\t} catch (e) {}\n\t\treturn $decodeBase64ToBinary(data.content)\n\t}\n\n\t/**\n\t * 生成提交信息(commit message)\n\t *\n\t * @returns 格式化的日期时间字符串,用作 Git 提交信息\n\t *\n\t * @remarks\n\t * - 使用 `$formatDate` 格式化当前时间\n\t * - 每次调用都会生成新的时间戳\n\t * - 可以通过重写此方法自定义提交信息格式\n\t *\n\t * @example\n\t * ```typescript\n\t * class CustomMsgRepoStore extends RepoStore {\n\t * msg() {\n\t * return `Update at ${new Date().toISOString()}`\n\t * }\n\t * }\n\t * ```\n\t */\n\tmsg() {\n\t\treturn $formatDate(new Date())\n\t}\n\n\t/**\n\t * 创建或更新文件内容\n\t *\n\t * @param path - 文件路径(相对于仓库根目录)\n\t * @param content - 要存储的内容(字符串)\n\t * @param raw - 原始模式标志\n\t * - `false`(默认):将内容视为文本,经过 `_process` 处理后 Base64 编码再存储\n\t * - `true`:假定 content 已经是 Base64 编码,直接存储(跳过编码步骤)\n\t * @returns 无返回值\n\t *\n\t * @throws {Error} 当遇到非 409 错误时抛出异常(如权限不足、API 限流等)\n\t *\n\t * @remarks\n\t * - **冲突处理**:当遇到 HTTP 409(冲突)错误时,会自动重试一次(递归调用自身)\n\t * - **SHA 处理**:如果文件已存在,会自动获取其 SHA 值用于 API 调用(GitHub API 要求提供 SHA 以更新文件)\n\t * - **编码流程**:非 raw 模式下,内容会先经过 `_process(content, true)` 处理,然后 Base64 编码\n\t * - **空文件检测**:使用 `det()` 方法检查文件是否存在,不存在时 sha 为 undefined(创建新文件)\n\t * - 会自动应用 `path()` 方法处理路径\n\t *\n\t * @see https://docs.github.com/en/rest/repos/contents#create-or-update-file-contents\n\t *\n\t * @example\n\t * ```typescript\n\t * // 存储文本文件\n\t * await repo.put('hello.txt', 'Hello, World!')\n\t *\n\t * // 存储 JSON(推荐用 putJson)\n\t * await repo.put('data.json', JSON.stringify({ a: 1 }))\n\t *\n\t * // 存储原始 Base64 内容\n\t * const base64 = btoa('binary data')\n\t * await repo.put('data.bin', base64, true)\n\t * ```\n\t */\n\tasync put(path: string, content: string, raw: boolean = false) {\n\t\tlet srcPath = path\n\t\tlet srcContent = content\n\t\tpath = this.path(path)\n\t\ttry {\n\t\t\tlet sha: undefined | string = undefined\n\t\t\tif (await this.det(srcPath)) sha = (<q>(\n\t\t\t\t\tawait this.ware.request('GET /repos/{owner}/{repo}/contents/{path}', {\n\t\t\t\t\t\towner: this.owner,\n\t\t\t\t\t\trepo: this.repo,\n\t\t\t\t\t\tpath: path,\n\t\t\t\t\t\theaders: this.headers,\n\t\t\t\t\t})\n\t\t\t\t).data).sha\n\t\t\tif (!raw) {\n\t\t\t\tcontent = this._process(content, true)\n\t\t\t\tcontent = $encodeUnicodeToBase64(content)\n\t\t\t}\n\t\t\tawait this.ware.request('PUT /repos/{owner}/{repo}/contents/{path}', {\n\t\t\t\towner: this.owner,\n\t\t\t\trepo: this.repo,\n\t\t\t\tpath: path,\n\t\t\t\tmessage: this.msg(),\n\t\t\t\theaders: this.headers,\n\t\t\t\tcontent,\n\t\t\t\tsha,\n\t\t\t})\n\t\t} catch (e: q) {\n\t\t\tif (e.status === 409) {\n\t\t\t\tawait this.put(srcPath, srcContent, raw)\n\t\t\t} else throw e\n\t\t}\n\t}\n\n\t/**\n\t * 删除文件或目录\n\t *\n\t * @param path - 要删除的文件或目录路径(相对于仓库根目录)\n\t * @returns 无返回值\n\t *\n\t * @throws {Error} 当遇到非 409 错误时抛出异常(如权限不足、API 限流等)\n\t *\n\t * @remarks\n\t * - **幂等性**:如果文件不存在(通过 `det()` 检测),方法会直接返回,不会报错\n\t * - **冲突处理**:当遇到 HTTP 409(冲突)错误时,会自动重试一次(递归调用自身)\n\t * - **SHA 要求**:GitHub API 删除文件需要提供文件的 SHA 值,此方法会自动获取\n\t * - **目录删除**:GitHub API 不支持直接删除目录,需要递归删除目录下的所有文件\n\t * - 会自动应用 `path()` 方法处理路径\n\t *\n\t * @see https://docs.github.com/en/rest/repos/contents#delete-a-file\n\t *\n\t * @example\n\t * ```typescript\n\t * // 删除文件\n\t * await repo.del('old-file.txt')\n\t *\n\t * // 删除不存在的文件(不会报错)\n\t * await repo.del('non-existent.txt')\n\t * ```\n\t */\n\tasync del(path: string) {\n\t\tlet srcPath = path\n\t\tpath = this.path(path)\n\t\ttry {\n\t\t\tif (!(await this.det(srcPath))) return\n\t\t\tlet sha = (<q>(\n\t\t\t\tawait this.ware.request('GET /repos/{owner}/{repo}/contents/{path}', {\n\t\t\t\t\towner: this.owner,\n\t\t\t\t\trepo: this.repo,\n\t\t\t\t\tpath: path,\n\t\t\t\t\theaders: this.headers,\n\t\t\t\t})\n\t\t\t).data).sha\n\t\t\tawait this.ware.request('DELETE /repos/{owner}/{repo}/contents/{path}', {\n\t\t\t\towner: this.owner,\n\t\t\t\trepo: this.repo,\n\t\t\t\tpath: path,\n\t\t\t\theaders: this.headers,\n\t\t\t\tmessage: this.msg(),\n\t\t\t\tsha,\n\t\t\t})\n\t\t} catch (e: q) {\n\t\t\tif (e.status === 409) {\n\t\t\t\tawait this.del(srcPath)\n\t\t\t} else throw e\n\t\t}\n\t}\n\n\t/**\n\t * 安全获取 JSON 数据(忽略 404 错误)\n\t *\n\t * 与 `getJson` 类似,但当文件不存在(HTTP 404)时不会抛出异常,而是返回 undefined。\n\t * 适用于不确定文件是否存在的场景。\n\t *\n\t * @param path - JSON 文件路径(相对于仓库根目录)\n\t * @returns\n\t * - 解析后的 JSON 对象(成功时)\n\t * - `undefined`(当文件不存在,即 HTTP 404 时)\n\t *\n\t * @throws {Error} 当遇到非 404 错误时抛出异常(如权限不足、JSON 解析错误等)\n\t *\n\t * @remarks\n\t * - 仅在 HTTP 状态码为 404 时静默失败,其他错误会正常抛出\n\t * - 内部调用 `getJson` 方法,因此会经过 Base64 解码和 `_process` 处理\n\t *\n\t * @example\n\t * ```typescript\n\t * // 安全读取,文件可能不存在\n\t * const config = await repo.c_getJson('config.json')\n\t * if (config) {\n\t * console.log('配置已加载', config)\n\t * } else {\n\t * console.log('配置文件不存在,使用默认配置')\n\t * }\n\t * ```\n\t */\n\tasync c_getJson(path: string) {\n\t\ttry {\n\t\t\treturn await this.getJson(path)\n\t\t} catch (error: q) {\n\t\t\tif (error.status !== 404) throw error\n\t\t}\n\t}\n\n\t/**\n\t * 获取并解析 JSON 数据\n\t *\n\t * 从仓库读取文件内容,并使用 `$jsonParse` 解析为 JSON 对象。\n\t *\n\t * @param path - JSON 文件路径(相对于仓库根目录)\n\t * @returns 解析后的 JSON 对象(类型由调用者指定)\n\t *\n\t * @throws {Error} 当文件不存在、读取失败或 JSON 解析失败时抛出异常\n\t *\n\t * @remarks\n\t * - 内部调用 `get()` 方法获取内容,因此会经过 Base64 解码和 `_process` 处理\n\t * - 使用 `$jsonParse` 进行解析(可能包含自定义的 JSON 解析逻辑,如日期恢复等)\n\t * - 如果文件内容不是有效的 JSON,会抛出异常\n\t *\n\t * @example\n\t * ```typescript\n\t * interface Config {\n\t * theme: string\n\t * version: number\n\t * }\n\t *\n\t * const config = await repo.getJson<Config>('config.json')\n\t * console.log(config.theme)\n\t * ```\n\t */\n\tasync getJson(path: string) {\n\t\tlet a = <q>await this.get(path)\n\t\ttry {\n\t\t\treturn $jsonParse(a)\n\t\t} catch (error) {\n\t\t\tthrow error\n\t\t}\n\t}\n\n\t/**\n\t * 将对象序列化为 JSON 并存储到仓库\n\t *\n\t * 使用 `$jsonStringify` 将对象序列化为 JSON 字符串,然后调用 `put` 方法存储。\n\t * 这是存储结构化数据(对象、数组等)的便捷方法。\n\t *\n\t * @param path - 目标文件路径(相对于仓库根目录)\n\t * @param content - 要存储的对象(会被序列化为 JSON)\n\t * @returns `put` 方法的返回值\n\t *\n\t * @throws {Error} 当序列化失败或存储失败时抛出异常\n\t *\n\t * @remarks\n\t * - 使用 `$jsonStringify` 进行序列化(可能包含自定义的 JSON 序列化逻辑,如日期处理等)\n\t * - 默认以文本模式存储(非 raw),会经过 Base64 编码\n\t * - 推荐使用此方法而非手动 `JSON.stringify` + `put`,以保持序列化逻辑一致\n\t *\n\t * @example\n\t * ```typescript\n\t * // 存储对象\n\t * await repo.putJson('user.json', {\n\t * name: 'Alice',\n\t * age: 30,\n\t * tags: ['developer', 'designer']\n\t * })\n\t *\n\t * // 读取回来\n\t * const user = await repo.getJson('user.json')\n\t * ```\n\t */\n\tasync putJson(path: string, content: Object) {\n\t\treturn await this.put(path, $jsonStringify(content))\n\t}\n\n\t/**\n\t * 列出目录下的文件和子目录\n\t *\n\t * 获取指定路径的内容列表,返回精简的文件信息数组。\n\t *\n\t * @param path - 目录路径(相对于仓库根目录)\n\t * @returns\n\t * - 成功时:包含文件信息的数组,每个元素包含 `name`、`path`、`type` 属性\n\t * - 如果路径不是目录或获取失败:返回 `undefined`\n\t *\n\t * @throws {Error} 当 GitHub API 请求失败时抛出异常\n\t *\n\t * @remarks\n\t * - 返回的 `type` 字段可能是 `'file'`、`'dir'` 或 `'symlink'`\n\t * - 返回的 `path` 是文件的完整路径(相对于仓库根目录)\n\t * - 如果路径指向文件而非目录,GitHub API 返回的不是数组,此时方法返回 undefined\n\t * - 会自动应用 `path()` 方法处理路径\n\t *\n\t * @see https://docs.github.com/en/rest/repos/contents#get-contents\n\t *\n\t * @example\n\t * ```typescript\n\t * // 列出目录内容\n\t * const files = await repo.list('src')\n\t * if (files) {\n\t * for (const file of files) {\n\t * console.log(`${file.type}: ${file.name} (${file.path})`)\n\t * }\n\t * }\n\t *\n\t * // 过滤只显示文件\n\t * const onlyFiles = files?.filter(f => f.type === 'file')\n\t * ```\n\t */\n\tasync list(path: string) {\n\t\tlet a = <q>await this.get(path)\n\t\tif (!(a instanceof Array)) return\n\t\treturn a.map((v) => ({\n\t\t\tname: v.name,\n\t\t\tpath: v.path,\n\t\t\ttype: v.type,\n\t\t}))\n\t}\n\n\t/**\n\t * 创建 RepoStore 实例\n\t *\n\t * @param x0 - GitHub Personal Access Token(个人访问令牌)\n\t * - 需要具有对目标仓库的读写权限\n\t * - 可在 https://github.com/settings/tokens 创建\n\t * @param user - 仓库所有者(用户名或组织名)\n\t * @param repo - 仓库名称\n\t *\n\t * @remarks\n\t * - 初始化时会创建 Octokit 实例,用于后续的 API 调用\n\t * - Token 会通过 `auth` 配置传递给 Octokit\n\t * - 确保 Token 具有 `repo` 或 `contents:write` 权限\n\t *\n\t * @example\n\t * ```typescript\n\t * // 基本用法\n\t * const repo = new RepoStore(\n\t * 'ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // GitHub Token\n\t * 'myusername', // 所有者\n\t * 'my-repo' // 仓库名\n\t * )\n\t *\n\t * // 组织仓库\n\t * const orgRepo = new RepoStore(\n\t * process.env.GITHUB_TOKEN,\n\t * 'my-organization',\n\t * 'org-repo'\n\t * )\n\t * ```\n\t */\n\tconstructor(x0: string, user: string, repo: string) {\n\t\tthis.ware = new Octokit({ auth: x0 })\n\t\tthis.owner = user\n\t\tthis.repo = repo\n\t}\n}\n","export type Any = Items<any>\nexport type Null = undefined | null | void\n\n/**\n * 判断一个值在本包语义下是否属于空值。\n *\n * 该函数会把以下值视为空值:\n * - `null`\n * - `undefined`\n * - `void 0`\n *\n\t * @typeParam T 原始候选类型。\n\t * @param v 要检测的值。\n\t * @returns 当 `v` 是 `null` 或 `undefined` 时返回 `true`,否则返回 `false`。\n */\nexport function isNull<T>(v: T | Null): v is Null {\n\treturn v === null || v === undefined || v === void 0\n}\nexport type Nullable<T> = T | Null\nexport type Items<T> = { [x: string]: T }\n\nexport type Hel = HTMLElement\nexport type UNumber = number | [number, number]\nexport type Coord = [number, number]\nexport type Coord3 = [number, number, number]\nexport type IOpt = Object | undefined\nexport type Atoa<T> = (i: T) => T\n","export let _res = (x: string) => x\n\nimport { Items } from '../Interface.js'\nimport { Gens, RainbowGen } from './Gens.js'\nexport function __GensDirectives() {\n\tlet v: Items<(...args: string[]) => string> = {\n\t\ticon: (args) => {\n\t\t\targs =\n\t\t\t\targs.startsWith('http://') ||\n\t\t\t\targs.startsWith('https://') ||\n\t\t\t\targs.startsWith('data:')\n\t\t\t\t\t? args\n\t\t\t\t\t: _res('icons/' + args)\n\t\t\treturn `<div class=\"icon\" style='background-image: url(${args})'></div>`\n\t\t},\n\t\tauBorder: (args) => Gens(`{[^Y^${args}^a^]^Y}^u`),\n\t\tfrac: (a, b) => Gens(`{${a}^g^/^Y^${b}^a}^u`),\n\t\trya: (a, b) => Gens(`{${a}^r^/^Y^${b}^a}^u`),\n\t\trb: (args) => Gens(RainbowGen.staticRainbowHTMLRaw(args)),\n\t\trbd: (args) => Gens(RainbowGen.staticRainbowHTMLRaw(args, true)),\n\t\tdrb0: (args) => Gens(RainbowGen.rainbowHTMLRaw(args)),\n\t\tdrb1: (args) => Gens(RainbowGen.rainbowHTMLRaw(args, 1)),\n\t\tdrb2: (args) => Gens(RainbowGen.rainbowHTMLRaw(args, 2)),\n\t\trotx: (args) => `<span class=\"rotateX\">${args}</span>`,\n\t\troty: (args) => `<span class=\"rotateY\">${args}</span>`,\n\t\trotz: (args) => `<span class=\"rotateZ\">${args}</span>`,\n\t}\n\treturn v\n}\n","import { Items } from \"../Interface\";\nimport { textShadow } from \"./Gens\";\n\nexport function __GensStyleIds() {\n\tlet v: any = {\n\t\tV: 'color: #555555;',\n\t\tW: 'color: #AAAAAA;',\n\t\tv: 'color: #000000;',\n\t\tw: 'color: #FFFFFF;',\n\n\t\tR: 'color: #AA0000;',\n\t\tY: 'color: #FFAA00;',\n\t\tG: 'color: #00AA00;',\n\t\tA: 'color: #00AAAA;',\n\t\tB: 'color: #0000AA;',\n\t\tP: 'color: #AA00AA;',\n\n\t\tr: 'color: #FF5555;',\n\t\ty: 'color: #FFFF55;',\n\t\tg: 'color: #55FF55;',\n\t\ta: 'color: #55FFFF;',\n\t\tb: 'color: #5555FF;',\n\t\tp: 'color: #FF55FF;',\n\n\t\ti: 'color: #FfC0CB;',\n\t\tm: 'font-size: 0.8em;',\n\t\tM: 'font-size: 1.25em;',\n\t\tt: 'font-weight: bold;',\n\t\tT: 'text-shadow: 0.03em 0 0 currentColor;-webkit-text-stroke: 0.5px currentColor;',\n\t\tl: 'font-style: italic;',\n\t\tL: 'transform: skewX(-10deg);',\n\t\tu: 'background-color: var(--xai-destructive, #dc2626);',\n\n\t\ts: `${textShadow(undefined, true)}`,\n\t\tS: 'text-shadow: 0 2px 0 #222',\n\t\tc: 'user-select: text',\n\t\tC: 'user-select: none',\n\n\t\tinsectnColor: 'background-color: var(--insectnColor);',\n\t\tinsectnShadow: 'box-shadow: var(--insectnShadow);',\n\t\tinsectn: '',\n\t\tbgctp: 'background-color: var(--tp);',\n\t\tnoshadow: 'box-shadow: 0 0 0 0;',\n\t\tunsectn: '',\n\t\tbr: 'border-radius: 12px;',\n\t};\n\n\t// numeric style groups: make them 10-per-group\n\t// 0..9 => color: var(--rb0..rb9)\n\t// 10..19 => color: #fff; + textShadow(var(--rbN), true)\n\t// 20..29 => color: var(--rbN); + textShadow(var(--rbN))\n\tfor (let i = 0; i < 10; i++) {\n\t\tv[String(i)] = `color: var(--rb${i});`;\n\t\tv[String(i + 10)] = `color: #fff;${textShadow('var(--rb' + i + ')', true)}`;\n\t\tv[String(i + 20)] = `color: var(--rb${i});${textShadow('var(--rb' + i + ')')}`;\n\t}\n\n\tv.insectn = v.insectnColor + v.insectnShadow + v.br;\n\tv.unsectn = v.bgctp + v.noshadow;\n\treturn <Items<string>>v;\n}\n","const webSide = typeof window !== 'undefined'\nimport { $genSSF, $lplus, $s, xtrim } from '../../x/Functions'\nimport { __GensDirectives } from './GensDirectives.js'\nimport { __GensStyleIds } from './GensStyleIds.js'\n\nexport function $escapeHTML(str?: string) {\n\tif (!str) return ''\n\treturn str.replace(/[&<>\"']/g, (match) => {\n\t\tconst escapeMap = <any>{\n\t\t\t'&': '&amp;',\n\t\t\t'<': '&lt;',\n\t\t\t'>': '&gt;',\n\t\t\t'\"': '&quot;',\n\t\t\t\"'\": '&#39;',\n\t\t}\n\t\treturn escapeMap[match]\n\t})\n}\n\nexport class RainbowGen {\n\ti = -1\n\tten = 10\n\n\tstatic staticRainbowHTMLRaw(text: string, dark: boolean = false, offset: number = 0) {\n\t\tconst map = getColorMap(dark)\n\t\tlet r = ''\n\t\ttext = text.trim()\n\t\t// let rainbow = new RainbowGen(offset);\n\t\tfor (let i = 0; i < text.length; i++) {\n\t\t\tconst val = (i + offset) % map.length\n\n\t\t\tlet char = text[i]\n\t\t\tif (char === ' ') char = '&nbsp;'\n\t\t\tr += char + `^&color: ${map[val]}&^`\n\t\t}\n\t\treturn r\n\t}\n\n\tstatic rainbowHTMLRaw(text: string, version: number = 0, offset: number = 0) {\n\t\tlet r = ''\n\t\ttext = text.trim()\n\t\tlet rainbow = new RainbowGen(offset)\n\t\tfor (let i = 0; i < text.length; i++) {\n\t\t\tlet char = text[i]\n\t\t\tif (char === ' ') char = '&nbsp;'\n\t\t\tr += char + `^${rainbow.getStyleId(version)}^`\n\t\t}\n\t\treturn r\n\t}\n\n\tbackAStep() {\n\t\tthis.i = $lplus(this.i, this.ten, -1)\n\t\treturn this\n\t}\n\n\tgetColorValue() {\n\t\tthis.i = $lplus(this.i, this.ten)\n\t\treturn 'var(--rb' + this.i + ')'\n\t}\n\n\tversions = [0, this.ten, 2 * this.ten]\n\t// staticStyleIdMap = 'r y g a p ';\n\n\t// getStaticStyleId(dark: boolean = false) {\n\t// \tthis.i = $lplus(this.i, this.ten);\n\t// \tlet a = this.staticStyleIdMap[this.i] || ``;\n\t// \tif (!a) {\n\t// \t}\n\t// \treturn dark ? a.toUpperCase() : a;\n\t// }\n\n\tgetStyleId(version: number) {\n\t\tthis.i = $lplus(this.i, this.ten)\n\t\tlet a = '' + (this.i + this.versions[version])\n\t\treturn a.length > 1 ? `&${a}&` : a\n\t}\n\n\tconstructor(useTimes: number = 0) {\n\t\tthis.i = $lplus(this.i, this.ten, useTimes)\n\t}\n}\n\nexport function boxShadow(color: string = '#000') {\n\treturn `box-shadow: 0 0 1px 1px ${color};`\n}\n\nexport function textShadow(color: string = '#000', focus?: boolean, removeName: boolean = false) {\n\tcolor = color.trim()\n\tconst pre = removeName ? '' : 'text-shadow: '\n\tconst suf = removeName ? '' : ';'\n\treturn focus\n\t\t? `${pre}-1px -1px 1px ${color}, 1px 1px 1px ${color}${suf}`\n\t\t: `${pre}0 0 8px ${color}${suf}`\n}\n\n// function s() {}\ntype StringNode = string | StringNode[]\n/*\nsuperx方法功能最全\ni方法 里面没有{}的解析\n*/\nexport function s(literature: string, ...args: any[]) {\n\treturn Gens(literature, ...args)\n}\nconst __GensSSF = $genSSF((s1, s2) => __GensBeTag(s1, s2))\nconst _GensStyleIds = __GensStyleIds()\nconst _GensDirectives = __GensDirectives()\n\nexport function getColorMap(dark: boolean = false) {\n\tconst map = [\n\t\t'#f55', // 0\n\t\t'#f85', // 1\n\t\t'#fa0', // 2\n\t\t'#8f5', // 3\n\t\t'#5f5', // 4\n\t\t'#5f8', // 5\n\t\t'#5ff', // 6\n\t\t'#88f', // 7\n\t\t'#f5f', // 8\n\t\t'#f58', // 9\n\t]\n\treturn dark\n\t\t? map.map((color) =>\n\t\t\t\tcolor.replace(/a/g, '5').replace(/f/g, 'a').replace(/5/g, '0').replace(/8/g, '5'),\n\t\t\t)\n\t\t: map\n}\n\nexport function Gens(literature: string, ...args: any[]) {\n\tlet variantChar = '§'\n\tlet r = xtrim(literature)\n\tr = __GensStringNodeToHTML(r)\n\tif (r.includes(variantChar)) {\n\t\tfor (const el of args) {\n\t\t\tr = r.replace(variantChar, el)\n\t\t}\n\t}\n\n\tconst map = getColorMap()\n\treturn webSide ? r : r.replace(/var\\(--rb(\\d)\\)/g, (_, n) => map[n])\n}\nfunction __GensBeTag(value: string, args?: string): string {\n\tif (value.startsWith('%')) {\n\t\tlet directiveName = value.substring(1)\n\t\tlet directive = _GensDirectives[directiveName]\n\t\tif (!directive) return ''\n\t\tif (typeof directive !== 'function') {\n\t\t\tconsole.log('Gens directive not a function: ', directiveName)\n\t\t\treturn ''\n\t\t}\n\t\tif (!args) args = ''\n\t\treturn directive(...args.split('&').map((v) => v.trim()))\n\t}\n\tvalue = value.replace(/\\n/g, '<br>')\n\tif (!args) return value\n\tlet trail = ''\n\tif (args.length > 1) {\n\t\tlet a = args[0]\n\t\tlet b = args.substring(1)\n\t\tif (a !== '&') {\n\t\t\targs = a\n\t\t\ttrail = b\n\t\t} else {\n\t\t\tlet last = b.indexOf('&')\n\t\t\tif (last < 0) last = b.length\n\t\t\targs = b.substring(0, last)\n\t\t\ttrail = b.substring(last + 1)\n\t\t}\n\t}\n\tlet x = _GensStyleIds[args] || args.trim()\n\tx = \"<span style='\" + x + '' + \"'\" + '>'\n\tlet r = x + value + '</span>'\n\treturn trail ? __GensBeTag(r, trail) : r\n}\nfunction __GensStringToArray(input: string): StringNode {\n\ttry {\n\t\tconst stack: (string | any[])[] = [[]] // 栈初始化为一个空数组\n\t\tlet currentChunk = '' // 用于累积当前的非嵌套字符\n\n\t\tfor (let i = 0; i < input.length; i++) {\n\t\t\tconst char = input[i]\n\n\t\t\tif (char === '{') {\n\t\t\t\t// 将当前累积的字符作为字符串推入栈顶的数组\n\t\t\t\tif (currentChunk) {\n\t\t\t\t\t;(<any>stack[stack.length - 1]).push(currentChunk)\n\t\t\t\t\tcurrentChunk = ''\n\t\t\t\t}\n\t\t\t\t// 创建一个新的数组,推入栈顶,并作为新的栈顶\n\t\t\t\tconst newArray: any[] = []\n\t\t\t\t;(<any>stack[stack.length - 1]).push(newArray)\n\t\t\t\tstack.push(newArray)\n\t\t\t} else if (char === '}') {\n\t\t\t\t// 将当前累积的字符作为字符串推入栈顶的数组\n\t\t\t\tif (currentChunk) {\n\t\t\t\t\t;(<any>stack[stack.length - 1]).push(currentChunk)\n\t\t\t\t\tcurrentChunk = ''\n\t\t\t\t}\n\t\t\t\t// 弹出栈顶,回到上一层级\n\t\t\t\tstack.pop()\n\t\t\t} else {\n\t\t\t\t// 累积非嵌套字符\n\t\t\t\tcurrentChunk += char\n\t\t\t}\n\t\t}\n\n\t\t// 处理最后可能剩余的字符\n\t\tif (currentChunk) {\n\t\t\t;(<any>stack[stack.length - 1]).push(currentChunk)\n\t\t}\n\n\t\treturn <any>stack[0]\n\t} catch (error) {\n\t\treturn input\n\t}\n}\n\nfunction __GensStringNodeToHTML(sn: StringNode, noIndent: boolean = false): string {\n\tif (!sn) return ''\n\tif ($s(sn)) {\n\t\tlet str = <string>sn\n\t\treturn noIndent\n\t\t\t? __GensSSF(str)\n\t\t\t: __GensStringNodeToHTML(__GensStringToArray(<string>sn), true)\n\t}\n\tlet r = ''\n\tlet w = <any[]>sn\n\tw.forEach((v) => {\n\t\tr += v instanceof Array ? __GensStringNodeToHTML(v, true) : v\n\t})\n\treturn __GensStringNodeToHTML(r, true)\n}\n// function __SuperxIsLiterature(str: string) {\n// \tlet bv = str.contain('{', '}', '&', '^', '%');\n// \treturn bv || bv === false;\n// }\n","// Color space definitions\nimport modeA98 from './a98/definition.js';\nimport modeCubehelix from './cubehelix/definition.js';\nimport modeDlab from './dlab/definition.js';\nimport modeDlch from './dlch/definition.js';\nimport modeHsi from './hsi/definition.js';\nimport modeHsl from './hsl/definition.js';\nimport modeHsv from './hsv/definition.js';\nimport modeHwb from './hwb/definition.js';\nimport modeItp from './itp/definition.js';\nimport modeJab from './jab/definition.js';\nimport modeJch from './jch/definition.js';\nimport modeLab from './lab/definition.js';\nimport modeLab65 from './lab65/definition.js';\nimport modeLch from './lch/definition.js';\nimport modeLch65 from './lch65/definition.js';\nimport modeLchuv from './lchuv/definition.js';\nimport modeLrgb from './lrgb/definition.js';\nimport modeLuv from './luv/definition.js';\nimport modeOkhsl from './okhsl/modeOkhsl.js';\nimport modeOkhsv from './okhsv/modeOkhsv.js';\nimport modeOklab from './oklab/definition.js';\nimport modeOklch from './oklch/definition.js';\nimport modeP3 from './p3/definition.js';\nimport modeProphoto from './prophoto/definition.js';\nimport modeRec2020 from './rec2020/definition.js';\nimport modeRgb from './rgb/definition.js';\nimport modeXyb from './xyb/definition.js';\nimport modeXyz50 from './xyz50/definition.js';\nimport modeXyz65 from './xyz65/definition.js';\nimport modeYiq from './yiq/definition.js';\nimport { useMode } from './modes.js';\n\nexport { default as converter } from './converter.js';\n\nexport {\n\tserializeHex,\n\tserializeHex8,\n\tserializeRgb,\n\tserializeHsl,\n\tformatHex,\n\tformatHex8,\n\tformatRgb,\n\tformatHsl,\n\tformatCss\n} from './formatter.js';\n\nexport { default as colorsNamed } from './colors/named.js';\nexport { default as blend } from './blend.js';\nexport { default as random } from './random.js';\n\nexport {\n\tfixupHueShorter,\n\tfixupHueLonger,\n\tfixupHueIncreasing,\n\tfixupHueDecreasing\n} from './fixup/hue.js';\n\nexport { fixupAlpha } from './fixup/alpha.js';\n\nexport {\n\tmapper,\n\tmapAlphaMultiply,\n\tmapAlphaDivide,\n\tmapTransferLinear,\n\tmapTransferGamma\n} from './map.js';\n\nexport { average, averageAngle, averageNumber } from './average.js';\n\nexport { default as round } from './round.js';\nexport {\n\tinterpolate,\n\tinterpolateWith,\n\tinterpolateWithPremultipliedAlpha\n} from './interpolate/interpolate.js';\n\nexport { interpolatorLinear } from './interpolate/linear.js';\n\nexport { interpolatorPiecewise } from './interpolate/piecewise.js';\n\nexport {\n\tinterpolatorSplineBasis,\n\tinterpolatorSplineBasisClosed\n} from './interpolate/splineBasis.js';\n\nexport {\n\tinterpolatorSplineNatural,\n\tinterpolatorSplineNaturalClosed\n} from './interpolate/splineNatural.js';\n\nexport {\n\tinterpolatorSplineMonotone,\n\tinterpolatorSplineMonotone2,\n\tinterpolatorSplineMonotoneClosed\n} from './interpolate/splineMonotone.js';\n\nexport { lerp, unlerp, blerp, trilerp } from './interpolate/lerp.js';\nexport { default as samples } from './samples.js';\nexport {\n\tdisplayable,\n\tinGamut,\n\tclampRgb,\n\tclampChroma,\n\tclampGamut,\n\ttoGamut\n} from './clamp.js';\nexport { default as nearest } from './nearest.js';\nexport { useMode, getMode, useParser, removeParser } from './modes.js';\nexport { default as parse } from './parse.js';\n\nexport {\n\tdifferenceEuclidean,\n\tdifferenceCie76,\n\tdifferenceCie94,\n\tdifferenceCiede2000,\n\tdifferenceCmc,\n\tdifferenceHyab,\n\tdifferenceHueSaturation,\n\tdifferenceHueChroma,\n\tdifferenceHueNaive,\n\tdifferenceKotsarenkoRamos,\n\tdifferenceItp\n} from './difference.js';\n\nexport {\n\tfilterBrightness,\n\tfilterContrast,\n\tfilterSepia,\n\tfilterInvert,\n\tfilterSaturate,\n\tfilterGrayscale,\n\tfilterHueRotate\n} from './filter.js';\n\nexport {\n\tfilterDeficiencyProt,\n\tfilterDeficiencyDeuter,\n\tfilterDeficiencyTrit\n} from './deficiency.js';\n\n// Easings\nexport { default as easingMidpoint } from './easing/midpoint.js';\nexport {\n\teasingSmoothstep,\n\teasingSmoothstepInverse\n} from './easing/smoothstep.js';\nexport { default as easingSmootherstep } from './easing/smootherstep.js';\nexport { default as easingInOutSine } from './easing/inOutSine.js';\nexport { default as easingGamma } from './easing/gamma.js';\n\nexport {\n\tluminance as wcagLuminance,\n\tcontrast as wcagContrast\n} from './wcag.js';\n\nexport { default as parseHsl } from './hsl/parseHsl.js';\nexport { default as parseHwb } from './hwb/parseHwb.js';\nexport { default as parseLab } from './lab/parseLab.js';\nexport { default as parseLch } from './lch/parseLch.js';\nexport { default as parseNamed } from './rgb/parseNamed.js';\nexport { default as parseTransparent } from './rgb/parseTransparent.js';\nexport { default as parseHex } from './rgb/parseHex.js';\nexport { default as parseRgb } from './rgb/parseRgb.js';\nexport { default as parseHslLegacy } from './hsl/parseHslLegacy.js';\nexport { default as parseRgbLegacy } from './rgb/parseRgbLegacy.js';\nexport { default as parseOklab } from './oklab/parseOklab.js';\nexport { default as parseOklch } from './oklch/parseOklch.js';\n\nexport { default as convertA98ToXyz65 } from './a98/convertA98ToXyz65.js';\nexport { default as convertCubehelixToRgb } from './cubehelix/convertCubehelixToRgb.js';\nexport { default as convertDlchToLab65 } from './dlch/convertDlchToLab65.js';\nexport { default as convertHsiToRgb } from './hsi/convertHsiToRgb.js';\nexport { default as convertHslToRgb } from './hsl/convertHslToRgb.js';\nexport { default as convertHsvToRgb } from './hsv/convertHsvToRgb.js';\nexport { default as convertHwbToRgb } from './hwb/convertHwbToRgb.js';\nexport { default as convertItpToXyz65 } from './itp/convertItpToXyz65.js';\nexport { default as convertJabToJch } from './jch/convertJabToJch.js';\nexport { default as convertJabToRgb } from './jab/convertJabToRgb.js';\nexport { default as convertJabToXyz65 } from './jab/convertJabToXyz65.js';\nexport { default as convertJchToJab } from './jch/convertJchToJab.js';\nexport { default as convertLab65ToDlch } from './dlch/convertLab65ToDlch.js';\nexport { default as convertLab65ToRgb } from './lab65/convertLab65ToRgb.js';\nexport { default as convertLab65ToXyz65 } from './lab65/convertLab65ToXyz65.js';\nexport { default as convertLabToLch } from './lch/convertLabToLch.js';\nexport { default as convertLabToRgb } from './lab/convertLabToRgb.js';\nexport { default as convertLabToXyz50 } from './lab/convertLabToXyz50.js';\nexport { default as convertLchToLab } from './lch/convertLchToLab.js';\nexport { default as convertLchuvToLuv } from './lchuv/convertLchuvToLuv.js';\nexport { default as convertLrgbToOklab } from './oklab/convertLrgbToOklab.js';\nexport { default as convertLrgbToRgb } from './lrgb/convertLrgbToRgb.js';\nexport { default as convertLuvToLchuv } from './lchuv/convertLuvToLchuv.js';\nexport { default as convertLuvToXyz50 } from './luv/convertLuvToXyz50.js';\nexport { default as convertOkhslToOklab } from './okhsl/convertOkhslToOklab.js';\nexport { default as convertOkhsvToOklab } from './okhsv/convertOkhsvToOklab.js';\nexport { default as convertOklabToLrgb } from './oklab/convertOklabToLrgb.js';\nexport { default as convertOklabToOkhsl } from './okhsl/convertOklabToOkhsl.js';\nexport { default as convertOklabToOkhsv } from './okhsv/convertOklabToOkhsv.js';\nexport { default as convertOklabToRgb } from './oklab/convertOklabToRgb.js';\nexport { default as convertP3ToXyz65 } from './p3/convertP3ToXyz65.js';\nexport { default as convertProphotoToXyz50 } from './prophoto/convertProphotoToXyz50.js';\nexport { default as convertRec2020ToXyz65 } from './rec2020/convertRec2020ToXyz65.js';\nexport { default as convertRgbToCubehelix } from './cubehelix/convertRgbToCubehelix.js';\nexport { default as convertRgbToHsi } from './hsi/convertRgbToHsi.js';\nexport { default as convertRgbToHsl } from './hsl/convertRgbToHsl.js';\nexport { default as convertRgbToHsv } from './hsv/convertRgbToHsv.js';\nexport { default as convertRgbToHwb } from './hwb/convertRgbToHwb.js';\nexport { default as convertRgbToJab } from './jab/convertRgbToJab.js';\nexport { default as convertRgbToLab } from './lab/convertRgbToLab.js';\nexport { default as convertRgbToLab65 } from './lab65/convertRgbToLab65.js';\nexport { default as convertRgbToLrgb } from './lrgb/convertRgbToLrgb.js';\nexport { default as convertRgbToOklab } from './oklab/convertRgbToOklab.js';\nexport { default as convertRgbToXyb } from './xyb/convertRgbToXyb.js';\nexport { default as convertRgbToXyz50 } from './xyz50/convertRgbToXyz50.js';\nexport { default as convertRgbToXyz65 } from './xyz65/convertRgbToXyz65.js';\nexport { default as convertRgbToYiq } from './yiq/convertRgbToYiq.js';\nexport { default as convertXybToRgb } from './xyb/convertXybToRgb.js';\nexport { default as convertXyz50ToLab } from './lab/convertXyz50ToLab.js';\nexport { default as convertXyz50ToLuv } from './luv/convertXyz50ToLuv.js';\nexport { default as convertXyz50ToProphoto } from './prophoto/convertXyz50ToProphoto.js';\nexport { default as convertXyz50ToRgb } from './xyz50/convertXyz50ToRgb.js';\nexport { default as convertXyz50ToXyz65 } from './xyz65/convertXyz50ToXyz65.js';\nexport { default as convertXyz65ToA98 } from './a98/convertXyz65ToA98.js';\nexport { default as convertXyz65ToItp } from './itp/convertXyz65ToItp.js';\nexport { default as convertXyz65ToJab } from './jab/convertXyz65ToJab.js';\nexport { default as convertXyz65ToLab65 } from './lab65/convertXyz65ToLab65.js';\nexport { default as convertXyz65ToP3 } from './p3/convertXyz65ToP3.js';\nexport { default as convertXyz65ToRec2020 } from './rec2020/convertXyz65ToRec2020.js';\nexport { default as convertXyz65ToRgb } from './xyz65/convertXyz65ToRgb.js';\nexport { default as convertXyz65ToXyz50 } from './xyz65/convertXyz65ToXyz50.js';\nexport { default as convertYiqToRgb } from './yiq/convertYiqToRgb.js';\n\nexport {\n\tmodeA98,\n\tmodeCubehelix,\n\tmodeDlab,\n\tmodeDlch,\n\tmodeHsi,\n\tmodeHsl,\n\tmodeHsv,\n\tmodeHwb,\n\tmodeItp,\n\tmodeJab,\n\tmodeJch,\n\tmodeLab,\n\tmodeLab65,\n\tmodeLch,\n\tmodeLch65,\n\tmodeLchuv,\n\tmodeLrgb,\n\tmodeLuv,\n\tmodeOkhsl,\n\tmodeOkhsv,\n\tmodeOklab,\n\tmodeOklch,\n\tmodeP3,\n\tmodeProphoto,\n\tmodeRec2020,\n\tmodeRgb,\n\tmodeXyb,\n\tmodeXyz50,\n\tmodeXyz65,\n\tmodeYiq\n};\n\nexport const a98 = useMode(modeA98);\nexport const cubehelix = useMode(modeCubehelix);\nexport const dlab = useMode(modeDlab);\nexport const dlch = useMode(modeDlch);\nexport const hsi = useMode(modeHsi);\nexport const hsl = useMode(modeHsl);\nexport const hsv = useMode(modeHsv);\nexport const hwb = useMode(modeHwb);\nexport const itp = useMode(modeItp);\nexport const jab = useMode(modeJab);\nexport const jch = useMode(modeJch);\nexport const lab = useMode(modeLab);\nexport const lab65 = useMode(modeLab65);\nexport const lch = useMode(modeLch);\nexport const lch65 = useMode(modeLch65);\nexport const lchuv = useMode(modeLchuv);\nexport const lrgb = useMode(modeLrgb);\nexport const luv = useMode(modeLuv);\nexport const okhsl = useMode(modeOkhsl);\nexport const okhsv = useMode(modeOkhsv);\nexport const oklab = useMode(modeOklab);\nexport const oklch = useMode(modeOklch);\nexport const p3 = useMode(modeP3);\nexport const prophoto = useMode(modeProphoto);\nexport const rec2020 = useMode(modeRec2020);\nexport const rgb = useMode(modeRgb);\nexport const xyb = useMode(modeXyb);\nexport const xyz50 = useMode(modeXyz50);\nexport const xyz65 = useMode(modeXyz65);\nexport const yiq = useMode(modeYiq);\n","const parseNumber = (color, len) => {\n\tif (typeof color !== 'number') return;\n\n\t// hex3: #c93 -> #cc9933\n\tif (len === 3) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: (((color >> 8) & 0xf) | ((color >> 4) & 0xf0)) / 255,\n\t\t\tg: (((color >> 4) & 0xf) | (color & 0xf0)) / 255,\n\t\t\tb: ((color & 0xf) | ((color << 4) & 0xf0)) / 255\n\t\t};\n\t}\n\n\t// hex4: #c931 -> #cc993311\n\tif (len === 4) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: (((color >> 12) & 0xf) | ((color >> 8) & 0xf0)) / 255,\n\t\t\tg: (((color >> 8) & 0xf) | ((color >> 4) & 0xf0)) / 255,\n\t\t\tb: (((color >> 4) & 0xf) | (color & 0xf0)) / 255,\n\t\t\talpha: ((color & 0xf) | ((color << 4) & 0xf0)) / 255\n\t\t};\n\t}\n\n\t// hex6: #f0f1f2\n\tif (len === 6) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: ((color >> 16) & 0xff) / 255,\n\t\t\tg: ((color >> 8) & 0xff) / 255,\n\t\t\tb: (color & 0xff) / 255\n\t\t};\n\t}\n\n\t// hex8: #f0f1f2ff\n\tif (len === 8) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: ((color >> 24) & 0xff) / 255,\n\t\t\tg: ((color >> 16) & 0xff) / 255,\n\t\t\tb: ((color >> 8) & 0xff) / 255,\n\t\t\talpha: (color & 0xff) / 255\n\t\t};\n\t}\n};\n\nexport default parseNumber;\n","const named = {\n\taliceblue: 0xf0f8ff,\n\tantiquewhite: 0xfaebd7,\n\taqua: 0x00ffff,\n\taquamarine: 0x7fffd4,\n\tazure: 0xf0ffff,\n\tbeige: 0xf5f5dc,\n\tbisque: 0xffe4c4,\n\tblack: 0x000000,\n\tblanchedalmond: 0xffebcd,\n\tblue: 0x0000ff,\n\tblueviolet: 0x8a2be2,\n\tbrown: 0xa52a2a,\n\tburlywood: 0xdeb887,\n\tcadetblue: 0x5f9ea0,\n\tchartreuse: 0x7fff00,\n\tchocolate: 0xd2691e,\n\tcoral: 0xff7f50,\n\tcornflowerblue: 0x6495ed,\n\tcornsilk: 0xfff8dc,\n\tcrimson: 0xdc143c,\n\tcyan: 0x00ffff,\n\tdarkblue: 0x00008b,\n\tdarkcyan: 0x008b8b,\n\tdarkgoldenrod: 0xb8860b,\n\tdarkgray: 0xa9a9a9,\n\tdarkgreen: 0x006400,\n\tdarkgrey: 0xa9a9a9,\n\tdarkkhaki: 0xbdb76b,\n\tdarkmagenta: 0x8b008b,\n\tdarkolivegreen: 0x556b2f,\n\tdarkorange: 0xff8c00,\n\tdarkorchid: 0x9932cc,\n\tdarkred: 0x8b0000,\n\tdarksalmon: 0xe9967a,\n\tdarkseagreen: 0x8fbc8f,\n\tdarkslateblue: 0x483d8b,\n\tdarkslategray: 0x2f4f4f,\n\tdarkslategrey: 0x2f4f4f,\n\tdarkturquoise: 0x00ced1,\n\tdarkviolet: 0x9400d3,\n\tdeeppink: 0xff1493,\n\tdeepskyblue: 0x00bfff,\n\tdimgray: 0x696969,\n\tdimgrey: 0x696969,\n\tdodgerblue: 0x1e90ff,\n\tfirebrick: 0xb22222,\n\tfloralwhite: 0xfffaf0,\n\tforestgreen: 0x228b22,\n\tfuchsia: 0xff00ff,\n\tgainsboro: 0xdcdcdc,\n\tghostwhite: 0xf8f8ff,\n\tgold: 0xffd700,\n\tgoldenrod: 0xdaa520,\n\tgray: 0x808080,\n\tgreen: 0x008000,\n\tgreenyellow: 0xadff2f,\n\tgrey: 0x808080,\n\thoneydew: 0xf0fff0,\n\thotpink: 0xff69b4,\n\tindianred: 0xcd5c5c,\n\tindigo: 0x4b0082,\n\tivory: 0xfffff0,\n\tkhaki: 0xf0e68c,\n\tlavender: 0xe6e6fa,\n\tlavenderblush: 0xfff0f5,\n\tlawngreen: 0x7cfc00,\n\tlemonchiffon: 0xfffacd,\n\tlightblue: 0xadd8e6,\n\tlightcoral: 0xf08080,\n\tlightcyan: 0xe0ffff,\n\tlightgoldenrodyellow: 0xfafad2,\n\tlightgray: 0xd3d3d3,\n\tlightgreen: 0x90ee90,\n\tlightgrey: 0xd3d3d3,\n\tlightpink: 0xffb6c1,\n\tlightsalmon: 0xffa07a,\n\tlightseagreen: 0x20b2aa,\n\tlightskyblue: 0x87cefa,\n\tlightslategray: 0x778899,\n\tlightslategrey: 0x778899,\n\tlightsteelblue: 0xb0c4de,\n\tlightyellow: 0xffffe0,\n\tlime: 0x00ff00,\n\tlimegreen: 0x32cd32,\n\tlinen: 0xfaf0e6,\n\tmagenta: 0xff00ff,\n\tmaroon: 0x800000,\n\tmediumaquamarine: 0x66cdaa,\n\tmediumblue: 0x0000cd,\n\tmediumorchid: 0xba55d3,\n\tmediumpurple: 0x9370db,\n\tmediumseagreen: 0x3cb371,\n\tmediumslateblue: 0x7b68ee,\n\tmediumspringgreen: 0x00fa9a,\n\tmediumturquoise: 0x48d1cc,\n\tmediumvioletred: 0xc71585,\n\tmidnightblue: 0x191970,\n\tmintcream: 0xf5fffa,\n\tmistyrose: 0xffe4e1,\n\tmoccasin: 0xffe4b5,\n\tnavajowhite: 0xffdead,\n\tnavy: 0x000080,\n\toldlace: 0xfdf5e6,\n\tolive: 0x808000,\n\tolivedrab: 0x6b8e23,\n\torange: 0xffa500,\n\torangered: 0xff4500,\n\torchid: 0xda70d6,\n\tpalegoldenrod: 0xeee8aa,\n\tpalegreen: 0x98fb98,\n\tpaleturquoise: 0xafeeee,\n\tpalevioletred: 0xdb7093,\n\tpapayawhip: 0xffefd5,\n\tpeachpuff: 0xffdab9,\n\tperu: 0xcd853f,\n\tpink: 0xffc0cb,\n\tplum: 0xdda0dd,\n\tpowderblue: 0xb0e0e6,\n\tpurple: 0x800080,\n\n\t// Added in CSS Colors Level 4:\n\t// https://drafts.csswg.org/css-color/#changes-from-3\n\trebeccapurple: 0x663399,\n\n\tred: 0xff0000,\n\trosybrown: 0xbc8f8f,\n\troyalblue: 0x4169e1,\n\tsaddlebrown: 0x8b4513,\n\tsalmon: 0xfa8072,\n\tsandybrown: 0xf4a460,\n\tseagreen: 0x2e8b57,\n\tseashell: 0xfff5ee,\n\tsienna: 0xa0522d,\n\tsilver: 0xc0c0c0,\n\tskyblue: 0x87ceeb,\n\tslateblue: 0x6a5acd,\n\tslategray: 0x708090,\n\tslategrey: 0x708090,\n\tsnow: 0xfffafa,\n\tspringgreen: 0x00ff7f,\n\tsteelblue: 0x4682b4,\n\ttan: 0xd2b48c,\n\tteal: 0x008080,\n\tthistle: 0xd8bfd8,\n\ttomato: 0xff6347,\n\tturquoise: 0x40e0d0,\n\tviolet: 0xee82ee,\n\twheat: 0xf5deb3,\n\twhite: 0xffffff,\n\twhitesmoke: 0xf5f5f5,\n\tyellow: 0xffff00,\n\tyellowgreen: 0x9acd32\n};\n\nexport default named;\n","import parseNumber from './parseNumber.js';\nimport named from '../colors/named.js';\n\n// Also supports the `transparent` color as defined in:\n// https://drafts.csswg.org/css-color/#transparent-black\nconst parseNamed = color => {\n\treturn parseNumber(named[color.toLowerCase()], 6);\n};\n\nexport default parseNamed;\n","import parseNumber from './parseNumber.js';\n\nconst hex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\nconst parseHex = color => {\n\tlet match;\n\t// eslint-disable-next-line no-cond-assign\n\treturn (match = color.match(hex))\n\t\t? parseNumber(parseInt(match[1], 16), match[1].length)\n\t\t: undefined;\n};\n\nexport default parseHex;\n","/*\n\tBasic building blocks for color regexes\n\t---------------------------------------\n\n\tThese regexes are expressed as strings\n\tto be interpolated in the color regexes.\n */\n\n// <number>\nexport const num = '([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)';\n\n// <number> or 'none'\nexport const num_none = `(?:${num}|none)`;\n\n// <percentage>\nexport const per = `${num}%`;\n\n// <percent> or 'none'\nexport const per_none = `(?:${num}%|none)`;\n\n// <number-percentage> (<alpha-value>)\nexport const num_per = `(?:${num}%|${num})`;\n\n// <number-percentage> (<alpha-value>) or 'none'\nexport const num_per_none = `(?:${num}%|${num}|none)`;\n\n// <hue>\nexport const hue = `(?:${num}(deg|grad|rad|turn)|${num})`;\n\n// <hue> or 'none'\nexport const hue_none = `(?:${num}(deg|grad|rad|turn)|${num}|none)`;\n\nexport const c = `\\\\s*,\\\\s*`; // comma\nexport const so = '\\\\s*'; // space, optional\nexport const s = `\\\\s+`; // space\n\nexport const rx_num_per_none = new RegExp('^' + num_per_none + '$');\n","import { num, per, num_per, c } from '../util/regex.js';\n\n/*\n\trgb() regular expressions for legacy format\n\tReference: https://drafts.csswg.org/css-color/#rgb-functions\n */\nconst rgb_num_old = new RegExp(\n\t`^rgba?\\\\(\\\\s*${num}${c}${num}${c}${num}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst rgb_per_old = new RegExp(\n\t`^rgba?\\\\(\\\\s*${per}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst parseRgbLegacy = color => {\n\tlet res = { mode: 'rgb' };\n\tlet match;\n\tif ((match = color.match(rgb_num_old))) {\n\t\tif (match[1] !== undefined) {\n\t\t\tres.r = match[1] / 255;\n\t\t}\n\t\tif (match[2] !== undefined) {\n\t\t\tres.g = match[2] / 255;\n\t\t}\n\t\tif (match[3] !== undefined) {\n\t\t\tres.b = match[3] / 255;\n\t\t}\n\t} else if ((match = color.match(rgb_per_old))) {\n\t\tif (match[1] !== undefined) {\n\t\t\tres.r = match[1] / 100;\n\t\t}\n\t\tif (match[2] !== undefined) {\n\t\t\tres.g = match[2] / 100;\n\t\t}\n\t\tif (match[3] !== undefined) {\n\t\t\tres.b = match[3] / 100;\n\t\t}\n\t} else {\n\t\treturn undefined;\n\t}\n\n\tif (match[4] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, match[4] / 100));\n\t} else if (match[5] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, +match[5]));\n\t}\n\n\treturn res;\n};\n\nexport default parseRgbLegacy;\n","import parse from './parse.js';\n\nconst prepare = (color, mode) =>\n\tcolor === undefined\n\t\t? undefined\n\t\t: typeof color !== 'object'\n\t\t? parse(color)\n\t\t: color.mode !== undefined\n\t\t? color\n\t\t: mode\n\t\t? { ...color, mode }\n\t\t: undefined;\n\nexport default prepare;\n","import { converters } from './modes.js';\nimport prepare from './_prepare.js';\n\nconst converter =\n\t(target_mode = 'rgb') =>\n\tcolor =>\n\t\t(color = prepare(color, target_mode)) !== undefined\n\t\t\t? // if the color's mode corresponds to our target mode\n\t\t\t color.mode === target_mode\n\t\t\t\t? // then just return the color\n\t\t\t\t color\n\t\t\t\t: // otherwise check to see if we have a dedicated\n\t\t\t\t// converter for the target mode\n\t\t\t\tconverters[color.mode][target_mode]\n\t\t\t\t? // and return its result...\n\t\t\t\t converters[color.mode][target_mode](color)\n\t\t\t\t: // ...otherwise pass through RGB as an intermediary step.\n\t\t\t\t// if the target mode is RGB...\n\t\t\t\ttarget_mode === 'rgb'\n\t\t\t\t? // just return the RGB\n\t\t\t\t converters[color.mode].rgb(color)\n\t\t\t\t: // otherwise convert color.mode -> RGB -> target_mode\n\t\t\t\t converters.rgb[target_mode](converters[color.mode].rgb(color))\n\t\t\t: undefined;\n\nexport default converter;\n","import converter from './converter.js';\n\nconst converters = {};\nconst modes = {};\n\nconst parsers = [];\nconst colorProfiles = {};\n\nconst identity = v => v;\n\nconst useMode = definition => {\n\tconverters[definition.mode] = {\n\t\t...converters[definition.mode],\n\t\t...definition.toMode\n\t};\n\n\tObject.keys(definition.fromMode || {}).forEach(k => {\n\t\tif (!converters[k]) {\n\t\t\tconverters[k] = {};\n\t\t}\n\t\tconverters[k][definition.mode] = definition.fromMode[k];\n\t});\n\n\t// Color space channel ranges\n\tif (!definition.ranges) {\n\t\tdefinition.ranges = {};\n\t}\n\n\tif (!definition.difference) {\n\t\tdefinition.difference = {};\n\t}\n\n\tdefinition.channels.forEach(channel => {\n\t\t// undefined channel ranges default to the [0, 1] interval\n\t\tif (definition.ranges[channel] === undefined) {\n\t\t\tdefinition.ranges[channel] = [0, 1];\n\t\t}\n\n\t\tif (!definition.interpolate[channel]) {\n\t\t\tthrow new Error(`Missing interpolator for: ${channel}`);\n\t\t}\n\n\t\tif (typeof definition.interpolate[channel] === 'function') {\n\t\t\tdefinition.interpolate[channel] = {\n\t\t\t\tuse: definition.interpolate[channel]\n\t\t\t};\n\t\t}\n\n\t\tif (!definition.interpolate[channel].fixup) {\n\t\t\tdefinition.interpolate[channel].fixup = identity;\n\t\t}\n\t});\n\n\tmodes[definition.mode] = definition;\n\t(definition.parse || []).forEach(parser => {\n\t\tuseParser(parser, definition.mode);\n\t});\n\n\treturn converter(definition.mode);\n};\n\nconst getMode = mode => modes[mode];\n\nconst useParser = (parser, mode) => {\n\tif (typeof parser === 'string') {\n\t\tif (!mode) {\n\t\t\tthrow new Error(`'mode' required when 'parser' is a string`);\n\t\t}\n\t\tcolorProfiles[parser] = mode;\n\t} else if (typeof parser === 'function') {\n\t\tif (parsers.indexOf(parser) < 0) {\n\t\t\tparsers.push(parser);\n\t\t}\n\t}\n};\n\nconst removeParser = parser => {\n\tif (typeof parser === 'string') {\n\t\tdelete colorProfiles[parser];\n\t} else if (typeof parser === 'function') {\n\t\tconst idx = parsers.indexOf(parser);\n\t\tif (idx > 0) {\n\t\t\tparsers.splice(idx, 1);\n\t\t}\n\t}\n};\n\nexport {\n\tuseMode,\n\tgetMode,\n\tuseParser,\n\tremoveParser,\n\tconverters,\n\tparsers,\n\tcolorProfiles\n};\n","import { parsers, colorProfiles, getMode } from './modes.js';\n\n/* eslint-disable-next-line no-control-regex */\nconst IdentStartCodePoint = /[^\\x00-\\x7F]|[a-zA-Z_]/;\n\n/* eslint-disable-next-line no-control-regex */\nconst IdentCodePoint = /[^\\x00-\\x7F]|[-\\w]/;\n\nexport const Tok = {\n\tFunction: 'function',\n\tIdent: 'ident',\n\tNumber: 'number',\n\tPercentage: 'percentage',\n\tParenClose: ')',\n\tNone: 'none',\n\tHue: 'hue',\n\tAlpha: 'alpha'\n};\n\nlet _i = 0;\n\n/*\n\t4.3.10. Check if three code points would start a number\n\thttps://drafts.csswg.org/css-syntax/#starts-with-a-number\n */\nfunction is_num(chars) {\n\tlet ch = chars[_i];\n\tlet ch1 = chars[_i + 1];\n\tif (ch === '-' || ch === '+') {\n\t\treturn /\\d/.test(ch1) || (ch1 === '.' && /\\d/.test(chars[_i + 2]));\n\t}\n\tif (ch === '.') {\n\t\treturn /\\d/.test(ch1);\n\t}\n\treturn /\\d/.test(ch);\n}\n\n/*\n\tCheck if the stream starts with an identifier.\n */\n\nfunction is_ident(chars) {\n\tif (_i >= chars.length) {\n\t\treturn false;\n\t}\n\tlet ch = chars[_i];\n\tif (IdentStartCodePoint.test(ch)) {\n\t\treturn true;\n\t}\n\tif (ch === '-') {\n\t\tif (chars.length - _i < 2) {\n\t\t\treturn false;\n\t\t}\n\t\tlet ch1 = chars[_i + 1];\n\t\tif (ch1 === '-' || IdentStartCodePoint.test(ch1)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\treturn false;\n}\n\n/*\n\t4.3.3. Consume a numeric token\n\thttps://drafts.csswg.org/css-syntax/#consume-numeric-token\n */\n\nconst huenits = {\n\tdeg: 1,\n\trad: 180 / Math.PI,\n\tgrad: 9 / 10,\n\tturn: 360\n};\n\nfunction num(chars) {\n\tlet value = '';\n\tif (chars[_i] === '-' || chars[_i] === '+') {\n\t\tvalue += chars[_i++];\n\t}\n\tvalue += digits(chars);\n\tif (chars[_i] === '.' && /\\d/.test(chars[_i + 1])) {\n\t\tvalue += chars[_i++] + digits(chars);\n\t}\n\tif (chars[_i] === 'e' || chars[_i] === 'E') {\n\t\tif (\n\t\t\t(chars[_i + 1] === '-' || chars[_i + 1] === '+') &&\n\t\t\t/\\d/.test(chars[_i + 2])\n\t\t) {\n\t\t\tvalue += chars[_i++] + chars[_i++] + digits(chars);\n\t\t} else if (/\\d/.test(chars[_i + 1])) {\n\t\t\tvalue += chars[_i++] + digits(chars);\n\t\t}\n\t}\n\tif (is_ident(chars)) {\n\t\tlet id = ident(chars);\n\t\tif (id === 'deg' || id === 'rad' || id === 'turn' || id === 'grad') {\n\t\t\treturn { type: Tok.Hue, value: value * huenits[id] };\n\t\t}\n\t\treturn undefined;\n\t}\n\tif (chars[_i] === '%') {\n\t\t_i++;\n\t\treturn { type: Tok.Percentage, value: +value };\n\t}\n\treturn { type: Tok.Number, value: +value };\n}\n\n/*\n\tConsume digits.\n */\nfunction digits(chars) {\n\tlet v = '';\n\twhile (/\\d/.test(chars[_i])) {\n\t\tv += chars[_i++];\n\t}\n\treturn v;\n}\n\n/*\n\tConsume an identifier.\n */\nfunction ident(chars) {\n\tlet v = '';\n\twhile (_i < chars.length && IdentCodePoint.test(chars[_i])) {\n\t\tv += chars[_i++];\n\t}\n\treturn v;\n}\n\n/*\n\tConsume an ident-like token.\n */\nfunction identlike(chars) {\n\tlet v = ident(chars);\n\tif (chars[_i] === '(') {\n\t\t_i++;\n\t\treturn { type: Tok.Function, value: v };\n\t}\n\tif (v === 'none') {\n\t\treturn { type: Tok.None, value: undefined };\n\t}\n\treturn { type: Tok.Ident, value: v };\n}\n\nexport function tokenize(str = '') {\n\tlet chars = str.trim();\n\tlet tokens = [];\n\tlet ch;\n\n\t/* reset counter */\n\t_i = 0;\n\n\twhile (_i < chars.length) {\n\t\tch = chars[_i++];\n\n\t\t/*\n\t\t\tConsume whitespace without emitting it\n\t\t */\n\t\tif (ch === '\\n' || ch === '\\t' || ch === ' ') {\n\t\t\twhile (\n\t\t\t\t_i < chars.length &&\n\t\t\t\t(chars[_i] === '\\n' || chars[_i] === '\\t' || chars[_i] === ' ')\n\t\t\t) {\n\t\t\t\t_i++;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === ',') {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === ')') {\n\t\t\ttokens.push({ type: Tok.ParenClose });\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === '+') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '-') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\ttokens.push({ type: Tok.Ident, value: ident(chars) });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '.') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '/') {\n\t\t\twhile (\n\t\t\t\t_i < chars.length &&\n\t\t\t\t(chars[_i] === '\\n' || chars[_i] === '\\t' || chars[_i] === ' ')\n\t\t\t) {\n\t\t\t\t_i++;\n\t\t\t}\n\t\t\tlet alpha;\n\t\t\tif (is_num(chars)) {\n\t\t\t\talpha = num(chars);\n\t\t\t\tif (alpha.type !== Tok.Hue) {\n\t\t\t\t\ttokens.push({ type: Tok.Alpha, value: alpha });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\tif (ident(chars) === 'none') {\n\t\t\t\t\ttokens.push({\n\t\t\t\t\t\ttype: Tok.Alpha,\n\t\t\t\t\t\tvalue: { type: Tok.None, value: undefined }\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (/\\d/.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(num(chars));\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (IdentStartCodePoint.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(identlike(chars));\n\t\t\tcontinue;\n\t\t}\n\n\t\t/*\n\t\t\tTreat everything not already handled as an error.\n\t\t */\n\t\treturn undefined;\n\t}\n\n\treturn tokens;\n}\n\nexport function parseColorSyntax(tokens) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function || token.value !== 'color') {\n\t\treturn undefined;\n\t}\n\ttoken = tokens[tokens._i++];\n\tif (token.type !== Tok.Ident) {\n\t\treturn undefined;\n\t}\n\tconst mode = colorProfiles[token.value];\n\tif (!mode) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode };\n\tconst coords = consumeCoords(tokens, false);\n\tif (!coords) {\n\t\treturn undefined;\n\t}\n\tconst channels = getMode(mode).channels;\n\tfor (let ii = 0, c, ch; ii < channels.length; ii++) {\n\t\tc = coords[ii];\n\t\tch = channels[ii];\n\t\tif (c.type !== Tok.None) {\n\t\t\tres[ch] = c.type === Tok.Number ? c.value : c.value / 100;\n\t\t\tif (ch === 'alpha') {\n\t\t\t\tres[ch] = Math.max(0, Math.min(1, res[ch]));\n\t\t\t}\n\t\t}\n\t}\n\treturn res;\n}\n\nfunction consumeCoords(tokens, includeHue) {\n\tconst coords = [];\n\tlet token;\n\twhile (tokens._i < tokens.length) {\n\t\ttoken = tokens[tokens._i++];\n\t\tif (\n\t\t\ttoken.type === Tok.None ||\n\t\t\ttoken.type === Tok.Number ||\n\t\t\ttoken.type === Tok.Alpha ||\n\t\t\ttoken.type === Tok.Percentage ||\n\t\t\t(includeHue && token.type === Tok.Hue)\n\t\t) {\n\t\t\tcoords.push(token);\n\t\t\tcontinue;\n\t\t}\n\t\tif (token.type === Tok.ParenClose) {\n\t\t\tif (tokens._i < tokens.length) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tif (coords.length < 3 || coords.length > 4) {\n\t\treturn undefined;\n\t}\n\n\tif (coords.length === 4) {\n\t\tif (coords[3].type !== Tok.Alpha) {\n\t\t\treturn undefined;\n\t\t}\n\t\tcoords[3] = coords[3].value;\n\t}\n\tif (coords.length === 3) {\n\t\tcoords.push({ type: Tok.None, value: undefined });\n\t}\n\n\treturn coords.every(c => c.type !== Tok.Alpha) ? coords : undefined;\n}\n\nexport function parseModernSyntax(tokens, includeHue) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function) {\n\t\treturn undefined;\n\t}\n\tlet coords = consumeCoords(tokens, includeHue);\n\tif (!coords) {\n\t\treturn undefined;\n\t}\n\tcoords.unshift(token.value);\n\treturn coords;\n}\n\nconst parse = color => {\n\tif (typeof color !== 'string') {\n\t\treturn undefined;\n\t}\n\tconst tokens = tokenize(color);\n\tconst parsed = tokens ? parseModernSyntax(tokens, true) : undefined;\n\tlet result = undefined;\n\tlet i = 0;\n\tlet len = parsers.length;\n\twhile (i < len) {\n\t\tif ((result = parsers[i++](color, parsed)) !== undefined) {\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn tokens ? parseColorSyntax(tokens) : undefined;\n};\n\nexport default parse;\n","import { Tok } from '../parse.js';\n\nfunction parseRgb(color, parsed) {\n\tif (!parsed || (parsed[0] !== 'rgb' && parsed[0] !== 'rgba')) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'rgb' };\n\tconst [, r, g, b, alpha] = parsed;\n\tif (r.type === Tok.Hue || g.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (r.type !== Tok.None) {\n\t\tres.r = r.type === Tok.Number ? r.value / 255 : r.value / 100;\n\t}\n\tif (g.type !== Tok.None) {\n\t\tres.g = g.type === Tok.Number ? g.value / 255 : g.value / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value / 255 : b.value / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseRgb;\n","const parseTransparent = c =>\n\tc === 'transparent'\n\t\t? { mode: 'rgb', r: 0, g: 0, b: 0, alpha: 0 }\n\t\t: undefined;\n\nexport default parseTransparent;\n","const lerp = (a, b, t) => a + t * (b - a);\nconst unlerp = (a, b, v) => (v - a) / (b - a);\n\nconst blerp = (a00, a01, a10, a11, tx, ty) => {\n\treturn lerp(lerp(a00, a01, tx), lerp(a10, a11, tx), ty);\n};\n\nconst trilerp = (\n\ta000,\n\ta010,\n\ta100,\n\ta110,\n\ta001,\n\ta011,\n\ta101,\n\ta111,\n\ttx,\n\tty,\n\ttz\n) => {\n\treturn lerp(\n\t\tblerp(a000, a010, a100, a110, tx, ty),\n\t\tblerp(a001, a011, a101, a111, tx, ty),\n\t\ttz\n\t);\n};\n\nexport { lerp, blerp, trilerp, unlerp };\n","const get_classes = arr => {\n\tlet classes = [];\n\tfor (let i = 0; i < arr.length - 1; i++) {\n\t\tlet a = arr[i];\n\t\tlet b = arr[i + 1];\n\t\tif (a === undefined && b === undefined) {\n\t\t\tclasses.push(undefined);\n\t\t} else if (a !== undefined && b !== undefined) {\n\t\t\tclasses.push([a, b]);\n\t\t} else {\n\t\t\tclasses.push(a !== undefined ? [a, a] : [b, b]);\n\t\t}\n\t}\n\treturn classes;\n};\n\nconst interpolatorPiecewise = interpolator => arr => {\n\tlet classes = get_classes(arr);\n\treturn t => {\n\t\tlet cls = t * classes.length;\n\t\tlet idx = t >= 1 ? classes.length - 1 : Math.max(Math.floor(cls), 0);\n\t\tlet pair = classes[idx];\n\t\treturn pair === undefined\n\t\t\t? undefined\n\t\t\t: interpolator(pair[0], pair[1], cls - idx);\n\t};\n};\n\nexport { interpolatorPiecewise };\n","import { lerp } from './lerp.js';\nimport { interpolatorPiecewise } from './piecewise.js';\n\nexport const interpolatorLinear = interpolatorPiecewise(lerp);\n","const fixupAlpha = arr => {\n\tlet some_defined = false;\n\tlet res = arr.map(v => {\n\t\tif (v !== undefined) {\n\t\t\tsome_defined = true;\n\t\t\treturn v;\n\t\t}\n\t\treturn 1;\n\t});\n\treturn some_defined ? res : arr;\n};\n\nexport { fixupAlpha };\n","import parseNamed from './parseNamed.js';\nimport parseHex from './parseHex.js';\nimport parseRgbLegacy from './parseRgbLegacy.js';\nimport parseRgb from './parseRgb.js';\nimport parseTransparent from './parseTransparent.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\n/*\n\tsRGB color space\n */\n\nconst definition = {\n\tmode: 'rgb',\n\tchannels: ['r', 'g', 'b', 'alpha'],\n\tparse: [\n\t\tparseRgb,\n\t\tparseHex,\n\t\tparseRgbLegacy,\n\t\tparseNamed,\n\t\tparseTransparent,\n\t\t'srgb'\n\t],\n\tserialize: 'srgb',\n\tinterpolate: {\n\t\tr: interpolatorLinear,\n\t\tg: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\tgamut: true,\n\twhite: { r: 1, g: 1, b: 1 },\n\tblack: { r: 0, g: 0, b: 0 }\n};\n\nexport default definition;\n","/*\n\tConvert A98 RGB values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n*/\n\nconst linearize = (v = 0) => Math.pow(Math.abs(v), 563 / 256) * Math.sign(v);\n\nconst convertA98ToXyz65 = a98 => {\n\tlet r = linearize(a98.r);\n\tlet g = linearize(a98.g);\n\tlet b = linearize(a98.b);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.5766690429101305 * r +\n\t\t\t0.1855582379065463 * g +\n\t\t\t0.1882286462349947 * b,\n\t\ty:\n\t\t\t0.297344975250536 * r +\n\t\t\t0.6273635662554661 * g +\n\t\t\t0.0752914584939979 * b,\n\t\tz:\n\t\t\t0.0270313613864123 * r +\n\t\t\t0.0706888525358272 * g +\n\t\t\t0.9913375368376386 * b\n\t};\n\tif (a98.alpha !== undefined) {\n\t\tres.alpha = a98.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertA98ToXyz65;\n","/*\n\tConvert CIE XYZ D65 values to A98 RGB\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst gamma = v => Math.pow(Math.abs(v), 256 / 563) * Math.sign(v);\n\nconst convertXyz65ToA98 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'a98',\n\t\tr: gamma(\n\t\t\tx * 2.0415879038107465 -\n\t\t\t\ty * 0.5650069742788597 -\n\t\t\t\t0.3447313507783297 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.9692436362808798 +\n\t\t\t\ty * 1.8759675015077206 +\n\t\t\t\t0.0415550574071756 * z\n\t\t),\n\t\tb: gamma(\n\t\t\tx * 0.0134442806320312 -\n\t\t\t\ty * 0.1183623922310184 +\n\t\t\t\t1.0151749943912058 * z\n\t\t)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToA98;\n","const fn = (c = 0) => {\n\tconst abs = Math.abs(c);\n\tif (abs <= 0.04045) {\n\t\treturn c / 12.92;\n\t}\n\treturn (Math.sign(c) || 1) * Math.pow((abs + 0.055) / 1.055, 2.4);\n};\n\nconst convertRgbToLrgb = ({ r, g, b, alpha }) => {\n\tlet res = {\n\t\tmode: 'lrgb',\n\t\tr: fn(r),\n\t\tg: fn(g),\n\t\tb: fn(b)\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToLrgb;\n","/*\n\tConvert sRGB values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://observablehq.com/@danburzo/color-matrix-calculator\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertRgbToXyz65 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.4123907992659593 * r +\n\t\t\t0.357584339383878 * g +\n\t\t\t0.1804807884018343 * b,\n\t\ty:\n\t\t\t0.2126390058715102 * r +\n\t\t\t0.715168678767756 * g +\n\t\t\t0.0721923153607337 * b,\n\t\tz:\n\t\t\t0.0193308187155918 * r +\n\t\t\t0.119194779794626 * g +\n\t\t\t0.9505321522496607 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToXyz65;\n","const fn = (c = 0) => {\n\tconst abs = Math.abs(c);\n\tif (abs > 0.0031308) {\n\t\treturn (Math.sign(c) || 1) * (1.055 * Math.pow(abs, 1 / 2.4) - 0.055);\n\t}\n\treturn c * 12.92;\n};\n\nconst convertLrgbToRgb = ({ r, g, b, alpha }, mode = 'rgb') => {\n\tlet res = {\n\t\tmode,\n\t\tr: fn(r),\n\t\tg: fn(g),\n\t\tb: fn(b)\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLrgbToRgb;\n","/*\n\tCIE XYZ D65 values to sRGB.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://observablehq.com/@danburzo/color-matrix-calculator\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz65ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb({\n\t\tr:\n\t\t\tx * 3.2409699419045226 -\n\t\t\ty * 1.5373831775700939 -\n\t\t\t0.4986107602930034 * z,\n\t\tg:\n\t\t\tx * -0.9692436362808796 +\n\t\t\ty * 1.8759675015077204 +\n\t\t\t0.0415550574071756 * z,\n\t\tb:\n\t\t\tx * 0.0556300796969936 -\n\t\t\ty * 0.2039769588889765 +\n\t\t\t1.0569715142428784 * z\n\t});\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToRgb;\n","import rgb from '../rgb/definition.js';\n\nimport convertA98ToXyz65 from './convertA98ToXyz65.js';\nimport convertXyz65ToA98 from './convertXyz65ToA98.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'a98',\n\tparse: ['a98-rgb'],\n\tserialize: 'a98-rgb',\n\n\tfromMode: {\n\t\trgb: color => convertXyz65ToA98(convertRgbToXyz65(color)),\n\t\txyz65: convertXyz65ToA98\n\t},\n\n\ttoMode: {\n\t\trgb: color => convertXyz65ToRgb(convertA98ToXyz65(color)),\n\t\txyz65: convertA98ToXyz65\n\t}\n};\n\nexport default definition;\n","const normalizeHue = hue => ((hue = hue % 360) < 0 ? hue + 360 : hue);\n\nexport default normalizeHue;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst hue = (hues, fn) => {\n\treturn hues\n\t\t.map((hue, idx, arr) => {\n\t\t\tif (hue === undefined) {\n\t\t\t\treturn hue;\n\t\t\t}\n\t\t\tlet normalized = normalizeHue(hue);\n\t\t\tif (idx === 0 || hues[idx - 1] === undefined) {\n\t\t\t\treturn normalized;\n\t\t\t}\n\t\t\treturn fn(normalized - normalizeHue(arr[idx - 1]));\n\t\t})\n\t\t.reduce((acc, curr) => {\n\t\t\tif (\n\t\t\t\t!acc.length ||\n\t\t\t\tcurr === undefined ||\n\t\t\t\tacc[acc.length - 1] === undefined\n\t\t\t) {\n\t\t\t\tacc.push(curr);\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\tacc.push(curr + acc[acc.length - 1]);\n\t\t\treturn acc;\n\t\t}, []);\n};\n\nconst fixupHueShorter = arr =>\n\thue(arr, d => (Math.abs(d) <= 180 ? d : d - 360 * Math.sign(d)));\nconst fixupHueLonger = arr =>\n\thue(arr, d => (Math.abs(d) >= 180 || d === 0 ? d : d - 360 * Math.sign(d)));\nconst fixupHueIncreasing = arr => hue(arr, d => (d >= 0 ? d : d + 360));\nconst fixupHueDecreasing = arr => hue(arr, d => (d <= 0 ? d : d - 360));\n\nexport {\n\tfixupHueShorter,\n\tfixupHueLonger,\n\tfixupHueIncreasing,\n\tfixupHueDecreasing\n};\n","export const M = [-0.14861, 1.78277, -0.29227, -0.90649, 1.97294, 0];\n\nexport const degToRad = Math.PI / 180;\nexport const radToDeg = 180 / Math.PI;\n","/*\n\tConvert a RGB color to the Cubehelix HSL color space.\n\n\tThis computation is not present in Green's paper:\n\thttps://arxiv.org/pdf/1108.5083.pdf\n\n\t...but can be derived from the inverse, HSL to RGB conversion.\n\n\tIt matches the math in Mike Bostock's D3 implementation:\n\n\thttps://github.com/d3/d3-color/blob/master/src/cubehelix.js\n */\n\nimport { radToDeg, M } from './constants.js';\n\nlet DE = M[3] * M[4];\nlet BE = M[1] * M[4];\nlet BCAD = M[1] * M[2] - M[0] * M[3];\n\nconst convertRgbToCubehelix = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet l = (BCAD * b + r * DE - g * BE) / (BCAD + DE - BE);\n\tlet x = b - l;\n\tlet y = (M[4] * (g - l) - M[2] * x) / M[3];\n\n\tlet res = {\n\t\tmode: 'cubehelix',\n\t\tl: l,\n\t\ts:\n\t\t\tl === 0 || l === 1\n\t\t\t\t? undefined\n\t\t\t\t: Math.sqrt(x * x + y * y) / (M[4] * l * (1 - l))\n\t};\n\n\tif (res.s) res.h = Math.atan2(y, x) * radToDeg - 120;\n\tif (alpha !== undefined) res.alpha = alpha;\n\n\treturn res;\n};\n\nexport default convertRgbToCubehelix;\n","import { degToRad, M } from './constants.js';\n\nconst convertCubehelixToRgb = ({ h, s, l, alpha }) => {\n\tlet res = { mode: 'rgb' };\n\n\th = (h === undefined ? 0 : h + 120) * degToRad;\n\tif (l === undefined) l = 0;\n\n\tlet amp = s === undefined ? 0 : s * l * (1 - l);\n\n\tlet cosh = Math.cos(h);\n\tlet sinh = Math.sin(h);\n\n\tres.r = l + amp * (M[0] * cosh + M[1] * sinh);\n\tres.g = l + amp * (M[2] * cosh + M[3] * sinh);\n\tres.b = l + amp * (M[4] * cosh + M[5] * sinh);\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertCubehelixToRgb;\n","import { getMode } from './modes.js';\nimport converter from './converter.js';\nimport normalizeHue from './util/normalizeHue.js';\n\nconst differenceHueSaturation = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined || !std.s || !smp.s) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tlet dH = Math.sin((((smp_h - std_h + 360) / 2) * Math.PI) / 180);\n\treturn 2 * Math.sqrt(std.s * smp.s) * dH;\n};\n\nconst differenceHueNaive = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tif (Math.abs(smp_h - std_h) > 180) {\n\t\t// todo should this be normalized once again?\n\t\treturn std_h - (smp_h - 360 * Math.sign(smp_h - std_h));\n\t}\n\treturn smp_h - std_h;\n};\n\nconst differenceHueChroma = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined || !std.c || !smp.c) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tlet dH = Math.sin((((smp_h - std_h + 360) / 2) * Math.PI) / 180);\n\treturn 2 * Math.sqrt(std.c * smp.c) * dH;\n};\n\nconst differenceEuclidean = (mode = 'rgb', weights = [1, 1, 1, 0]) => {\n\tlet def = getMode(mode);\n\tlet channels = def.channels;\n\tlet diffs = def.difference;\n\tlet conv = converter(mode);\n\treturn (std, smp) => {\n\t\tlet ConvStd = conv(std);\n\t\tlet ConvSmp = conv(smp);\n\t\treturn Math.sqrt(\n\t\t\tchannels.reduce((sum, k, idx) => {\n\t\t\t\tlet delta = diffs[k]\n\t\t\t\t\t? diffs[k](ConvStd, ConvSmp)\n\t\t\t\t\t: ConvStd[k] - ConvSmp[k];\n\t\t\t\treturn (\n\t\t\t\t\tsum +\n\t\t\t\t\t(weights[idx] || 0) * Math.pow(isNaN(delta) ? 0 : delta, 2)\n\t\t\t\t);\n\t\t\t}, 0)\n\t\t);\n\t};\n};\n\nconst differenceCie76 = () => differenceEuclidean('lab65');\n\nconst differenceCie94 = (kL = 1, K1 = 0.045, K2 = 0.015) => {\n\tlet lab = converter('lab65');\n\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\n\t\t// Extract Lab values, and compute Chroma\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\tlet dL2 = Math.pow(lStd - lSmp, 2);\n\t\tlet dC2 = Math.pow(cStd - cSmp, 2);\n\t\tlet dH2 = Math.pow(aStd - aSmp, 2) + Math.pow(bStd - bSmp, 2) - dC2;\n\n\t\treturn Math.sqrt(\n\t\t\tdL2 / Math.pow(kL, 2) +\n\t\t\t\tdC2 / Math.pow(1 + K1 * cStd, 2) +\n\t\t\t\tdH2 / Math.pow(1 + K2 * cStd, 2)\n\t\t);\n\t};\n};\n\n/*\n\tCIEDE2000 color difference, original Matlab implementation by Gaurav Sharma\n\tBased on \"The CIEDE2000 Color-Difference Formula: Implementation Notes, Supplementary Test Data, and Mathematical Observations\" \n\tby Gaurav Sharma, Wencheng Wu, Edul N. Dalal in Color Research and Application, vol. 30. No. 1, pp. 21-30, February 2005.\n\thttp://www2.ece.rochester.edu/~gsharma/ciede2000/\n */\n\nconst differenceCiede2000 = (Kl = 1, Kc = 1, Kh = 1) => {\n\tlet lab = converter('lab65');\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\tlet cAvg = (cStd + cSmp) / 2;\n\n\t\tlet G =\n\t\t\t0.5 *\n\t\t\t(1 -\n\t\t\t\tMath.sqrt(\n\t\t\t\t\tMath.pow(cAvg, 7) / (Math.pow(cAvg, 7) + Math.pow(25, 7))\n\t\t\t\t));\n\n\t\tlet apStd = aStd * (1 + G);\n\t\tlet apSmp = aSmp * (1 + G);\n\n\t\tlet cpStd = Math.sqrt(apStd * apStd + bStd * bStd);\n\t\tlet cpSmp = Math.sqrt(apSmp * apSmp + bSmp * bSmp);\n\n\t\tlet hpStd =\n\t\t\tMath.abs(apStd) + Math.abs(bStd) === 0\n\t\t\t\t? 0\n\t\t\t\t: Math.atan2(bStd, apStd);\n\t\thpStd += (hpStd < 0) * 2 * Math.PI;\n\n\t\tlet hpSmp =\n\t\t\tMath.abs(apSmp) + Math.abs(bSmp) === 0\n\t\t\t\t? 0\n\t\t\t\t: Math.atan2(bSmp, apSmp);\n\t\thpSmp += (hpSmp < 0) * 2 * Math.PI;\n\n\t\tlet dL = lSmp - lStd;\n\t\tlet dC = cpSmp - cpStd;\n\n\t\tlet dhp = cpStd * cpSmp === 0 ? 0 : hpSmp - hpStd;\n\t\tdhp -= (dhp > Math.PI) * 2 * Math.PI;\n\t\tdhp += (dhp < -Math.PI) * 2 * Math.PI;\n\n\t\tlet dH = 2 * Math.sqrt(cpStd * cpSmp) * Math.sin(dhp / 2);\n\n\t\tlet Lp = (lStd + lSmp) / 2;\n\t\tlet Cp = (cpStd + cpSmp) / 2;\n\n\t\tlet hp;\n\t\tif (cpStd * cpSmp === 0) {\n\t\t\thp = hpStd + hpSmp;\n\t\t} else {\n\t\t\thp = (hpStd + hpSmp) / 2;\n\t\t\thp -= (Math.abs(hpStd - hpSmp) > Math.PI) * Math.PI;\n\t\t\thp += (hp < 0) * 2 * Math.PI;\n\t\t}\n\n\t\tlet Lpm50 = Math.pow(Lp - 50, 2);\n\t\tlet T =\n\t\t\t1 -\n\t\t\t0.17 * Math.cos(hp - Math.PI / 6) +\n\t\t\t0.24 * Math.cos(2 * hp) +\n\t\t\t0.32 * Math.cos(3 * hp + Math.PI / 30) -\n\t\t\t0.2 * Math.cos(4 * hp - (63 * Math.PI) / 180);\n\n\t\tlet Sl = 1 + (0.015 * Lpm50) / Math.sqrt(20 + Lpm50);\n\t\tlet Sc = 1 + 0.045 * Cp;\n\t\tlet Sh = 1 + 0.015 * Cp * T;\n\n\t\tlet deltaTheta =\n\t\t\t((30 * Math.PI) / 180) *\n\t\t\tMath.exp(-1 * Math.pow(((180 / Math.PI) * hp - 275) / 25, 2));\n\t\tlet Rc =\n\t\t\t2 *\n\t\t\tMath.sqrt(Math.pow(Cp, 7) / (Math.pow(Cp, 7) + Math.pow(25, 7)));\n\n\t\tlet Rt = -1 * Math.sin(2 * deltaTheta) * Rc;\n\n\t\treturn Math.sqrt(\n\t\t\tMath.pow(dL / (Kl * Sl), 2) +\n\t\t\t\tMath.pow(dC / (Kc * Sc), 2) +\n\t\t\t\tMath.pow(dH / (Kh * Sh), 2) +\n\t\t\t\t(((Rt * dC) / (Kc * Sc)) * dH) / (Kh * Sh)\n\t\t);\n\t};\n};\n\n/*\n\tCMC (l:c) difference formula\n\n\tReferences:\n\t\thttps://en.wikipedia.org/wiki/Color_difference#CMC_l:c_(1984)\n\t\thttp://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n */\nconst differenceCmc = (l = 1, c = 1) => {\n\tlet lab = converter('lab65');\n\n\t/*\n\t\tComparte two colors:\n\t\tstd - standard (first) color\n\t\tsmp - sample (second) color\n\t */\n\treturn (std, smp) => {\n\t\t// convert standard color to Lab\n\t\tlet LabStd = lab(std);\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\n\t\t// Obtain hue/chroma\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\t\tlet hStd = Math.atan2(bStd, aStd);\n\t\thStd = hStd + 2 * Math.PI * (hStd < 0);\n\n\t\t// convert sample color to Lab, obtain LCh\n\t\tlet LabSmp = lab(smp);\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\n\t\t// Obtain chroma\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\t// lightness delta squared\n\t\tlet dL2 = Math.pow(lStd - lSmp, 2);\n\n\t\t// chroma delta squared\n\t\tlet dC2 = Math.pow(cStd - cSmp, 2);\n\n\t\t// hue delta squared\n\t\tlet dH2 = Math.pow(aStd - aSmp, 2) + Math.pow(bStd - bSmp, 2) - dC2;\n\n\t\tlet F = Math.sqrt(Math.pow(cStd, 4) / (Math.pow(cStd, 4) + 1900));\n\t\tlet T =\n\t\t\thStd >= (164 / 180) * Math.PI && hStd <= (345 / 180) * Math.PI\n\t\t\t\t? 0.56 + Math.abs(0.2 * Math.cos(hStd + (168 / 180) * Math.PI))\n\t\t\t\t: 0.36 + Math.abs(0.4 * Math.cos(hStd + (35 / 180) * Math.PI));\n\n\t\tlet Sl = lStd < 16 ? 0.511 : (0.040975 * lStd) / (1 + 0.01765 * lStd);\n\t\tlet Sc = (0.0638 * cStd) / (1 + 0.0131 * cStd) + 0.638;\n\t\tlet Sh = Sc * (F * T + 1 - F);\n\n\t\treturn Math.sqrt(\n\t\t\tdL2 / Math.pow(l * Sl, 2) +\n\t\t\t\tdC2 / Math.pow(c * Sc, 2) +\n\t\t\t\tdH2 / Math.pow(Sh, 2)\n\t\t);\n\t};\n};\n\n/*\n\n\tHyAB color difference formula, introduced in:\n\n\t\tAbasi S, Amani Tehran M, Fairchild MD. \n\t\t\"Distance metrics for very large color differences.\"\n\t\tColor Res Appl. 2019; 1–16. \n\t\thttps://doi.org/10.1002/col.22451\n\n\tPDF available at:\n\t\n\t\thttp://markfairchild.org/PDFs/PAP40.pdf\n */\nconst differenceHyab = () => {\n\tlet lab = converter('lab65');\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\t\tlet dL = LabStd.l - LabSmp.l;\n\t\tlet dA = LabStd.a - LabSmp.a;\n\t\tlet dB = LabStd.b - LabSmp.b;\n\t\treturn Math.abs(dL) + Math.sqrt(dA * dA + dB * dB);\n\t};\n};\n\n/*\n\t\"Measuring perceived color difference using YIQ NTSC\n\ttransmission color space in mobile applications\"\n\t\t\n\t\tby Yuriy Kotsarenko, Fernando Ramos in:\n\t\tProgramación Matemática y Software (2010) \n\n\tAvailable at:\n\t\t\n\t\thttp://www.progmat.uaem.mx:8080/artVol2Num2/Articulo3Vol2Num2.pdf\n */\nconst differenceKotsarenkoRamos = () =>\n\tdifferenceEuclidean('yiq', [0.5053, 0.299, 0.1957]);\n\n/*\n\tΔE_ITP, as defined in Rec. ITU-R BT.2124:\n\n\thttps://www.itu.int/rec/R-REC-BT.2124/en\n*/\nconst differenceItp = () =>\n\tdifferenceEuclidean('itp', [518400, 129600, 518400]);\n\nexport {\n\tdifferenceHueChroma,\n\tdifferenceHueSaturation,\n\tdifferenceHueNaive,\n\tdifferenceEuclidean,\n\tdifferenceCie76,\n\tdifferenceCie94,\n\tdifferenceCiede2000,\n\tdifferenceCmc,\n\tdifferenceHyab,\n\tdifferenceKotsarenkoRamos,\n\tdifferenceItp\n};\n","import converter from './converter.js';\nimport { getMode } from './modes.js';\n\nconst averageAngle = val => {\n\t// See: https://en.wikipedia.org/wiki/Mean_of_circular_quantities\n\tlet sum = val.reduce(\n\t\t(sum, val) => {\n\t\t\tif (val !== undefined) {\n\t\t\t\tlet rad = (val * Math.PI) / 180;\n\t\t\t\tsum.sin += Math.sin(rad);\n\t\t\t\tsum.cos += Math.cos(rad);\n\t\t\t}\n\t\t\treturn sum;\n\t\t},\n\t\t{ sin: 0, cos: 0 }\n\t);\n\tlet angle = (Math.atan2(sum.sin, sum.cos) * 180) / Math.PI;\n\treturn angle < 0 ? 360 + angle : angle;\n};\n\nconst averageNumber = val => {\n\tlet a = val.filter(v => v !== undefined);\n\treturn a.length ? a.reduce((sum, v) => sum + v, 0) / a.length : undefined;\n};\n\nconst isfn = o => typeof o === 'function';\n\nfunction average(colors, mode = 'rgb', overrides) {\n\tlet def = getMode(mode);\n\tlet cc = colors.map(converter(mode));\n\treturn def.channels.reduce(\n\t\t(res, ch) => {\n\t\t\tlet arr = cc.map(c => c[ch]).filter(val => val !== undefined);\n\t\t\tif (arr.length) {\n\t\t\t\tlet fn;\n\t\t\t\tif (isfn(overrides)) {\n\t\t\t\t\tfn = overrides;\n\t\t\t\t} else if (overrides && isfn(overrides[ch])) {\n\t\t\t\t\tfn = overrides[ch];\n\t\t\t\t} else if (def.average && isfn(def.average[ch])) {\n\t\t\t\t\tfn = def.average[ch];\n\t\t\t\t} else {\n\t\t\t\t\tfn = averageNumber;\n\t\t\t\t}\n\t\t\t\tres[ch] = fn(arr, ch);\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t{ mode }\n\t);\n}\n\nexport { average, averageAngle, averageNumber };\n","/* \n\tDave Green's Cubehelix\n\t----------------------\n\n\tGreen, D. A., 2011, \"A colour scheme for the display of astronomical intensity images\", \n\tBulletin of the Astronomical Society of India, 39, 289. (2011BASI...39..289G at ADS.) \n\n\thttps://www.mrao.cam.ac.uk/%7Edag/CUBEHELIX/\n\thttps://arxiv.org/pdf/1108.5083.pdf\n\n\tAlthough Cubehelix was defined to be a method to obtain a colour scheme,\n\tit actually contains a definition of a colour space, as identified by \n\tMike Bostock and implemented in D3.js.\n\n\tGreen's paper introduces the following terminology:\n\n\t* \ta `lightness` dimension in the interval [0, 1] \n\t\ton which we interpolate to obtain the colour scheme\n\t*\ta `start` colour that is analogous to a Hue in HSL space\n\t*\ta number of `rotations` around the Hue cylinder.\n\t*\ta `hue` parameter which should more appropriately be called `saturation`\n\t\n\tAs such, the original definition of the Cubehelix scheme is actually an\n\tinterpolation between two colors in the Cubehelix space:\n\n\tH: start \t\t\t\tH: start + 360 * rotations\n\tS: hue \t\t\t->\t\tS: hue\n\tL: 0\t\t\t\t\tL: 1\n\n\tWe can therefore extend the interpolation to any two colors in this space,\n\twith a variable Saturation and a Lightness interval other than the fixed 0 -> 1.\n*/\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport convertRgbToCubehelix from './convertRgbToCubehelix.js';\nimport convertCubehelixToRgb from './convertCubehelixToRgb.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'cubehelix',\n\tchannels: ['h', 's', 'l', 'alpha'],\n\tparse: ['--cubehelix'],\n\tserialize: '--cubehelix',\n\n\tranges: {\n\t\th: [0, 360],\n\t\ts: [0, 4.614],\n\t\tl: [0, 1]\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToCubehelix\n\t},\n\n\ttoMode: {\n\t\trgb: convertCubehelixToRgb\n\t},\n\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n/* \n\tReferences: \n\t\t* https://drafts.csswg.org/css-color/#lab-to-lch\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n*/\nconst convertLabToLch = ({ l, a, b, alpha }, mode = 'lch') => {\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet c = Math.sqrt(a * a + b * b);\n\tlet res = { mode, l, c };\n\tif (c) res.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLabToLch;\n","/* \n\tReferences: \n\t\t* https://drafts.csswg.org/css-color/#lch-to-lab\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n*/\nconst convertLchToLab = ({ l, c, h, alpha }, mode = 'lab') => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode,\n\t\tl,\n\t\ta: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tb: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLchToLab;\n","export const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","/*\n\tThe XYZ tristimulus values (white point)\n\tof standard illuminants for the CIE 1931 2° \n\tstandard observer.\n\n\tSee: https://en.wikipedia.org/wiki/Standard_illuminant\n */\n\nexport const D50 = {\n\tX: 0.3457 / 0.3585,\n\tY: 1,\n\tZ: (1 - 0.3457 - 0.3585) / 0.3585\n};\n\nexport const D65 = {\n\tX: 0.3127 / 0.329,\n\tY: 1,\n\tZ: (1 - 0.3127 - 0.329) / 0.329\n};\n\nexport const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","import { k, e } from '../xyz65/constants.js';\nimport { D65 } from '../constants.js';\n\nlet fn = v => (Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k);\n\nconst convertLab65ToXyz65 = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx: fn(fx) * D65.X,\n\t\ty: fn(fy) * D65.Y,\n\t\tz: fn(fz) * D65.Z\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLab65ToXyz65;\n","import convertLab65ToXyz65 from './convertLab65ToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst convertLab65ToRgb = lab => convertXyz65ToRgb(convertLab65ToXyz65(lab));\n\nexport default convertLab65ToRgb;\n","import { k, e } from '../xyz65/constants.js';\nimport { D65 } from '../constants.js';\n\nconst f = value => (value > e ? Math.cbrt(value) : (k * value + 16) / 116);\n\nconst convertXyz65ToLab65 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet f0 = f(x / D65.X);\n\tlet f1 = f(y / D65.Y);\n\tlet f2 = f(z / D65.Z);\n\n\tlet res = {\n\t\tmode: 'lab65',\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToLab65;\n","import convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToLab65 from './convertXyz65ToLab65.js';\n\nconst convertRgbToLab65 = rgb => {\n\tlet res = convertXyz65ToLab65(convertRgbToXyz65(rgb));\n\n\t// Fixes achromatic RGB colors having a _slight_ chroma due to floating-point errors\n\t// and approximated computations in sRGB <-> CIELab.\n\t// See: https://github.com/d3/d3-color/pull/46\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToLab65;\n","export const kE = 1;\nexport const kCH = 1;\nexport const θ = (26 / 180) * Math.PI;\nexport const cosθ = Math.cos(θ);\nexport const sinθ = Math.sin(θ);\nexport const factor = 100 / Math.log(139 / 100); // ~ 303.67\n","import { kCH, kE, sinθ, cosθ, θ, factor } from './constants.js';\n\n/*\n\tConvert DIN99o LCh to CIELab D65\n\t--------------------------------\n */\n\nconst convertDlchToLab65 = ({ l, c, h, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (c === undefined) c = 0;\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'lab65',\n\t\tl: (Math.exp((l * kE) / factor) - 1) / 0.0039\n\t};\n\n\tlet G = (Math.exp(0.0435 * c * kCH * kE) - 1) / 0.075;\n\tlet e = G * Math.cos((h / 180) * Math.PI - θ);\n\tlet f = G * Math.sin((h / 180) * Math.PI - θ);\n\tres.a = e * cosθ - (f / 0.83) * sinθ;\n\tres.b = e * sinθ + (f / 0.83) * cosθ;\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertDlchToLab65;\n","import { kCH, kE, sinθ, cosθ, θ, factor } from './constants.js';\nimport normalizeHue from '../util/normalizeHue.js';\n\n/*\n\tConvert CIELab D65 to DIN99o LCh\n\t================================\n */\n\nconst convertLab65ToDlch = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet e = a * cosθ + b * sinθ;\n\tlet f = 0.83 * (b * cosθ - a * sinθ);\n\tlet G = Math.sqrt(e * e + f * f);\n\tlet res = {\n\t\tmode: 'dlch',\n\t\tl: (factor / kE) * Math.log(1 + 0.0039 * l),\n\t\tc: Math.log(1 + 0.075 * G) / (0.0435 * kCH * kE)\n\t};\n\n\tif (res.c) {\n\t\tres.h = normalizeHue(((Math.atan2(f, e) + θ) / Math.PI) * 180);\n\t}\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLab65ToDlch;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\nimport convertDlchToLab65 from '../dlch/convertDlchToLab65.js';\nimport convertLab65ToDlch from '../dlch/convertLab65ToDlch.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst convertDlabToLab65 = c => convertDlchToLab65(convertLabToLch(c, 'dlch'));\nconst convertLab65ToDlab = c => convertLchToLab(convertLab65ToDlch(c), 'dlab');\n\nconst definition = {\n\tmode: 'dlab',\n\n\tparse: ['--din99o-lab'],\n\tserialize: '--din99o-lab',\n\n\ttoMode: {\n\t\tlab65: convertDlabToLab65,\n\t\trgb: c => convertLab65ToRgb(convertDlabToLab65(c))\n\t},\n\n\tfromMode: {\n\t\tlab65: convertLab65ToDlab,\n\t\trgb: c => convertLab65ToDlab(convertRgbToLab65(c))\n\t},\n\n\tchannels: ['l', 'a', 'b', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-40.09, 45.501],\n\t\tb: [-40.469, 44.344]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\n\nexport default definition;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertDlchToLab65 from './convertDlchToLab65.js';\nimport convertLab65ToDlch from './convertLab65ToDlch.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'dlch',\n\n\tparse: ['--din99o-lch'],\n\tserialize: '--din99o-lch',\n\n\ttoMode: {\n\t\tlab65: convertDlchToLab65,\n\t\tdlab: c => convertLchToLab(c, 'dlab'),\n\t\trgb: c => convertLab65ToRgb(convertDlchToLab65(c))\n\t},\n\n\tfromMode: {\n\t\tlab65: convertLab65ToDlch,\n\t\tdlab: c => convertLabToLch(c, 'dlch'),\n\t\trgb: c => convertLab65ToDlch(convertRgbToLab65(c))\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 51.484],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tc: interpolatorLinear,\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHsiToRgb({ h, s, i, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (i === undefined) i = 0;\n\tlet f = Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tg: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tb: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: i * (1 - s), g: i * (1 - s), b: i * (1 - s) };\n\t}\n\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsi({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsi',\n\t\ts: r + g + b === 0 ? 0 : 1 - (3 * m) / (r + g + b),\n\t\ti: (r + g + b) / 3\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","import convertHsiToRgb from './convertHsiToRgb.js';\nimport convertRgbToHsi from './convertRgbToHsi.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsi',\n\n\ttoMode: {\n\t\trgb: convertHsiToRgb\n\t},\n\n\tparse: ['--hsi'],\n\tserialize: '--hsi',\n\n\tfromMode: {\n\t\trgb: convertRgbToHsi\n\t},\n\n\tchannels: ['h', 's', 'i', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHslToRgb({ h, s, l, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (l === undefined) l = 0;\n\tlet m1 = l + s * (l < 0.5 ? l : 1 - l);\n\tlet m2 = m1 - (m1 - l) * 2 * Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = { r: m1, g: m2, b: 2 * l - m1 };\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = { r: m2, g: m1, b: 2 * l - m1 };\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = { r: 2 * l - m1, g: m1, b: m2 };\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = { r: 2 * l - m1, g: m2, b: m1 };\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = { r: m2, g: 2 * l - m1, b: m1 };\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = { r: m1, g: 2 * l - m1, b: m2 };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: 2 * l - m1, g: 2 * l - m1, b: 2 * l - m1 };\n\t}\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsl({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsl',\n\t\ts: M === m ? 0 : (M - m) / (1 - Math.abs(M + m - 1)),\n\t\tl: 0.5 * (M + m)\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","const hueToDeg = (val, unit) => {\n\tswitch (unit) {\n\t\tcase 'deg':\n\t\t\treturn +val;\n\t\tcase 'rad':\n\t\t\treturn (val / Math.PI) * 180;\n\t\tcase 'grad':\n\t\t\treturn (val / 10) * 9;\n\t\tcase 'turn':\n\t\t\treturn val * 360;\n\t}\n};\n\nexport default hueToDeg;\n","import hueToDeg from '../util/hue.js';\nimport { hue, per, num_per, c } from '../util/regex.js';\n\n/*\n\thsl() regular expressions for legacy format\n\tReference: https://drafts.csswg.org/css-color/#the-hsl-notation\n */\nconst hsl_old = new RegExp(\n\t`^hsla?\\\\(\\\\s*${hue}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst parseHslLegacy = color => {\n\tlet match = color.match(hsl_old);\n\tif (!match) return;\n\tlet res = { mode: 'hsl' };\n\n\tif (match[3] !== undefined) {\n\t\tres.h = +match[3];\n\t} else if (match[1] !== undefined && match[2] !== undefined) {\n\t\tres.h = hueToDeg(match[1], match[2]);\n\t}\n\n\tif (match[4] !== undefined) {\n\t\tres.s = Math.min(Math.max(0, match[4] / 100), 1);\n\t}\n\n\tif (match[5] !== undefined) {\n\t\tres.l = Math.min(Math.max(0, match[5] / 100), 1);\n\t}\n\n\tif (match[6] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, match[6] / 100));\n\t} else if (match[7] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, +match[7]));\n\t}\n\treturn res;\n};\n\nexport default parseHslLegacy;\n","import { Tok } from '../parse.js';\n\nfunction parseHsl(color, parsed) {\n\tif (!parsed || (parsed[0] !== 'hsl' && parsed[0] !== 'hsla')) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'hsl' };\n\tconst [, h, s, l, alpha] = parsed;\n\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\n\tif (s.type !== Tok.None) {\n\t\tif (s.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.s = s.value / 100;\n\t}\n\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = l.value / 100;\n\t}\n\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseHsl;\n","import convertHslToRgb from './convertHslToRgb.js';\nimport convertRgbToHsl from './convertRgbToHsl.js';\nimport parseHslLegacy from './parseHslLegacy.js';\nimport parseHsl from './parseHsl.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsl',\n\n\ttoMode: {\n\t\trgb: convertHslToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToHsl\n\t},\n\n\tchannels: ['h', 's', 'l', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tparse: [parseHsl, parseHslLegacy],\n\tserialize: c =>\n\t\t`hsl(${c.h !== undefined ? c.h : 'none'} ${\n\t\t\tc.s !== undefined ? c.s * 100 + '%' : 'none'\n\t\t} ${c.l !== undefined ? c.l * 100 + '%' : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHsvToRgb({ h, s, v, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (v === undefined) v = 0;\n\tlet f = Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = { r: v, g: v * (1 - s * f), b: v * (1 - s) };\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = { r: v * (1 - s * f), g: v, b: v * (1 - s) };\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = { r: v * (1 - s), g: v, b: v * (1 - s * f) };\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = { r: v * (1 - s), g: v * (1 - s * f), b: v };\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = { r: v * (1 - s * f), g: v * (1 - s), b: v };\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = { r: v, g: v * (1 - s), b: v * (1 - s * f) };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: v * (1 - s), g: v * (1 - s), b: v * (1 - s) };\n\t}\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsv({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsv',\n\t\ts: M === 0 ? 0 : 1 - m / M,\n\t\tv: M\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","import convertHsvToRgb from './convertHsvToRgb.js';\nimport convertRgbToHsv from './convertRgbToHsv.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsv',\n\n\ttoMode: {\n\t\trgb: convertHsvToRgb\n\t},\n\n\tparse: ['--hsv'],\n\tserialize: '--hsv',\n\n\tfromMode: {\n\t\trgb: convertRgbToHsv\n\t},\n\n\tchannels: ['h', 's', 'v', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","/*\n\tHWB to RGB converter\n\t--------------------\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#hwb-to-rgb\n\t\t* https://en.wikipedia.org/wiki/HWB_color_model\n\t\t* http://alvyray.com/Papers/CG/HWB_JGTv208.pdf\n */\n\nimport convertHsvToRgb from '../hsv/convertHsvToRgb.js';\n\nexport default function convertHwbToRgb({ h, w, b, alpha }) {\n\tif (w === undefined) w = 0;\n\tif (b === undefined) b = 0;\n\t// normalize w + b to 1\n\tif (w + b > 1) {\n\t\tlet s = w + b;\n\t\tw /= s;\n\t\tb /= s;\n\t}\n\treturn convertHsvToRgb({\n\t\th: h,\n\t\ts: b === 1 ? 1 : 1 - w / (1 - b),\n\t\tv: 1 - b,\n\t\talpha: alpha\n\t});\n}\n","/*\n\tRGB to HWB converter\n\t--------------------\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#hwb-to-rgb\n\t\t* https://en.wikipedia.org/wiki/HWB_color_model\n\t\t* http://alvyray.com/Papers/CG/HWB_JGTv208.pdf\n */\n\nimport convertRgbToHsv from '../hsv/convertRgbToHsv.js';\n\nexport default function convertRgbToHwb(rgba) {\n\tlet hsv = convertRgbToHsv(rgba);\n\tif (hsv === undefined) return undefined;\n\tlet s = hsv.s !== undefined ? hsv.s : 0;\n\tlet v = hsv.v !== undefined ? hsv.v : 0;\n\tlet res = {\n\t\tmode: 'hwb',\n\t\tw: (1 - s) * v,\n\t\tb: 1 - v\n\t};\n\tif (hsv.h !== undefined) res.h = hsv.h;\n\tif (hsv.alpha !== undefined) res.alpha = hsv.alpha;\n\treturn res;\n}\n","import { Tok } from '../parse.js';\n\nfunction ParseHwb(color, parsed) {\n\tif (!parsed || parsed[0] !== 'hwb') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'hwb' };\n\tconst [, h, w, b, alpha] = parsed;\n\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\n\tif (w.type !== Tok.None) {\n\t\tif (w.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.w = w.value / 100;\n\t}\n\n\tif (b.type !== Tok.None) {\n\t\tif (b.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.b = b.value / 100;\n\t}\n\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default ParseHwb;\n","import convertHwbToRgb from './convertHwbToRgb.js';\nimport convertRgbToHwb from './convertRgbToHwb.js';\nimport parseHwb from './parseHwb.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueNaive } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hwb',\n\n\ttoMode: {\n\t\trgb: convertHwbToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToHwb\n\t},\n\n\tchannels: ['h', 'w', 'b', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tparse: [parseHwb],\n\tserialize: c =>\n\t\t`hwb(${c.h !== undefined ? c.h : 'none'} ${\n\t\t\tc.w !== undefined ? c.w * 100 + '%' : 'none'\n\t\t} ${c.b !== undefined ? c.b * 100 + '%' : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tw: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueNaive\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","/*\n\tRelative XYZ has Y=1 for media white,\n\tBT.2048 says media white Y=203 (at PQ 58).\n\tSee: https://www.itu.int/dms_pub/itu-r/opb/rep/R-REP-BT.2408-3-2019-PDF-E.pdf\n*/\nexport const YW = 203;\n","/*\n\thttps://en.wikipedia.org/wiki/Transfer_functions_in_imaging\n*/\n\nexport const M1 = 0.1593017578125;\nexport const M2 = 78.84375;\nexport const C1 = 0.8359375;\nexport const C2 = 18.8515625;\nexport const C3 = 18.6875;\n\n/*\n\tPerceptual Quantizer, as defined in Rec. BT 2100-2 (2018)\n\n\t* https://www.itu.int/rec/R-REC-BT.2100-2-201807-I/en\n\t* https://en.wikipedia.org/wiki/Perceptual_quantizer\n*/\n\n/* PQ EOTF, defined for `v` in [0,1]. */\nexport function transferPqDecode(v) {\n\tif (v < 0) return 0;\n\tconst c = Math.pow(v, 1 / M2);\n\treturn 1e4 * Math.pow(Math.max(0, c - C1) / (C2 - C3 * c), 1 / M1);\n}\n\n/* PQ EOTF^-1, defined for `v` in [0, 1e4]. */\nexport function transferPqEncode(v) {\n\tif (v < 0) return 0;\n\tconst c = Math.pow(v / 1e4, M1);\n\treturn Math.pow((C1 + C2 * c) / (1 + C3 * c), M2);\n}\n","import { YW } from '../hdr/constants.js';\nimport { transferPqDecode } from '../hdr/transfer.js';\n\nconst toRel = c => Math.max(c / YW, 0);\n\nconst convertItpToXyz65 = ({ i, t, p, alpha }) => {\n\tif (i === undefined) i = 0;\n\tif (t === undefined) t = 0;\n\tif (p === undefined) p = 0;\n\n\tconst l = transferPqDecode(\n\t\ti + 0.008609037037932761 * t + 0.11102962500302593 * p\n\t);\n\tconst m = transferPqDecode(\n\t\ti - 0.00860903703793275 * t - 0.11102962500302599 * p\n\t);\n\tconst s = transferPqDecode(\n\t\ti + 0.5600313357106791 * t - 0.32062717498731885 * p\n\t);\n\n\tconst res = {\n\t\tmode: 'xyz65',\n\t\tx: toRel(\n\t\t\t2.0701522183894219 * l -\n\t\t\t\t1.3263473389671556 * m +\n\t\t\t\t0.2066510476294051 * s\n\t\t),\n\t\ty: toRel(\n\t\t\t0.3647385209748074 * l +\n\t\t\t\t0.680566024947227 * m -\n\t\t\t\t0.0453045459220346 * s\n\t\t),\n\t\tz: toRel(\n\t\t\t-0.049747207535812 * l -\n\t\t\t\t0.0492609666966138 * m +\n\t\t\t\t1.1880659249923042 * s\n\t\t)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertItpToXyz65;\n","import { YW } from '../hdr/constants.js';\nimport { transferPqEncode } from '../hdr/transfer.js';\n\nconst toAbs = (c = 0) => Math.max(c * YW, 0);\n\nconst convertXyz65ToItp = ({ x, y, z, alpha }) => {\n\tconst absX = toAbs(x);\n\tconst absY = toAbs(y);\n\tconst absZ = toAbs(z);\n\tconst l = transferPqEncode(\n\t\t0.3592832590121217 * absX +\n\t\t\t0.6976051147779502 * absY -\n\t\t\t0.0358915932320289 * absZ\n\t);\n\tconst m = transferPqEncode(\n\t\t-0.1920808463704995 * absX +\n\t\t\t1.1004767970374323 * absY +\n\t\t\t0.0753748658519118 * absZ\n\t);\n\tconst s = transferPqEncode(\n\t\t0.0070797844607477 * absX +\n\t\t\t0.0748396662186366 * absY +\n\t\t\t0.8433265453898765 * absZ\n\t);\n\n\tconst i = 0.5 * l + 0.5 * m;\n\tconst t = 1.61376953125 * l - 3.323486328125 * m + 1.709716796875 * s;\n\tconst p = 4.378173828125 * l - 4.24560546875 * m - 0.132568359375 * s;\n\n\tconst res = { mode: 'itp', i, t, p };\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToItp;\n","import { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport convertItpToXyz65 from './convertItpToXyz65.js';\nimport convertXyz65ToItp from './convertXyz65ToItp.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\n/*\n ICtCp (or ITP) color space, as defined in ITU-R Recommendation BT.2100.\n\n ICtCp is drafted to be supported in CSS within\n [CSS Color HDR Module Level 1](https://drafts.csswg.org/css-color-hdr/#ICtCp) spec.\n*/\n\nconst definition = {\n\tmode: 'itp',\n\tchannels: ['i', 't', 'p', 'alpha'],\n\tparse: ['--ictcp'],\n\tserialize: '--ictcp',\n\n\ttoMode: {\n\t\txyz65: convertItpToXyz65,\n\t\trgb: color => convertXyz65ToRgb(convertItpToXyz65(color))\n\t},\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToItp,\n\t\trgb: color => convertXyz65ToItp(convertRgbToXyz65(color))\n\t},\n\n\tranges: {\n\t\ti: [0, 0.581],\n\t\tt: [-0.369, 0.272],\n\t\tp: [-0.164, 0.331]\n\t},\n\n\tinterpolate: {\n\t\ti: interpolatorLinear,\n\t\tt: interpolatorLinear,\n\t\tp: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","import { M1 as n, C1, C2, C3 } from '../hdr/transfer.js';\nconst p = 134.03437499999998; // = 1.7 * 2523 / Math.pow(2, 5);\nconst d0 = 1.6295499532821566e-11;\n\n/* \n\tThe encoding function is derived from Perceptual Quantizer.\n*/\nconst jabPqEncode = v => {\n\tif (v < 0) return 0;\n\tlet vn = Math.pow(v / 10000, n);\n\treturn Math.pow((C1 + C2 * vn) / (1 + C3 * vn), p);\n};\n\n// Convert to Absolute XYZ\nconst abs = (v = 0) => Math.max(v * 203, 0);\n\nconst convertXyz65ToJab = ({ x, y, z, alpha }) => {\n\tx = abs(x);\n\ty = abs(y);\n\tz = abs(z);\n\n\tlet xp = 1.15 * x - 0.15 * z;\n\tlet yp = 0.66 * y + 0.34 * x;\n\n\tlet l = jabPqEncode(0.41478972 * xp + 0.579999 * yp + 0.014648 * z);\n\tlet m = jabPqEncode(-0.20151 * xp + 1.120649 * yp + 0.0531008 * z);\n\tlet s = jabPqEncode(-0.0166008 * xp + 0.2648 * yp + 0.6684799 * z);\n\n\tlet i = (l + m) / 2;\n\n\tlet res = {\n\t\tmode: 'jab',\n\t\tj: (0.44 * i) / (1 - 0.56 * i) - d0,\n\t\ta: 3.524 * l - 4.066708 * m + 0.542708 * s,\n\t\tb: 0.199076 * l + 1.096799 * m - 1.295875 * s\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToJab;\n","import { M1 as n, C1, C2, C3 } from '../hdr/transfer.js';\nconst p = 134.03437499999998; // = 1.7 * 2523 / Math.pow(2, 5);\nconst d0 = 1.6295499532821566e-11;\n\n/* \n\tThe encoding function is derived from Perceptual Quantizer.\n*/\nconst jabPqDecode = v => {\n\tif (v < 0) return 0;\n\tlet vp = Math.pow(v, 1 / p);\n\treturn 10000 * Math.pow((C1 - vp) / (C3 * vp - C2), 1 / n);\n};\n\nconst rel = v => v / 203;\n\nconst convertJabToXyz65 = ({ j, a, b, alpha }) => {\n\tif (j === undefined) j = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet i = (j + d0) / (0.44 + 0.56 * (j + d0));\n\n\tlet l = jabPqDecode(i + 0.13860504 * a + 0.058047316 * b);\n\tlet m = jabPqDecode(i - 0.13860504 * a - 0.058047316 * b);\n\tlet s = jabPqDecode(i - 0.096019242 * a - 0.8118919 * b);\n\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx: rel(\n\t\t\t1.661373024652174 * l -\n\t\t\t\t0.914523081304348 * m +\n\t\t\t\t0.23136208173913045 * s\n\t\t),\n\t\ty: rel(\n\t\t\t-0.3250758611844533 * l +\n\t\t\t\t1.571847026732543 * m -\n\t\t\t\t0.21825383453227928 * s\n\t\t),\n\t\tz: rel(-0.090982811 * l - 0.31272829 * m + 1.5227666 * s)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertJabToXyz65;\n","/*\n\tConvert sRGB to JzAzBz.\n\n\tFor achromatic sRGB colors, adjust the equivalent JzAzBz color\n\tto be achromatic as well, insteading of having a very slight chroma.\n */\n\nimport convertXyz65ToJab from './convertXyz65ToJab.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\n\nconst convertRgbToJab = rgb => {\n\tlet res = convertXyz65ToJab(convertRgbToXyz65(rgb));\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToJab;\n","import convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\nimport convertJabToXyz65 from './convertJabToXyz65.js';\n\nconst convertJabToRgb = color => convertXyz65ToRgb(convertJabToXyz65(color));\n\nexport default convertJabToRgb;\n","/*\n\tThe JzAzBz color space.\n\n\tBased on:\n\n\tMuhammad Safdar, Guihua Cui, Youn Jin Kim, and Ming Ronnier Luo, \n\t\"Perceptually uniform color space for image signals \n\tincluding high dynamic range and wide gamut,\" \n\tOpt. Express 25, 15131-15151 (2017) \n\n\thttps://doi.org/10.1364/OE.25.015131\n */\n\nimport convertXyz65ToJab from './convertXyz65ToJab.js';\nimport convertJabToXyz65 from './convertJabToXyz65.js';\nimport convertRgbToJab from './convertRgbToJab.js';\nimport convertJabToRgb from './convertJabToRgb.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'jab',\n\tchannels: ['j', 'a', 'b', 'alpha'],\n\n\tparse: ['--jzazbz'],\n\tserialize: '--jzazbz',\n\n\tfromMode: {\n\t\trgb: convertRgbToJab,\n\t\txyz65: convertXyz65ToJab\n\t},\n\n\ttoMode: {\n\t\trgb: convertJabToRgb,\n\t\txyz65: convertJabToXyz65\n\t},\n\n\tranges: {\n\t\tj: [0, 0.222],\n\t\ta: [-0.109, 0.129],\n\t\tb: [-0.185, 0.134]\n\t},\n\n\tinterpolate: {\n\t\tj: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst convertJabToJch = ({ j, a, b, alpha }) => {\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet c = Math.sqrt(a * a + b * b);\n\tlet res = {\n\t\tmode: 'jch',\n\t\tj,\n\t\tc\n\t};\n\tif (c) {\n\t\tres.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertJabToJch;\n","const convertJchToJab = ({ j, c, h, alpha }) => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'jab',\n\t\tj,\n\t\ta: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tb: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertJchToJab;\n","import convertJabToJch from './convertJabToJch.js';\nimport convertJchToJab from './convertJchToJab.js';\nimport convertJabToRgb from '../jab/convertJabToRgb.js';\nimport convertRgbToJab from '../jab/convertRgbToJab.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'jch',\n\n\tparse: ['--jzczhz'],\n\tserialize: '--jzczhz',\n\n\ttoMode: {\n\t\tjab: convertJchToJab,\n\t\trgb: c => convertJabToRgb(convertJchToJab(c))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertJabToJch(convertRgbToJab(c)),\n\t\tjab: convertJabToJch\n\t},\n\n\tchannels: ['j', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tj: [0, 0.221],\n\t\tc: [0, 0.19],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tj: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","export const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nlet fn = v => (Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k);\n\nconst convertLabToXyz50 = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx: fn(fx) * D50.X,\n\t\ty: fn(fy) * D50.Y,\n\t\tz: fn(fz) * D50.Z\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLabToXyz50;\n","/*\n\tCIE XYZ D50 values to sRGB.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz50ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb({\n\t\tr:\n\t\t\tx * 3.1341359569958707 -\n\t\t\ty * 1.6173863321612538 -\n\t\t\t0.4906619460083532 * z,\n\t\tg:\n\t\t\tx * -0.978795502912089 +\n\t\t\ty * 1.916254567259524 +\n\t\t\t0.03344273116131949 * z,\n\t\tb:\n\t\t\tx * 0.07195537988411677 -\n\t\t\ty * 0.2289768264158322 +\n\t\t\t1.405386058324125 * z\n\t});\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToRgb;\n","import convertLabToXyz50 from './convertLabToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\n\nconst convertLabToRgb = lab => convertXyz50ToRgb(convertLabToXyz50(lab));\n\nexport default convertLabToRgb;\n","/*\n\tConvert sRGB values to CIE XYZ D50\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertRgbToXyz50 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t0.436065742824811 * r +\n\t\t\t0.3851514688337912 * g +\n\t\t\t0.14307845442264197 * b,\n\t\ty:\n\t\t\t0.22249319175623702 * r +\n\t\t\t0.7168870538238823 * g +\n\t\t\t0.06061979053616537 * b,\n\t\tz:\n\t\t\t0.013923904500943465 * r +\n\t\t\t0.09708128566574634 * g +\n\t\t\t0.7140993584005155 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToXyz50;\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nconst f = value => (value > e ? Math.cbrt(value) : (k * value + 16) / 116);\n\nconst convertXyz50ToLab = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet f0 = f(x / D50.X);\n\tlet f1 = f(y / D50.Y);\n\tlet f2 = f(z / D50.Z);\n\n\tlet res = {\n\t\tmode: 'lab',\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz50ToLab;\n","import convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\nimport convertXyz50ToLab from './convertXyz50ToLab.js';\n\nconst convertRgbToLab = rgb => {\n\tlet res = convertXyz50ToLab(convertRgbToXyz50(rgb));\n\n\t// Fixes achromatic RGB colors having a _slight_ chroma due to floating-point errors\n\t// and approximated computations in sRGB <-> CIELab.\n\t// See: https://github.com/d3/d3-color/pull/46\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToLab;\n","import { Tok } from '../parse.js';\n\nfunction parseLab(color, parsed) {\n\tif (!parsed || parsed[0] !== 'lab') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'lab' };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tres.l = Math.min(Math.max(0, l.value), 100);\n\t}\n\tif (a.type !== Tok.None) {\n\t\tres.a = a.type === Tok.Number ? a.value : (a.value * 125) / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value : (b.value * 125) / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseLab;\n","import convertLabToRgb from './convertLabToRgb.js';\nimport convertLabToXyz50 from './convertLabToXyz50.js';\nimport convertRgbToLab from './convertRgbToLab.js';\nimport convertXyz50ToLab from './convertXyz50ToLab.js';\nimport parseLab from './parseLab.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'lab',\n\n\ttoMode: {\n\t\txyz50: convertLabToXyz50,\n\t\trgb: convertLabToRgb\n\t},\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToLab,\n\t\trgb: convertRgbToLab\n\t},\n\n\tchannels: ['l', 'a', 'b', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t},\n\n\tparse: [parseLab],\n\tserialize: c =>\n\t\t`lab(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.a !== undefined ? c.a : 'none'\n\t\t} ${c.b !== undefined ? c.b : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","import convertLab65ToRgb from './convertLab65ToRgb.js';\nimport convertLab65ToXyz65 from './convertLab65ToXyz65.js';\nimport convertRgbToLab65 from './convertRgbToLab65.js';\nimport convertXyz65ToLab65 from './convertXyz65ToLab65.js';\nimport lab from '../lab/definition.js';\n\nconst definition = {\n\t...lab,\n\tmode: 'lab65',\n\n\tparse: ['--lab-d65'],\n\tserialize: '--lab-d65',\n\n\ttoMode: {\n\t\txyz65: convertLab65ToXyz65,\n\t\trgb: convertLab65ToRgb\n\t},\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToLab65,\n\t\trgb: convertRgbToLab65\n\t},\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t}\n};\n\nexport default definition;\n","import { Tok } from '../parse.js';\n\nfunction parseLch(color, parsed) {\n\tif (!parsed || parsed[0] !== 'lch') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'lch' };\n\tconst [, l, c, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = Math.min(Math.max(0, l.value), 100);\n\t}\n\tif (c.type !== Tok.None) {\n\t\tres.c = Math.max(\n\t\t\t0,\n\t\t\tc.type === Tok.Number ? c.value : (c.value * 150) / 100\n\t\t);\n\t}\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseLch;\n","import convertLabToLch from './convertLabToLch.js';\nimport convertLchToLab from './convertLchToLab.js';\nimport convertLabToRgb from '../lab/convertLabToRgb.js';\nimport convertRgbToLab from '../lab/convertRgbToLab.js';\nimport parseLch from './parseLch.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'lch',\n\n\ttoMode: {\n\t\tlab: convertLchToLab,\n\t\trgb: c => convertLabToRgb(convertLchToLab(c))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToLab(c)),\n\t\tlab: convertLabToLch\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t},\n\n\tparse: [parseLch],\n\tserialize: c =>\n\t\t`lch(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.c !== undefined ? c.c : 'none'\n\t\t} ${c.h !== undefined ? c.h : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\nimport lch from '../lch/definition.js';\n\nconst definition = {\n\t...lch,\n\tmode: 'lch65',\n\n\tparse: ['--lch-d65'],\n\tserialize: '--lch-d65',\n\n\ttoMode: {\n\t\tlab65: c => convertLchToLab(c, 'lab65'),\n\t\trgb: c => convertLab65ToRgb(convertLchToLab(c, 'lab65'))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToLab65(c), 'lch65'),\n\t\tlab65: c => convertLabToLch(c, 'lch65')\n\t},\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst convertLuvToLchuv = ({ l, u, v, alpha }) => {\n\tif (u === undefined) u = 0;\n\tif (v === undefined) v = 0;\n\tlet c = Math.sqrt(u * u + v * v);\n\tlet res = {\n\t\tmode: 'lchuv',\n\t\tl: l,\n\t\tc: c\n\t};\n\tif (c) {\n\t\tres.h = normalizeHue((Math.atan2(v, u) * 180) / Math.PI);\n\t}\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertLuvToLchuv;\n","const convertLchuvToLuv = ({ l, c, h, alpha }) => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'luv',\n\t\tl: l,\n\t\tu: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tv: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertLchuvToLuv;\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nexport const u_fn = (x, y, z) => (4 * x) / (x + 15 * y + 3 * z);\nexport const v_fn = (x, y, z) => (9 * y) / (x + 15 * y + 3 * z);\n\nexport const un = u_fn(D50.X, D50.Y, D50.Z);\nexport const vn = v_fn(D50.X, D50.Y, D50.Z);\n\nconst l_fn = value => (value <= e ? k * value : 116 * Math.cbrt(value) - 16);\n\nconst convertXyz50ToLuv = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet l = l_fn(y / D50.Y);\n\tlet u = u_fn(x, y, z);\n\tlet v = v_fn(x, y, z);\n\n\t// guard against NaNs produced by `xyz(0 0 0)` black\n\tif (!isFinite(u) || !isFinite(v)) {\n\t\tl = u = v = 0;\n\t} else {\n\t\tu = 13 * l * (u - un);\n\t\tv = 13 * l * (v - vn);\n\t}\n\n\tlet res = {\n\t\tmode: 'luv',\n\t\tl,\n\t\tu,\n\t\tv\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz50ToLuv;\n","import { k } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nexport const u_fn = (x, y, z) => (4 * x) / (x + 15 * y + 3 * z);\nexport const v_fn = (x, y, z) => (9 * y) / (x + 15 * y + 3 * z);\n\nexport const un = u_fn(D50.X, D50.Y, D50.Z);\nexport const vn = v_fn(D50.X, D50.Y, D50.Z);\n\nconst convertLuvToXyz50 = ({ l, u, v, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (l === 0) {\n\t\treturn { mode: 'xyz50', x: 0, y: 0, z: 0 };\n\t}\n\n\tif (u === undefined) u = 0;\n\tif (v === undefined) v = 0;\n\n\tlet up = u / (13 * l) + un;\n\tlet vp = v / (13 * l) + vn;\n\tlet y = D50.Y * (l <= 8 ? l / k : Math.pow((l + 16) / 116, 3));\n\tlet x = (y * (9 * up)) / (4 * vp);\n\tlet z = (y * (12 - 3 * up - 20 * vp)) / (4 * vp);\n\n\tlet res = { mode: 'xyz50', x, y, z };\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLuvToXyz50;\n","/*\n\tCIELChuv color space\n\t--------------------\n\n\tReference: \n\n\t\thttps://en.wikipedia.org/wiki/CIELUV\n */\n\nimport convertLuvToLchuv from './convertLuvToLchuv.js';\nimport convertLchuvToLuv from './convertLchuvToLuv.js';\nimport convertXyz50ToLuv from '../luv/convertXyz50ToLuv.js';\nimport convertLuvToXyz50 from '../luv/convertLuvToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst convertRgbToLchuv = rgb =>\n\tconvertLuvToLchuv(convertXyz50ToLuv(convertRgbToXyz50(rgb)));\nconst convertLchuvToRgb = lchuv =>\n\tconvertXyz50ToRgb(convertLuvToXyz50(convertLchuvToLuv(lchuv)));\n\nconst definition = {\n\tmode: 'lchuv',\n\n\ttoMode: {\n\t\tluv: convertLchuvToLuv,\n\t\trgb: convertLchuvToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToLchuv,\n\t\tluv: convertLuvToLchuv\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tparse: ['--lchuv'],\n\tserialize: '--lchuv',\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 176.956],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import rgb from '../rgb/definition.js';\nimport convertRgbToLrgb from './convertRgbToLrgb.js';\nimport convertLrgbToRgb from './convertLrgbToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'lrgb',\n\n\ttoMode: {\n\t\trgb: convertLrgbToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToLrgb\n\t},\n\n\tparse: ['srgb-linear'],\n\tserialize: 'srgb-linear'\n};\n\nexport default definition;\n","/*\n\tCIELUV color space\n\t------------------\n\n\tReference: \n\n\t\thttps://en.wikipedia.org/wiki/CIELUV\n */\n\nimport convertXyz50ToLuv from './convertXyz50ToLuv.js';\nimport convertLuvToXyz50 from './convertLuvToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'luv',\n\n\ttoMode: {\n\t\txyz50: convertLuvToXyz50,\n\t\trgb: luv => convertXyz50ToRgb(convertLuvToXyz50(luv))\n\t},\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToLuv,\n\t\trgb: rgb => convertXyz50ToLuv(convertRgbToXyz50(rgb))\n\t},\n\n\tchannels: ['l', 'u', 'v', 'alpha'],\n\n\tparse: ['--luv'],\n\tserialize: '--luv',\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tu: [-84.936, 175.042],\n\t\tv: [-125.882, 87.243]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tu: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","const convertLrgbToOklab = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\n\tlet L = Math.cbrt(\n\t\t0.412221469470763 * r + 0.5363325372617348 * g + 0.0514459932675022 * b\n\t);\n\tlet M = Math.cbrt(\n\t\t0.2119034958178252 * r + 0.6806995506452344 * g + 0.1073969535369406 * b\n\t);\n\tlet S = Math.cbrt(\n\t\t0.0883024591900564 * r + 0.2817188391361215 * g + 0.6299787016738222 * b\n\t);\n\n\tlet res = {\n\t\tmode: 'oklab',\n\t\tl:\n\t\t\t0.210454268309314 * L +\n\t\t\t0.7936177747023054 * M -\n\t\t\t0.0040720430116193 * S,\n\t\ta:\n\t\t\t1.9779985324311684 * L -\n\t\t\t2.4285922420485799 * M +\n\t\t\t0.450593709617411 * S,\n\t\tb:\n\t\t\t0.0259040424655478 * L +\n\t\t\t0.7827717124575296 * M -\n\t\t\t0.8086757549230774 * S\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLrgbToOklab;\n","import convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\nimport convertLrgbToOklab from './convertLrgbToOklab.js';\n\nconst convertRgbToOklab = rgb => {\n\tlet res = convertLrgbToOklab(convertRgbToLrgb(rgb));\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToOklab;\n","const convertOklabToLrgb = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\n\tlet L = Math.pow(l + 0.3963377773761749 * a + 0.2158037573099136 * b, 3);\n\tlet M = Math.pow(l - 0.1055613458156586 * a - 0.0638541728258133 * b, 3);\n\tlet S = Math.pow(l - 0.0894841775298119 * a - 1.2914855480194092 * b, 3);\n\n\tlet res = {\n\t\tmode: 'lrgb',\n\t\tr:\n\t\t\t4.0767416360759574 * L -\n\t\t\t3.3077115392580616 * M +\n\t\t\t0.2309699031821044 * S,\n\t\tg:\n\t\t\t-1.2684379732850317 * L +\n\t\t\t2.6097573492876887 * M -\n\t\t\t0.3413193760026573 * S,\n\t\tb:\n\t\t\t-0.0041960761386756 * L -\n\t\t\t0.7034186179359362 * M +\n\t\t\t1.7076146940746117 * S\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertOklabToLrgb;\n","import convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\nimport convertOklabToLrgb from './convertOklabToLrgb.js';\n\nconst convertOklabToRgb = c => convertLrgbToRgb(convertOklabToLrgb(c));\n\nexport default convertOklabToRgb;\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\n\nexport function toe(x) {\n\tconst k_1 = 0.206;\n\tconst k_2 = 0.03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn (\n\t\t0.5 *\n\t\t(k_3 * x -\n\t\t\tk_1 +\n\t\t\tMath.sqrt((k_3 * x - k_1) * (k_3 * x - k_1) + 4 * k_2 * k_3 * x))\n\t);\n}\n\nexport function toe_inv(x) {\n\tconst k_1 = 0.206;\n\tconst k_2 = 0.03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn (x * x + k_1 * x) / (k_3 * (x + k_2));\n}\n\n// Finds the maximum saturation possible for a given hue that fits in sRGB\n// Saturation here is defined as S = C/L\n// a and b must be normalized so a^2 + b^2 == 1\nfunction compute_max_saturation(a, b) {\n\t// Max saturation will be when one of r, g or b goes below zero.\n\n\t// Select different coefficients depending on which component goes below zero first\n\tlet k0, k1, k2, k3, k4, wl, wm, ws;\n\n\tif (-1.88170328 * a - 0.80936493 * b > 1) {\n\t\t// Red component\n\t\tk0 = +1.19086277;\n\t\tk1 = +1.76576728;\n\t\tk2 = +0.59662641;\n\t\tk3 = +0.75515197;\n\t\tk4 = +0.56771245;\n\t\twl = +4.0767416621;\n\t\twm = -3.3077115913;\n\t\tws = +0.2309699292;\n\t} else if (1.81444104 * a - 1.19445276 * b > 1) {\n\t\t// Green component\n\t\tk0 = +0.73956515;\n\t\tk1 = -0.45954404;\n\t\tk2 = +0.08285427;\n\t\tk3 = +0.1254107;\n\t\tk4 = +0.14503204;\n\t\twl = -1.2684380046;\n\t\twm = +2.6097574011;\n\t\tws = -0.3413193965;\n\t} else {\n\t\t// Blue component\n\t\tk0 = +1.35733652;\n\t\tk1 = -0.00915799;\n\t\tk2 = -1.1513021;\n\t\tk3 = -0.50559606;\n\t\tk4 = +0.00692167;\n\t\twl = -0.0041960863;\n\t\twm = -0.7034186147;\n\t\tws = +1.707614701;\n\t}\n\n\t// Approximate max saturation using a polynomial:\n\tlet S = k0 + k1 * a + k2 * b + k3 * a * a + k4 * a * b;\n\n\t// Do one step Halley's method to get closer\n\t// this gives an error less than 10e6, except for some blue hues where the dS/dh is close to infinite\n\t// this should be sufficient for most applications, otherwise do two/three steps\n\n\tlet k_l = +0.3963377774 * a + 0.2158037573 * b;\n\tlet k_m = -0.1055613458 * a - 0.0638541728 * b;\n\tlet k_s = -0.0894841775 * a - 1.291485548 * b;\n\n\t{\n\t\tlet l_ = 1 + S * k_l;\n\t\tlet m_ = 1 + S * k_m;\n\t\tlet s_ = 1 + S * k_s;\n\n\t\tlet l = l_ * l_ * l_;\n\t\tlet m = m_ * m_ * m_;\n\t\tlet s = s_ * s_ * s_;\n\n\t\tlet l_dS = 3 * k_l * l_ * l_;\n\t\tlet m_dS = 3 * k_m * m_ * m_;\n\t\tlet s_dS = 3 * k_s * s_ * s_;\n\n\t\tlet l_dS2 = 6 * k_l * k_l * l_;\n\t\tlet m_dS2 = 6 * k_m * k_m * m_;\n\t\tlet s_dS2 = 6 * k_s * k_s * s_;\n\n\t\tlet f = wl * l + wm * m + ws * s;\n\t\tlet f1 = wl * l_dS + wm * m_dS + ws * s_dS;\n\t\tlet f2 = wl * l_dS2 + wm * m_dS2 + ws * s_dS2;\n\n\t\tS = S - (f * f1) / (f1 * f1 - 0.5 * f * f2);\n\t}\n\n\treturn S;\n}\n\nexport function find_cusp(a, b) {\n\t// First, find the maximum saturation (saturation S = C/L)\n\tlet S_cusp = compute_max_saturation(a, b);\n\n\t// Convert to linear sRGB to find the first point where at least one of r,g or b >= 1:\n\tlet rgb = convertOklabToLrgb({ l: 1, a: S_cusp * a, b: S_cusp * b });\n\tlet L_cusp = Math.cbrt(1 / Math.max(rgb.r, rgb.g, rgb.b));\n\tlet C_cusp = L_cusp * S_cusp;\n\n\treturn [L_cusp, C_cusp];\n}\n\n// Finds intersection of the line defined by\n// L = L0 * (1 - t) + t * L1;\n// C = t * C1;\n// a and b must be normalized so a^2 + b^2 == 1\nfunction find_gamut_intersection(a, b, L1, C1, L0, cusp = null) {\n\tif (!cusp) {\n\t\t// Find the cusp of the gamut triangle\n\t\tcusp = find_cusp(a, b);\n\t}\n\n\t// Find the intersection for upper and lower half seprately\n\tlet t;\n\tif ((L1 - L0) * cusp[1] - (cusp[0] - L0) * C1 <= 0) {\n\t\t// Lower half\n\n\t\tt = (cusp[1] * L0) / (C1 * cusp[0] + cusp[1] * (L0 - L1));\n\t} else {\n\t\t// Upper half\n\n\t\t// First intersect with triangle\n\t\tt = (cusp[1] * (L0 - 1)) / (C1 * (cusp[0] - 1) + cusp[1] * (L0 - L1));\n\n\t\t// Then one step Halley's method\n\t\t{\n\t\t\tlet dL = L1 - L0;\n\t\t\tlet dC = C1;\n\n\t\t\tlet k_l = +0.3963377774 * a + 0.2158037573 * b;\n\t\t\tlet k_m = -0.1055613458 * a - 0.0638541728 * b;\n\t\t\tlet k_s = -0.0894841775 * a - 1.291485548 * b;\n\n\t\t\tlet l_dt = dL + dC * k_l;\n\t\t\tlet m_dt = dL + dC * k_m;\n\t\t\tlet s_dt = dL + dC * k_s;\n\n\t\t\t// If higher accuracy is required, 2 or 3 iterations of the following block can be used:\n\t\t\t{\n\t\t\t\tlet L = L0 * (1 - t) + t * L1;\n\t\t\t\tlet C = t * C1;\n\n\t\t\t\tlet l_ = L + C * k_l;\n\t\t\t\tlet m_ = L + C * k_m;\n\t\t\t\tlet s_ = L + C * k_s;\n\n\t\t\t\tlet l = l_ * l_ * l_;\n\t\t\t\tlet m = m_ * m_ * m_;\n\t\t\t\tlet s = s_ * s_ * s_;\n\n\t\t\t\tlet ldt = 3 * l_dt * l_ * l_;\n\t\t\t\tlet mdt = 3 * m_dt * m_ * m_;\n\t\t\t\tlet sdt = 3 * s_dt * s_ * s_;\n\n\t\t\t\tlet ldt2 = 6 * l_dt * l_dt * l_;\n\t\t\t\tlet mdt2 = 6 * m_dt * m_dt * m_;\n\t\t\t\tlet sdt2 = 6 * s_dt * s_dt * s_;\n\n\t\t\t\tlet r =\n\t\t\t\t\t4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s - 1;\n\t\t\t\tlet r1 =\n\t\t\t\t\t4.0767416621 * ldt -\n\t\t\t\t\t3.3077115913 * mdt +\n\t\t\t\t\t0.2309699292 * sdt;\n\t\t\t\tlet r2 =\n\t\t\t\t\t4.0767416621 * ldt2 -\n\t\t\t\t\t3.3077115913 * mdt2 +\n\t\t\t\t\t0.2309699292 * sdt2;\n\n\t\t\t\tlet u_r = r1 / (r1 * r1 - 0.5 * r * r2);\n\t\t\t\tlet t_r = -r * u_r;\n\n\t\t\t\tlet g =\n\t\t\t\t\t-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s - 1;\n\t\t\t\tlet g1 =\n\t\t\t\t\t-1.2684380046 * ldt +\n\t\t\t\t\t2.6097574011 * mdt -\n\t\t\t\t\t0.3413193965 * sdt;\n\t\t\t\tlet g2 =\n\t\t\t\t\t-1.2684380046 * ldt2 +\n\t\t\t\t\t2.6097574011 * mdt2 -\n\t\t\t\t\t0.3413193965 * sdt2;\n\n\t\t\t\tlet u_g = g1 / (g1 * g1 - 0.5 * g * g2);\n\t\t\t\tlet t_g = -g * u_g;\n\n\t\t\t\tlet b =\n\t\t\t\t\t-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s - 1;\n\t\t\t\tlet b1 =\n\t\t\t\t\t-0.0041960863 * ldt -\n\t\t\t\t\t0.7034186147 * mdt +\n\t\t\t\t\t1.707614701 * sdt;\n\t\t\t\tlet b2 =\n\t\t\t\t\t-0.0041960863 * ldt2 -\n\t\t\t\t\t0.7034186147 * mdt2 +\n\t\t\t\t\t1.707614701 * sdt2;\n\n\t\t\t\tlet u_b = b1 / (b1 * b1 - 0.5 * b * b2);\n\t\t\t\tlet t_b = -b * u_b;\n\n\t\t\t\tt_r = u_r >= 0 ? t_r : 10e5;\n\t\t\t\tt_g = u_g >= 0 ? t_g : 10e5;\n\t\t\t\tt_b = u_b >= 0 ? t_b : 10e5;\n\n\t\t\t\tt += Math.min(t_r, Math.min(t_g, t_b));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn t;\n}\n\nexport function get_ST_max(a_, b_, cusp = null) {\n\tif (!cusp) {\n\t\tcusp = find_cusp(a_, b_);\n\t}\n\tlet L = cusp[0];\n\tlet C = cusp[1];\n\treturn [C / L, C / (1 - L)];\n}\n\nexport function get_ST_mid(a_, b_) {\n\tlet S =\n\t\t0.11516993 +\n\t\t1 /\n\t\t\t(+7.4477897 +\n\t\t\t\t4.1590124 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(-2.19557347 +\n\t\t\t\t\t\t1.75198401 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-2.13704948 -\n\t\t\t\t\t\t\t\t10.02301043 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(-4.24894561 +\n\t\t\t\t\t\t\t\t\t\t5.38770819 * b_ +\n\t\t\t\t\t\t\t\t\t\t4.69891013 * a_))));\n\n\tlet T =\n\t\t0.11239642 +\n\t\t1 /\n\t\t\t(+1.6132032 -\n\t\t\t\t0.68124379 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(+0.40370612 +\n\t\t\t\t\t\t0.90148123 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-0.27087943 +\n\t\t\t\t\t\t\t\t0.6122399 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(+0.00299215 -\n\t\t\t\t\t\t\t\t\t\t0.45399568 * b_ -\n\t\t\t\t\t\t\t\t\t\t0.14661872 * a_))));\n\n\treturn [S, T];\n}\n\nexport function get_Cs(L, a_, b_) {\n\tlet cusp = find_cusp(a_, b_);\n\n\tlet C_max = find_gamut_intersection(a_, b_, L, 1, L, cusp);\n\tlet ST_max = get_ST_max(a_, b_, cusp);\n\n\tlet S_mid =\n\t\t0.11516993 +\n\t\t1 /\n\t\t\t(+7.4477897 +\n\t\t\t\t4.1590124 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(-2.19557347 +\n\t\t\t\t\t\t1.75198401 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-2.13704948 -\n\t\t\t\t\t\t\t\t10.02301043 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(-4.24894561 +\n\t\t\t\t\t\t\t\t\t\t5.38770819 * b_ +\n\t\t\t\t\t\t\t\t\t\t4.69891013 * a_))));\n\n\tlet T_mid =\n\t\t0.11239642 +\n\t\t1 /\n\t\t\t(+1.6132032 -\n\t\t\t\t0.68124379 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(+0.40370612 +\n\t\t\t\t\t\t0.90148123 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-0.27087943 +\n\t\t\t\t\t\t\t\t0.6122399 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(+0.00299215 -\n\t\t\t\t\t\t\t\t\t\t0.45399568 * b_ -\n\t\t\t\t\t\t\t\t\t\t0.14661872 * a_))));\n\n\tlet k = C_max / Math.min(L * ST_max[0], (1 - L) * ST_max[1]);\n\n\tlet C_a = L * S_mid;\n\tlet C_b = (1 - L) * T_mid;\n\tlet C_mid =\n\t\t0.9 *\n\t\tk *\n\t\tMath.sqrt(\n\t\t\tMath.sqrt(\n\t\t\t\t1 / (1 / (C_a * C_a * C_a * C_a) + 1 / (C_b * C_b * C_b * C_b))\n\t\t\t)\n\t\t);\n\n\tC_a = L * 0.4;\n\tC_b = (1 - L) * 0.8;\n\tlet C_0 = Math.sqrt(1 / (1 / (C_a * C_a) + 1 / (C_b * C_b)));\n\treturn [C_0, C_mid, C_max];\n}\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport normalizeHue from '../util/normalizeHue.js';\nimport { get_Cs, toe } from './helpers.js';\n\nexport default function convertOklabToOkhsl(lab) {\n\tconst l = lab.l !== undefined ? lab.l : 0;\n\tconst a = lab.a !== undefined ? lab.a : 0;\n\tconst b = lab.b !== undefined ? lab.b : 0;\n\n\tconst ret = { mode: 'okhsl', l: toe(l) };\n\n\tif (lab.alpha !== undefined) {\n\t\tret.alpha = lab.alpha;\n\t}\n\tlet c = Math.sqrt(a * a + b * b);\n\tif (!c) {\n\t\tret.s = 0;\n\t\treturn ret;\n\t}\n\tlet [C_0, C_mid, C_max] = get_Cs(l, a / c, b / c);\n\tlet s;\n\tif (c < C_mid) {\n\t\tlet k_0 = 0;\n\t\tlet k_1 = 0.8 * C_0;\n\t\tlet k_2 = 1 - k_1 / C_mid;\n\t\tlet t = (c - k_0) / (k_1 + k_2 * (c - k_0));\n\t\ts = t * 0.8;\n\t} else {\n\t\tlet k_0 = C_mid;\n\t\tlet k_1 = (0.2 * C_mid * C_mid * 1.25 * 1.25) / C_0;\n\t\tlet k_2 = 1 - k_1 / (C_max - C_mid);\n\t\tlet t = (c - k_0) / (k_1 + k_2 * (c - k_0));\n\t\ts = 0.8 + 0.2 * t;\n\t}\n\tif (s) {\n\t\tret.s = s;\n\t\tret.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\treturn ret;\n}\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport { toe_inv, get_Cs } from './helpers.js';\n\nexport default function convertOkhslToOklab(hsl) {\n\tlet h = hsl.h !== undefined ? hsl.h : 0;\n\tlet s = hsl.s !== undefined ? hsl.s : 0;\n\tlet l = hsl.l !== undefined ? hsl.l : 0;\n\n\tconst ret = { mode: 'oklab', l: toe_inv(l) };\n\n\tif (hsl.alpha !== undefined) {\n\t\tret.alpha = hsl.alpha;\n\t}\n\n\tif (!s || l === 1) {\n\t\tret.a = ret.b = 0;\n\t\treturn ret;\n\t}\n\n\tlet a_ = Math.cos((h / 180) * Math.PI);\n\tlet b_ = Math.sin((h / 180) * Math.PI);\n\tlet [C_0, C_mid, C_max] = get_Cs(ret.l, a_, b_);\n\tlet t, k_0, k_1, k_2;\n\tif (s < 0.8) {\n\t\tt = 1.25 * s;\n\t\tk_0 = 0;\n\t\tk_1 = 0.8 * C_0;\n\t\tk_2 = 1 - k_1 / C_mid;\n\t} else {\n\t\tt = 5 * (s - 0.8);\n\t\tk_0 = C_mid;\n\t\tk_1 = (0.2 * C_mid * C_mid * 1.25 * 1.25) / C_0;\n\t\tk_2 = 1 - k_1 / (C_max - C_mid);\n\t}\n\tlet C = k_0 + (t * k_1) / (1 - k_2 * t);\n\tret.a = C * a_;\n\tret.b = C * b_;\n\n\treturn ret;\n}\n","import convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertOklabToOkhsl from './convertOklabToOkhsl.js';\nimport convertOkhslToOklab from './convertOkhslToOklab.js';\n\nimport modeHsl from '../hsl/definition.js';\n\nconst modeOkhsl = {\n\t...modeHsl,\n\tmode: 'okhsl',\n\tchannels: ['h', 's', 'l', 'alpha'],\n\tparse: ['--okhsl'],\n\tserialize: '--okhsl',\n\tfromMode: {\n\t\toklab: convertOklabToOkhsl,\n\t\trgb: c => convertOklabToOkhsl(convertRgbToOklab(c))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhslToOklab,\n\t\trgb: c => convertOklabToRgb(convertOkhslToOklab(c))\n\t}\n};\n\nexport default modeOkhsl;\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport normalizeHue from '../util/normalizeHue.js';\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\nimport { get_ST_max, toe_inv, toe } from '../okhsl/helpers.js';\n\nexport default function convertOklabToOkhsv(lab) {\n\tlet l = lab.l !== undefined ? lab.l : 0;\n\tlet a = lab.a !== undefined ? lab.a : 0;\n\tlet b = lab.b !== undefined ? lab.b : 0;\n\n\tlet c = Math.sqrt(a * a + b * b);\n\n\t// TODO: c = 0\n\tlet a_ = c ? a / c : 1;\n\tlet b_ = c ? b / c : 1;\n\n\tlet [S_max, T] = get_ST_max(a_, b_);\n\tlet S_0 = 0.5;\n\tlet k = 1 - S_0 / S_max;\n\n\tlet t = T / (c + l * T);\n\tlet L_v = t * l;\n\tlet C_v = t * c;\n\n\tlet L_vt = toe_inv(L_v);\n\tlet C_vt = (C_v * L_vt) / L_v;\n\n\tlet rgb_scale = convertOklabToLrgb({ l: L_vt, a: a_ * C_vt, b: b_ * C_vt });\n\tlet scale_L = Math.cbrt(\n\t\t1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0)\n\t);\n\n\tl = l / scale_L;\n\tc = ((c / scale_L) * toe(l)) / l;\n\tl = toe(l);\n\n\tconst ret = {\n\t\tmode: 'okhsv',\n\t\ts: c ? ((S_0 + T) * C_v) / (T * S_0 + T * k * C_v) : 0,\n\t\tv: l ? l / L_v : 0\n\t};\n\tif (ret.s) {\n\t\tret.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\tif (lab.alpha !== undefined) {\n\t\tret.alpha = lab.alpha;\n\t}\n\treturn ret;\n}\n","/*\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\nimport { get_ST_max, toe_inv } from '../okhsl/helpers.js';\n\nexport default function convertOkhsvToOklab(hsv) {\n\tconst ret = { mode: 'oklab' };\n\tif (hsv.alpha !== undefined) {\n\t\tret.alpha = hsv.alpha;\n\t}\n\n\tconst h = hsv.h !== undefined ? hsv.h : 0;\n\tconst s = hsv.s !== undefined ? hsv.s : 0;\n\tconst v = hsv.v !== undefined ? hsv.v : 0;\n\n\tconst a_ = Math.cos((h / 180) * Math.PI);\n\tconst b_ = Math.sin((h / 180) * Math.PI);\n\n\tconst [S_max, T] = get_ST_max(a_, b_);\n\tconst S_0 = 0.5;\n\tconst k = 1 - S_0 / S_max;\n\tconst L_v = 1 - (s * S_0) / (S_0 + T - T * k * s);\n\tconst C_v = (s * T * S_0) / (S_0 + T - T * k * s);\n\n\tconst L_vt = toe_inv(L_v);\n\tconst C_vt = (C_v * L_vt) / L_v;\n\tconst rgb_scale = convertOklabToLrgb({\n\t\tl: L_vt,\n\t\ta: a_ * C_vt,\n\t\tb: b_ * C_vt\n\t});\n\tconst scale_L = Math.cbrt(\n\t\t1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0)\n\t);\n\n\tconst L_new = toe_inv(v * L_v);\n\tconst C = (C_v * L_new) / L_v;\n\n\tret.l = L_new * scale_L;\n\tret.a = C * a_ * scale_L;\n\tret.b = C * b_ * scale_L;\n\n\treturn ret;\n}\n","import convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertOklabToOkhsv from './convertOklabToOkhsv.js';\nimport convertOkhsvToOklab from './convertOkhsvToOklab.js';\n\nimport modeHsv from '../hsv/definition.js';\n\nconst modeOkhsv = {\n\t...modeHsv,\n\tmode: 'okhsv',\n\tchannels: ['h', 's', 'v', 'alpha'],\n\tparse: ['--okhsv'],\n\tserialize: '--okhsv',\n\tfromMode: {\n\t\toklab: convertOklabToOkhsv,\n\t\trgb: c => convertOklabToOkhsv(convertRgbToOklab(c))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhsvToOklab,\n\t\trgb: c => convertOklabToRgb(convertOkhsvToOklab(c))\n\t}\n};\n\nexport default modeOkhsv;\n","import { Tok } from '../parse.js';\n\nfunction parseOklab(color, parsed) {\n\tif (!parsed || parsed[0] !== 'oklab') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'oklab' };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tres.l = Math.min(\n\t\t\tMath.max(0, l.type === Tok.Number ? l.value : l.value / 100),\n\t\t\t1\n\t\t);\n\t}\n\tif (a.type !== Tok.None) {\n\t\tres.a = a.type === Tok.Number ? a.value : (a.value * 0.4) / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value : (b.value * 0.4) / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseOklab;\n","import convertOklabToLrgb from './convertOklabToLrgb.js';\nimport convertLrgbToOklab from './convertLrgbToOklab.js';\nimport convertRgbToOklab from './convertRgbToOklab.js';\nimport convertOklabToRgb from './convertOklabToRgb.js';\nimport parseOklab from './parseOklab.js';\n\nimport lab from '../lab/definition.js';\n\n/*\n\tOklab, a perceptual color space for image processing by Björn Ottosson\n\tReference: https://bottosson.github.io/posts/oklab/\n */\n\nconst definition = {\n\t...lab,\n\tmode: 'oklab',\n\n\ttoMode: {\n\t\tlrgb: convertOklabToLrgb,\n\t\trgb: convertOklabToRgb\n\t},\n\n\tfromMode: {\n\t\tlrgb: convertLrgbToOklab,\n\t\trgb: convertRgbToOklab\n\t},\n\n\tranges: {\n\t\tl: [0, 1],\n\t\ta: [-0.4, 0.4],\n\t\tb: [-0.4, 0.4]\n\t},\n\n\tparse: [parseOklab],\n\tserialize: c =>\n\t\t`oklab(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.a !== undefined ? c.a : 'none'\n\t\t} ${c.b !== undefined ? c.b : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`\n};\n\nexport default definition;\n","import { Tok } from '../parse.js';\n\nfunction parseOklch(color, parsed) {\n\tif (!parsed || parsed[0] !== 'oklch') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'oklch' };\n\tconst [, l, c, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = Math.min(\n\t\t\tMath.max(0, l.type === Tok.Number ? l.value : l.value / 100),\n\t\t\t1\n\t\t);\n\t}\n\tif (c.type !== Tok.None) {\n\t\tres.c = Math.max(\n\t\t\t0,\n\t\t\tc.type === Tok.Number ? c.value : (c.value * 0.4) / 100\n\t\t);\n\t}\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseOklch;\n","import lch from '../lch/definition.js';\nimport convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport parseOklch from './parseOklch.js';\n\nconst definition = {\n\t...lch,\n\tmode: 'oklch',\n\n\ttoMode: {\n\t\toklab: c => convertLchToLab(c, 'oklab'),\n\t\trgb: c => convertOklabToRgb(convertLchToLab(c, 'oklab'))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToOklab(c), 'oklch'),\n\t\toklab: c => convertLabToLch(c, 'oklch')\n\t},\n\n\tparse: [parseOklch],\n\tserialize: c =>\n\t\t`oklch(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.c !== undefined ? c.c : 'none'\n\t\t} ${c.h !== undefined ? c.h : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tranges: {\n\t\tl: [0, 1],\n\t\tc: [0, 0.4],\n\t\th: [0, 360]\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert Display P3 values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertP3ToXyz65 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.486570948648216 * r +\n\t\t\t0.265667693169093 * g +\n\t\t\t0.1982172852343625 * b,\n\t\ty:\n\t\t\t0.2289745640697487 * r +\n\t\t\t0.6917385218365062 * g +\n\t\t\t0.079286914093745 * b,\n\t\tz: 0.0 * r + 0.0451133818589026 * g + 1.043944368900976 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertP3ToXyz65;\n","/*\n\tCIE XYZ D65 values to Display P3.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz65ToP3 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb(\n\t\t{\n\t\t\tr:\n\t\t\t\tx * 2.4934969119414263 -\n\t\t\t\ty * 0.9313836179191242 -\n\t\t\t\t0.402710784450717 * z,\n\t\t\tg:\n\t\t\t\tx * -0.8294889695615749 +\n\t\t\t\ty * 1.7626640603183465 +\n\t\t\t\t0.0236246858419436 * z,\n\t\t\tb:\n\t\t\t\tx * 0.0358458302437845 -\n\t\t\t\ty * 0.0761723892680418 +\n\t\t\t\t0.9568845240076871 * z\n\t\t},\n\t\t'p3'\n\t);\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToP3;\n","import rgb from '../rgb/definition.js';\nimport convertP3ToXyz65 from './convertP3ToXyz65.js';\nimport convertXyz65ToP3 from './convertXyz65ToP3.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'p3',\n\tparse: ['display-p3'],\n\tserialize: 'display-p3',\n\n\tfromMode: {\n\t\trgb: color => convertXyz65ToP3(convertRgbToXyz65(color)),\n\t\txyz65: convertXyz65ToP3\n\t},\n\n\ttoMode: {\n\t\trgb: color => convertXyz65ToRgb(convertP3ToXyz65(color)),\n\t\txyz65: convertP3ToXyz65\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert CIE XYZ D50 values to ProPhoto RGB\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst gamma = v => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 1 / 512) {\n\t\treturn Math.sign(v) * Math.pow(abs, 1 / 1.8);\n\t}\n\treturn 16 * v;\n};\n\nconst convertXyz50ToProphoto = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'prophoto',\n\t\tr: gamma(\n\t\t\tx * 1.3457868816471585 -\n\t\t\t\ty * 0.2555720873797946 -\n\t\t\t\t0.0511018649755453 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.5446307051249019 +\n\t\t\t\ty * 1.5082477428451466 +\n\t\t\t\t0.0205274474364214 * z\n\t\t),\n\t\tb: gamma(x * 0.0 + y * 0.0 + 1.2119675456389452 * z)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToProphoto;\n","/*\n\tConvert ProPhoto RGB values to CIE XYZ D50\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst linearize = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 16 / 512) {\n\t\treturn Math.sign(v) * Math.pow(abs, 1.8);\n\t}\n\treturn v / 16;\n};\n\nconst convertProphotoToXyz50 = prophoto => {\n\tlet r = linearize(prophoto.r);\n\tlet g = linearize(prophoto.g);\n\tlet b = linearize(prophoto.b);\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t0.7977666449006423 * r +\n\t\t\t0.1351812974005331 * g +\n\t\t\t0.0313477341283922 * b,\n\t\ty:\n\t\t\t0.2880748288194013 * r +\n\t\t\t0.7118352342418731 * g +\n\t\t\t0.0000899369387256 * b,\n\t\tz: 0 * r + 0 * g + 0.8251046025104602 * b\n\t};\n\tif (prophoto.alpha !== undefined) {\n\t\tres.alpha = prophoto.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertProphotoToXyz50;\n","import rgb from '../rgb/definition.js';\n\nimport convertXyz50ToProphoto from './convertXyz50ToProphoto.js';\nimport convertProphotoToXyz50 from './convertProphotoToXyz50.js';\n\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\n/*\n\tProPhoto RGB Color space\n\n\tReferences:\n\t\t* https://en.wikipedia.org/wiki/ProPhoto_RGB_color_space\n */\n\nconst definition = {\n\t...rgb,\n\tmode: 'prophoto',\n\tparse: ['prophoto-rgb'],\n\tserialize: 'prophoto-rgb',\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToProphoto,\n\t\trgb: color => convertXyz50ToProphoto(convertRgbToXyz50(color))\n\t},\n\n\ttoMode: {\n\t\txyz50: convertProphotoToXyz50,\n\t\trgb: color => convertXyz50ToRgb(convertProphotoToXyz50(color))\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert CIE XYZ D65 values to Rec. 2020\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.itu.int/rec/R-REC-BT.2020/en\n*/\n\nconst α = 1.09929682680944;\nconst β = 0.018053968510807;\nconst gamma = v => {\n\tconst abs = Math.abs(v);\n\tif (abs > β) {\n\t\treturn (Math.sign(v) || 1) * (α * Math.pow(abs, 0.45) - (α - 1));\n\t}\n\treturn 4.5 * v;\n};\n\nconst convertXyz65ToRec2020 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'rec2020',\n\t\tr: gamma(\n\t\t\tx * 1.7166511879712683 -\n\t\t\t\ty * 0.3556707837763925 -\n\t\t\t\t0.2533662813736599 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.6666843518324893 +\n\t\t\t\ty * 1.6164812366349395 +\n\t\t\t\t0.0157685458139111 * z\n\t\t),\n\t\tb: gamma(\n\t\t\tx * 0.0176398574453108 -\n\t\t\t\ty * 0.0427706132578085 +\n\t\t\t\t0.9421031212354739 * z\n\t\t)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToRec2020;\n","/*\n\tConvert Rec. 2020 values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.itu.int/rec/R-REC-BT.2020/en\n*/\n\nconst α = 1.09929682680944;\nconst β = 0.018053968510807;\n\nconst linearize = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs < β * 4.5) {\n\t\treturn v / 4.5;\n\t}\n\treturn (Math.sign(v) || 1) * Math.pow((abs + α - 1) / α, 1 / 0.45);\n};\n\nconst convertRec2020ToXyz65 = rec2020 => {\n\tlet r = linearize(rec2020.r);\n\tlet g = linearize(rec2020.g);\n\tlet b = linearize(rec2020.b);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.6369580483012911 * r +\n\t\t\t0.1446169035862083 * g +\n\t\t\t0.1688809751641721 * b,\n\t\ty:\n\t\t\t0.262700212011267 * r +\n\t\t\t0.6779980715188708 * g +\n\t\t\t0.059301716469862 * b,\n\t\tz: 0 * r + 0.0280726930490874 * g + 1.0609850577107909 * b\n\t};\n\tif (rec2020.alpha !== undefined) {\n\t\tres.alpha = rec2020.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRec2020ToXyz65;\n","import rgb from '../rgb/definition.js';\n\nimport convertXyz65ToRec2020 from './convertXyz65ToRec2020.js';\nimport convertRec2020ToXyz65 from './convertRec2020ToXyz65.js';\n\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'rec2020',\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToRec2020,\n\t\trgb: color => convertXyz65ToRec2020(convertRgbToXyz65(color))\n\t},\n\n\ttoMode: {\n\t\txyz65: convertRec2020ToXyz65,\n\t\trgb: color => convertXyz65ToRgb(convertRec2020ToXyz65(color))\n\t},\n\n\tparse: ['rec2020'],\n\tserialize: 'rec2020'\n};\n\nexport default definition;\n","export const bias = 0.00379307325527544933;\nexport const bias_cbrt = Math.cbrt(bias);\n","import convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\nimport { bias, bias_cbrt } from './constants.js';\n\nconst transfer = v => Math.cbrt(v) - bias_cbrt;\n\nconst convertRgbToXyb = color => {\n\tconst { r, g, b, alpha } = convertRgbToLrgb(color);\n\tconst l = transfer(0.3 * r + 0.622 * g + 0.078 * b + bias);\n\tconst m = transfer(0.23 * r + 0.692 * g + 0.078 * b + bias);\n\tconst s = transfer(\n\t\t0.24342268924547819 * r +\n\t\t\t0.20476744424496821 * g +\n\t\t\t0.5518098665095536 * b +\n\t\t\tbias\n\t);\n\tconst res = {\n\t\tmode: 'xyb',\n\t\tx: (l - m) / 2,\n\t\ty: (l + m) / 2,\n\t\t/* Apply default chroma from luma (subtract Y from B) */\n\t\tb: s - (l + m) / 2\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToXyb;\n","import convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\nimport { bias, bias_cbrt } from './constants.js';\n\nconst transfer = v => Math.pow(v + bias_cbrt, 3);\n\nconst convertXybToRgb = ({ x, y, b, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (b === undefined) b = 0;\n\tconst l = transfer(x + y) - bias;\n\tconst m = transfer(y - x) - bias;\n\t/* Account for chroma from luma: add Y back to B */\n\tconst s = transfer(b + y) - bias;\n\n\tconst res = convertLrgbToRgb({\n\t\tr:\n\t\t\t11.031566904639861 * l -\n\t\t\t9.866943908131562 * m -\n\t\t\t0.16462299650829934 * s,\n\t\tg:\n\t\t\t-3.2541473810744237 * l +\n\t\t\t4.418770377582723 * m -\n\t\t\t0.16462299650829934 * s,\n\t\tb:\n\t\t\t-3.6588512867136815 * l +\n\t\t\t2.7129230459360922 * m +\n\t\t\t1.9459282407775895 * s\n\t});\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertXybToRgb;\n","import { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport convertRgbToXyb from './convertRgbToXyb.js';\nimport convertXybToRgb from './convertXybToRgb.js';\n\n/*\n\tThe XYB color space, used in JPEG XL.\n\tReference: https://ds.jpeg.org/whitepapers/jpeg-xl-whitepaper.pdf\n*/\n\nconst definition = {\n\tmode: 'xyb',\n\tchannels: ['x', 'y', 'b', 'alpha'],\n\tparse: ['--xyb'],\n\tserialize: '--xyb',\n\n\ttoMode: {\n\t\trgb: convertXybToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyb\n\t},\n\n\tranges: {\n\t\tx: [-0.0154, 0.0281],\n\t\ty: [0, 0.8453],\n\t\tb: [-0.2778, 0.388]\n\t},\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","/*\n\tThe XYZ D50 color space\n\t-----------------------\n */\n\nimport convertXyz50ToRgb from './convertXyz50ToRgb.js';\nimport convertXyz50ToLab from '../lab/convertXyz50ToLab.js';\nimport convertRgbToXyz50 from './convertRgbToXyz50.js';\nimport convertLabToXyz50 from '../lab/convertLabToXyz50.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'xyz50',\n\tparse: ['xyz-d50'],\n\tserialize: 'xyz-d50',\n\n\ttoMode: {\n\t\trgb: convertXyz50ToRgb,\n\t\tlab: convertXyz50ToLab\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyz50,\n\t\tlab: convertLabToXyz50\n\t},\n\n\tchannels: ['x', 'y', 'z', 'alpha'],\n\n\tranges: {\n\t\tx: [0, 0.964],\n\t\ty: [0, 0.999],\n\t\tz: [0, 0.825]\n\t},\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","/*\n\tChromatic adaptation of CIE XYZ from D65 to D50 white point\n\tusing the Bradford method.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\t\n*/\n\nconst convertXyz65ToXyz50 = xyz65 => {\n\tlet { x, y, z, alpha } = xyz65;\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t1.0479298208405488 * x +\n\t\t\t0.0229467933410191 * y -\n\t\t\t0.0501922295431356 * z,\n\t\ty:\n\t\t\t0.0296278156881593 * x +\n\t\t\t0.990434484573249 * y -\n\t\t\t0.0170738250293851 * z,\n\t\tz:\n\t\t\t-0.0092430581525912 * x +\n\t\t\t0.0150551448965779 * y +\n\t\t\t0.7518742899580008 * z\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToXyz50;\n","/*\n\tChromatic adaptation of CIE XYZ from D50 to D65 white point\n\tusing the Bradford method.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\t\n*/\n\nconst convertXyz50ToXyz65 = xyz50 => {\n\tlet { x, y, z, alpha } = xyz50;\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.9554734527042182 * x -\n\t\t\t0.0230985368742614 * y +\n\t\t\t0.0632593086610217 * z,\n\t\ty:\n\t\t\t-0.0283697069632081 * x +\n\t\t\t1.0099954580058226 * y +\n\t\t\t0.021041398966943 * z,\n\t\tz:\n\t\t\t0.0123140016883199 * x -\n\t\t\t0.0205076964334779 * y +\n\t\t\t1.3303659366080753 * z\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToXyz65;\n","/*\n\tThe XYZ D65 color space\n\t-----------------------\n */\n\nimport convertXyz65ToRgb from './convertXyz65ToRgb.js';\nimport convertRgbToXyz65 from './convertRgbToXyz65.js';\n\nimport convertXyz65ToXyz50 from './convertXyz65ToXyz50.js';\nimport convertXyz50ToXyz65 from './convertXyz50ToXyz65.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'xyz65',\n\n\ttoMode: {\n\t\trgb: convertXyz65ToRgb,\n\t\txyz50: convertXyz65ToXyz50\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyz65,\n\t\txyz50: convertXyz50ToXyz65\n\t},\n\n\tranges: {\n\t\tx: [0, 0.95],\n\t\ty: [0, 1],\n\t\tz: [0, 1.088]\n\t},\n\n\tchannels: ['x', 'y', 'z', 'alpha'],\n\n\tparse: ['xyz', 'xyz-d65'],\n\tserialize: 'xyz-d65',\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","const convertRgbToYiq = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tconst res = {\n\t\tmode: 'yiq',\n\t\ty: 0.29889531 * r + 0.58662247 * g + 0.11448223 * b,\n\t\ti: 0.59597799 * r - 0.2741761 * g - 0.32180189 * b,\n\t\tq: 0.21147017 * r - 0.52261711 * g + 0.31114694 * b\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToYiq;\n","const convertYiqToRgb = ({ y, i, q, alpha }) => {\n\tif (y === undefined) y = 0;\n\tif (i === undefined) i = 0;\n\tif (q === undefined) q = 0;\n\tconst res = {\n\t\tmode: 'rgb',\n\t\tr: y + 0.95608445 * i + 0.6208885 * q,\n\t\tg: y - 0.27137664 * i - 0.6486059 * q,\n\t\tb: y - 1.10561724 * i + 1.70250126 * q\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertYiqToRgb;\n","import convertRgbToYiq from './convertRgbToYiq.js';\nimport convertYiqToRgb from './convertYiqToRgb.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\n/*\n\tYIQ Color Space\n\n\tReferences\n\t----------\n\n\tWikipedia:\n\t\thttps://en.wikipedia.org/wiki/YIQ\n\n\t\"Measuring perceived color difference using YIQ NTSC\n\ttransmission color space in mobile applications\"\n\t\t\n\t\tby Yuriy Kotsarenko, Fernando Ramos in:\n\t\tProgramación Matemática y Software (2010) \n\n\tAvailable at:\n\t\t\n\t\thttp://www.progmat.uaem.mx:8080/artVol2Num2/Articulo3Vol2Num2.pdf\n */\n\nconst definition = {\n\tmode: 'yiq',\n\n\ttoMode: {\n\t\trgb: convertYiqToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToYiq\n\t},\n\n\tchannels: ['y', 'i', 'q', 'alpha'],\n\n\tparse: ['--yiq'],\n\tserialize: '--yiq',\n\n\tranges: {\n\t\ti: [-0.595, 0.595],\n\t\tq: [-0.522, 0.522]\n\t},\n\n\tinterpolate: {\n\t\ty: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\tq: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","// From: https://github.com/d3/d3-format/issues/32\n\nconst r = (value, precision) =>\n\tMath.round(value * (precision = Math.pow(10, precision))) / precision;\n\nconst round =\n\t(precision = 4) =>\n\tvalue =>\n\t\ttypeof value === 'number' ? r(value, precision) : value;\n\nexport default round;\n","import converter from './converter.js';\nimport round from './round.js';\nimport prepare from './_prepare.js';\nimport { getMode } from './modes.js';\n\nlet twoDecimals = round(2);\n\nconst clamp = value => Math.max(0, Math.min(1, value || 0));\nconst fixup = value => Math.round(clamp(value) * 255);\n\nconst rgb = converter('rgb');\nconst hsl = converter('hsl');\n\nexport const serializeHex = color => {\n\tif (color === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet r = fixup(color.r);\n\tlet g = fixup(color.g);\n\tlet b = fixup(color.b);\n\n\treturn '#' + ((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice(1);\n};\n\nexport const serializeHex8 = color => {\n\tif (color === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet a = fixup(color.alpha !== undefined ? color.alpha : 1);\n\treturn serializeHex(color) + ((1 << 8) | a).toString(16).slice(1);\n};\n\nexport const serializeRgb = color => {\n\tif (color === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet r = fixup(color.r);\n\tlet g = fixup(color.g);\n\tlet b = fixup(color.b);\n\n\tif (color.alpha === undefined || color.alpha === 1) {\n\t\t// opaque color\n\t\treturn `rgb(${r}, ${g}, ${b})`;\n\t} else {\n\t\t// transparent color\n\t\treturn `rgba(${r}, ${g}, ${b}, ${twoDecimals(clamp(color.alpha))})`;\n\t}\n};\n\nexport const serializeHsl = color => {\n\tif (color === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst h = twoDecimals(color.h || 0);\n\tconst s = twoDecimals(clamp(color.s) * 100) + '%';\n\tconst l = twoDecimals(clamp(color.l) * 100) + '%';\n\n\tif (color.alpha === undefined || color.alpha === 1) {\n\t\t// opaque color\n\t\treturn `hsl(${h}, ${s}, ${l})`;\n\t} else {\n\t\t// transparent color\n\t\treturn `hsla(${h}, ${s}, ${l}, ${twoDecimals(clamp(color.alpha))})`;\n\t}\n};\n\nexport const formatCss = c => {\n\tconst color = prepare(c);\n\tif (!color) {\n\t\treturn undefined;\n\t}\n\tconst def = getMode(color.mode);\n\tif (!def.serialize || typeof def.serialize === 'string') {\n\t\tlet res = `color(${def.serialize || `--${color.mode}`} `;\n\t\tdef.channels.forEach((ch, i) => {\n\t\t\tif (ch !== 'alpha') {\n\t\t\t\tres +=\n\t\t\t\t\t(i ? ' ' : '') +\n\t\t\t\t\t(color[ch] !== undefined ? color[ch] : 'none');\n\t\t\t}\n\t\t});\n\t\tif (color.alpha !== undefined && color.alpha < 1) {\n\t\t\tres += ` / ${color.alpha}`;\n\t\t}\n\t\treturn res + ')';\n\t}\n\tif (typeof def.serialize === 'function') {\n\t\treturn def.serialize(color);\n\t}\n\treturn undefined;\n};\n\nexport const formatHex = c => serializeHex(rgb(c));\nexport const formatHex8 = c => serializeHex8(rgb(c));\nexport const formatRgb = c => serializeRgb(rgb(c));\nexport const formatHsl = c => serializeHsl(hsl(c));\n","/*\n\tColor blend modes, as defined in the \n\tCSS Compositing Level 4 spec\n\n\thttps://drafts.fxtf.org/compositing-2/\n\thttps://en.wikipedia.org/wiki/Blend_modes\n\thttps://en.wikipedia.org/wiki/Alpha_compositing\n\thttps://keithp.com/~keithp/porterduff/p253-porter.pdf\n */\n\nimport converter from './converter.js';\nimport { getMode } from './modes.js';\n\nconst BLENDS = {\n\tnormal: (b, s) => s,\n\tmultiply: (b, s) => b * s,\n\tscreen: (b, s) => b + s - b * s,\n\t'hard-light': (b, s) => (s < 0.5 ? b * 2 * s : 2 * s * (1 - b) - 1),\n\toverlay: (b, s) => (b < 0.5 ? s * 2 * b : 2 * b * (1 - s) - 1),\n\tdarken: (b, s) => Math.min(b, s),\n\tlighten: (b, s) => Math.max(b, s),\n\t'color-dodge': (b, s) =>\n\t\tb === 0 ? 0 : s === 1 ? 1 : Math.min(1, b / (1 - s)),\n\t'color-burn': (b, s) =>\n\t\tb === 1 ? 1 : s === 0 ? 0 : 1 - Math.min(1, (1 - b) / s),\n\t'soft-light': (b, s) =>\n\t\ts < 0.5\n\t\t\t? b - (1 - 2 * s) * b * (1 - b)\n\t\t\t: b +\n\t\t\t (2 * s - 1) *\n\t\t\t\t\t((b < 0.25 ? ((16 * b - 12) * b + 4) * b : Math.sqrt(b)) -\n\t\t\t\t\t\tb),\n\tdifference: (b, s) => Math.abs(b - s),\n\texclusion: (b, s) => b + s - 2 * b * s\n};\n\nconst blend = (colors, type = 'normal', mode = 'rgb') => {\n\tlet fn = typeof type === 'function' ? type : BLENDS[type];\n\n\tlet conv = converter(mode);\n\n\t// get mode channels\n\tlet channels = getMode(mode).channels;\n\n\t// convert all colors to the mode\n\t// and assume undefined alphas are 1\n\tlet converted = colors.map(c => {\n\t\tlet cc = conv(c);\n\t\tif (cc.alpha === undefined) {\n\t\t\tcc.alpha = 1;\n\t\t}\n\t\treturn cc;\n\t});\n\n\treturn converted.reduce((b, s) => {\n\t\tif (b === undefined) return s;\n\t\t// blend backdrop and source\n\t\tlet alpha = s.alpha + b.alpha * (1 - s.alpha);\n\t\treturn channels.reduce(\n\t\t\t(res, ch) => {\n\t\t\t\tif (ch !== 'alpha') {\n\t\t\t\t\tif (alpha === 0) {\n\t\t\t\t\t\tres[ch] = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tres[ch] =\n\t\t\t\t\t\t\ts.alpha * (1 - b.alpha) * s[ch] +\n\t\t\t\t\t\t\ts.alpha * b.alpha * fn(b[ch], s[ch]) +\n\t\t\t\t\t\t\t(1 - s.alpha) * b.alpha * b[ch];\n\t\t\t\t\t\t// TODO fix() assumes [0, 1] colors\n\t\t\t\t\t\t// and is only true for RGB / LRGB\n\t\t\t\t\t\tres[ch] = Math.max(0, Math.min(1, res[ch] / alpha));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn res;\n\t\t\t},\n\t\t\t{ mode, alpha }\n\t\t);\n\t});\n};\n\nexport default blend;\n","import { getMode } from './modes.js';\n\n/*\n\tGenerate a random number between `min` and `max`\n */\nconst rand = ([min, max]) => min + Math.random() * (max - min);\n\n/*\n\tConvert a constraints object to intervals.\n */\nconst to_intervals = constraints =>\n\tObject.keys(constraints).reduce((o, k) => {\n\t\tlet v = constraints[k];\n\t\to[k] = Array.isArray(v) ? v : [v, v];\n\t\treturn o;\n\t}, {});\n\n/*\n\tGenerate a random color.\n */\nconst random = (mode = 'rgb', constraints = {}) => {\n\tlet def = getMode(mode);\n\tlet limits = to_intervals(constraints);\n\treturn def.channels.reduce(\n\t\t(res, ch) => {\n\t\t\t// ignore alpha if not present in constraints\n\t\t\tif (limits.alpha || ch !== 'alpha') {\n\t\t\t\tres[ch] = rand(limits[ch] || def.ranges[ch]);\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t{ mode }\n\t);\n};\n\nexport default random;\n","import converter from './converter.js';\nimport prepare from './_prepare.js';\nimport { getMode } from './modes.js';\n\nconst mapper = (fn, mode = 'rgb', preserve_mode = false) => {\n\tlet channels = mode ? getMode(mode).channels : null;\n\tlet conv = mode ? converter(mode) : prepare;\n\treturn color => {\n\t\tlet conv_color = conv(color);\n\t\tif (!conv_color) {\n\t\t\treturn undefined;\n\t\t}\n\t\tlet res = (channels || getMode(conv_color.mode).channels).reduce(\n\t\t\t(res, ch) => {\n\t\t\t\tlet v = fn(conv_color[ch], ch, conv_color, mode);\n\t\t\t\tif (v !== undefined && !isNaN(v)) {\n\t\t\t\t\tres[ch] = v;\n\t\t\t\t}\n\t\t\t\treturn res;\n\t\t\t},\n\t\t\t{ mode: conv_color.mode }\n\t\t);\n\t\tif (!preserve_mode) {\n\t\t\treturn res;\n\t\t}\n\t\tlet prep = prepare(color);\n\t\tif (prep && prep.mode !== res.mode) {\n\t\t\treturn converter(prep.mode)(res);\n\t\t}\n\t\treturn res;\n\t};\n};\n\nconst mapAlphaMultiply = (v, ch, c) => {\n\tif (ch !== 'alpha') {\n\t\treturn (v || 0) * (c.alpha !== undefined ? c.alpha : 1);\n\t}\n\treturn v;\n};\n\nconst mapAlphaDivide = (v, ch, c) => {\n\tif (ch !== 'alpha' && c.alpha !== 0) {\n\t\treturn (v || 0) / (c.alpha !== undefined ? c.alpha : 1);\n\t}\n\treturn v;\n};\n\nconst mapTransferLinear =\n\t(slope = 1, intercept = 0) =>\n\t(v, ch) => {\n\t\tif (ch !== 'alpha') {\n\t\t\treturn v * slope + intercept;\n\t\t}\n\t\treturn v;\n\t};\n\nconst mapTransferGamma =\n\t(amplitude = 1, exponent = 1, offset = 0) =>\n\t(v, ch) => {\n\t\tif (ch !== 'alpha') {\n\t\t\treturn amplitude * Math.pow(v, exponent) + offset;\n\t\t}\n\t\treturn v;\n\t};\n\nexport {\n\tmapper,\n\tmapAlphaMultiply,\n\tmapAlphaDivide,\n\tmapTransferLinear,\n\tmapTransferGamma\n};\n","/*\n\tNormalize an array of color stop positions for a gradient\n\tbased on the rules defined in the CSS Images Module 4 spec:\n\n\t1. make the first position 0 and the last position 1 if missing\n\t2. sequences of unpositioned color stops should be spread out evenly\n\t3. no position can be smaller than any of the ones preceding it\n\t\n\tReference: https://drafts.csswg.org/css-images-4/#color-stop-fixup\n\n\tNote: this method does not make a defensive copy of the array\n\tit receives as argument. Instead, it adjusts the values in-place.\n */\nconst normalizePositions = arr => {\n\t// 1. fix up first/last position if missing\n\tif (arr[0] === undefined) {\n\t\tarr[0] = 0;\n\t}\n\tif (arr[arr.length - 1] === undefined) {\n\t\tarr[arr.length - 1] = 1;\n\t}\n\n\tlet i = 1;\n\tlet j;\n\tlet from_idx;\n\tlet from_pos;\n\tlet inc;\n\twhile (i < arr.length) {\n\t\t// 2. fill up undefined positions\n\t\tif (arr[i] === undefined) {\n\t\t\tfrom_idx = i;\n\t\t\tfrom_pos = arr[i - 1];\n\t\t\tj = i;\n\n\t\t\t// find end of `undefined` sequence...\n\t\t\twhile (arr[j] === undefined) j++;\n\n\t\t\t// ...and add evenly-spread positions\n\t\t\tinc = (arr[j] - from_pos) / (j - i + 1);\n\t\t\twhile (i < j) {\n\t\t\t\tarr[i] = from_pos + (i + 1 - from_idx) * inc;\n\t\t\t\ti++;\n\t\t\t}\n\t\t} else if (arr[i] < arr[i - 1]) {\n\t\t\t// 3. make positions increase\n\t\t\tarr[i] = arr[i - 1];\n\t\t}\n\t\ti++;\n\t}\n\treturn arr;\n};\n\nexport default normalizePositions;\n","// Color interpolation hint exponential function\nconst midpoint = (H = 0.5) => t =>\n\tH <= 0 ? 1 : H >= 1 ? 0 : Math.pow(t, Math.log(0.5) / Math.log(H));\n\nexport default midpoint;\n","import converter from '../converter.js';\nimport { getMode } from '../modes.js';\nimport normalizePositions from '../util/normalizePositions.js';\nimport easingMidpoint from '../easing/midpoint.js';\nimport { mapper, mapAlphaMultiply, mapAlphaDivide } from '../map.js';\n\nconst isfn = o => typeof o === 'function';\nconst isobj = o => o && typeof o === 'object';\nconst isnum = o => typeof o === 'number';\n\nconst interpolate_fn = (colors, mode = 'rgb', overrides, premap) => {\n\tlet def = getMode(mode);\n\tlet conv = converter(mode);\n\n\tlet conv_colors = [];\n\tlet positions = [];\n\tlet fns = {};\n\n\tcolors.forEach(val => {\n\t\tif (Array.isArray(val)) {\n\t\t\tconv_colors.push(conv(val[0]));\n\t\t\tpositions.push(val[1]);\n\t\t} else if (isnum(val) || isfn(val)) {\n\t\t\t// Color interpolation hint or easing function\n\t\t\tfns[positions.length] = val;\n\t\t} else {\n\t\t\tconv_colors.push(conv(val));\n\t\t\tpositions.push(undefined);\n\t\t}\n\t});\n\n\tnormalizePositions(positions);\n\n\t// override the default interpolators\n\t// from the color space definition with any custom ones\n\tlet fixed = def.channels.reduce((res, ch) => {\n\t\tlet ffn;\n\t\tif (isobj(overrides) && isobj(overrides[ch]) && overrides[ch].fixup) {\n\t\t\tffn = overrides[ch].fixup;\n\t\t} else if (isobj(def.interpolate[ch]) && def.interpolate[ch].fixup) {\n\t\t\tffn = def.interpolate[ch].fixup;\n\t\t} else {\n\t\t\tffn = v => v;\n\t\t}\n\t\tres[ch] = ffn(conv_colors.map(color => color[ch]));\n\t\treturn res;\n\t}, {});\n\n\tif (premap) {\n\t\tlet ccolors = conv_colors.map((color, idx) => {\n\t\t\treturn def.channels.reduce(\n\t\t\t\t(c, ch) => {\n\t\t\t\t\tc[ch] = fixed[ch][idx];\n\t\t\t\t\treturn c;\n\t\t\t\t},\n\t\t\t\t{ mode }\n\t\t\t);\n\t\t});\n\t\tfixed = def.channels.reduce((res, ch) => {\n\t\t\tres[ch] = ccolors.map(c => {\n\t\t\t\tlet v = premap(c[ch], ch, c, mode);\n\t\t\t\treturn isNaN(v) ? undefined : v;\n\t\t\t});\n\t\t\treturn res;\n\t\t}, {});\n\t}\n\n\tlet interpolators = def.channels.reduce((res, ch) => {\n\t\tlet ifn;\n\t\tif (isfn(overrides)) {\n\t\t\tifn = overrides;\n\t\t} else if (isobj(overrides) && isfn(overrides[ch])) {\n\t\t\tifn = overrides[ch];\n\t\t} else if (\n\t\t\tisobj(overrides) &&\n\t\t\tisobj(overrides[ch]) &&\n\t\t\toverrides[ch].use\n\t\t) {\n\t\t\tifn = overrides[ch].use;\n\t\t} else if (isfn(def.interpolate[ch])) {\n\t\t\tifn = def.interpolate[ch];\n\t\t} else if (isobj(def.interpolate[ch])) {\n\t\t\tifn = def.interpolate[ch].use;\n\t\t}\n\n\t\tres[ch] = ifn(fixed[ch]);\n\t\treturn res;\n\t}, {});\n\n\tlet n = conv_colors.length - 1;\n\n\treturn t => {\n\t\t// clamp t to the [0, 1] interval\n\t\tt = Math.min(Math.max(0, t), 1);\n\n\t\tif (t <= positions[0]) {\n\t\t\treturn conv_colors[0];\n\t\t}\n\n\t\tif (t > positions[n]) {\n\t\t\treturn conv_colors[n];\n\t\t}\n\n\t\t// Convert `t` from [0, 1] to `t0` between the appropriate two colors.\n\t\t// First, look for the two colors between which `t` is located.\n\t\t// Note: this can be optimized by searching for the index\n\t\t// through bisection instead of start-to-end.\n\t\tlet idx = 0;\n\t\twhile (positions[idx] < t) idx++;\n\t\tlet start = positions[idx - 1];\n\t\tlet delta = positions[idx] - start;\n\n\t\tlet P = (t - start) / delta;\n\n\t\t// use either the local easing, or the global easing, if any\n\t\tlet fn = fns[idx] || fns[0];\n\t\tif (fn !== undefined) {\n\t\t\tif (isnum(fn)) {\n\t\t\t\tfn = easingMidpoint((fn - start) / delta);\n\t\t\t}\n\t\t\tP = fn(P);\n\t\t}\n\n\t\tlet t0 = (idx - 1 + P) / n;\n\n\t\treturn def.channels.reduce(\n\t\t\t(res, channel) => {\n\t\t\t\tlet val = interpolators[channel](t0);\n\t\t\t\tif (val !== undefined) {\n\t\t\t\t\tres[channel] = val;\n\t\t\t\t}\n\t\t\t\treturn res;\n\t\t\t},\n\t\t\t{ mode }\n\t\t);\n\t};\n};\n\nconst interpolate = (colors, mode = 'rgb', overrides) =>\n\tinterpolate_fn(colors, mode, overrides);\n\nconst interpolateWith =\n\t(premap, postmap) =>\n\t(colors, mode = 'rgb', overrides) => {\n\t\tlet post = postmap ? mapper(postmap, mode) : undefined;\n\t\tlet it = interpolate_fn(colors, mode, overrides, premap);\n\t\treturn post ? t => post(it(t)) : it;\n\t};\n\nconst interpolateWithPremultipliedAlpha = interpolateWith(\n\tmapAlphaMultiply,\n\tmapAlphaDivide\n);\n\nexport { interpolate, interpolateWith, interpolateWithPremultipliedAlpha };\n","/*\n\tBasis spline\n\t------------\n\n\tGiven control points V0...Vn (our values)\n\n\t\tS0 = V0\n\t\t...\n\t\tSi = 1/6 * Vi-1 + 2/3 * Vi + 1/6 * Vi+1\n\t\t...\n\t\tSn = Vn\n\n\tThe Bézier curve has control points:\n\n\t\tBi = Si-1, 2/3 * Vi-1 + 1/3 * Vi, 1/3 * Vi-1 + 2/3 * Vi, Si\n\n\tWhich we can then factor into the Bezier's explicit form:\n\t\n\t\tB(t) = (1-t)^3 * P0 + 3 * (1-t)^2 * t * P1 + (1-t) * t^2 * P2 + t^3 * P3 \n\n */\nconst mod = (v, l) => (v + l) % l;\n\nconst bspline = (Vim2, Vim1, Vi, Vip1, t) => {\n\tlet t2 = t * t;\n\tlet t3 = t2 * t;\n\treturn (\n\t\t((1 - 3 * t + 3 * t2 - t3) * Vim2 +\n\t\t\t(4 - 6 * t2 + 3 * t3) * Vim1 +\n\t\t\t(1 + 3 * t + 3 * t2 - 3 * t3) * Vi +\n\t\t\tt3 * Vip1) /\n\t\t6\n\t);\n};\n\nexport const interpolatorSplineBasis = arr => t => {\n\tlet classes = arr.length - 1;\n\tlet i = t >= 1 ? classes - 1 : Math.max(0, Math.floor(t * classes));\n\treturn bspline(\n\t\ti > 0 ? arr[i - 1] : 2 * arr[i] - arr[i + 1],\n\t\tarr[i],\n\t\tarr[i + 1],\n\t\ti < classes - 1 ? arr[i + 2] : 2 * arr[i + 1] - arr[i],\n\t\t(t - i / classes) * classes\n\t);\n};\n\nexport const interpolatorSplineBasisClosed = arr => t => {\n\tconst classes = arr.length - 1;\n\tconst i = Math.floor(t * classes);\n\treturn bspline(\n\t\tarr[mod(i - 1, arr.length)],\n\t\tarr[mod(i, arr.length)],\n\t\tarr[mod(i + 1, arr.length)],\n\t\tarr[mod(i + 2, arr.length)],\n\t\t(t - i / classes) * classes\n\t);\n};\n","import {\n\tinterpolatorSplineBasisClosed,\n\tinterpolatorSplineBasis\n} from './splineBasis.js';\n\nconst solve = v => {\n\tlet i;\n\tlet n = v.length - 1;\n\tlet c = new Array(n);\n\tlet _v = new Array(n);\n\tlet sol = new Array(n);\n\n\tc[1] = 1 / 4;\n\t_v[1] = (6 * v[1] - v[0]) / 4;\n\n\tfor (i = 2; i < n; ++i) {\n\t\tc[i] = 1 / (4 - c[i - 1]);\n\t\t_v[i] = (6 * v[i] - (i == n - 1 ? v[n] : 0) - _v[i - 1]) * c[i];\n\t}\n\n\tsol[0] = v[0];\n\tsol[n] = v[n];\n\tif (n - 1 > 0) {\n\t\tsol[n - 1] = _v[n - 1];\n\t}\n\n\tfor (i = n - 2; i > 0; --i) {\n\t\tsol[i] = _v[i] - c[i] * sol[i + 1];\n\t}\n\n\treturn sol;\n};\n\nexport const interpolatorSplineNatural = arr =>\n\tinterpolatorSplineBasis(solve(arr));\nexport const interpolatorSplineNaturalClosed = arr =>\n\tinterpolatorSplineBasisClosed(solve(arr));\n","import { interpolatorLinear } from './linear.js';\n\n/* \n\tMonotone spline\n\t---------------\n\n\tBased on:\n\n\t\tSteffen, M.\n\t\t\"A simple method for monotonic interpolation in one dimension.\"\n\t\tin Astronomy and Astrophysics, Vol. 239, p. 443-450 (Nov. 1990),\n \tProvided by the SAO/NASA Astrophysics Data System.\n\n\t\thttps://ui.adsabs.harvard.edu/abs/1990A&A...239..443S\n\n\t(Reference thanks to `d3/d3-shape`)\n*/\n\nconst sgn = Math.sign;\nconst min = Math.min;\nconst abs = Math.abs;\n\nconst mono = arr => {\n\tlet n = arr.length - 1;\n\tlet s = [];\n\tlet p = [];\n\tlet yp = [];\n\tfor (let i = 0; i < n; i++) {\n\t\ts.push((arr[i + 1] - arr[i]) * n);\n\t\tp.push(i > 0 ? 0.5 * (arr[i + 1] - arr[i - 1]) * n : undefined);\n\t\typ.push(\n\t\t\ti > 0\n\t\t\t\t? (sgn(s[i - 1]) + sgn(s[i])) *\n\t\t\t\t\t\tmin(abs(s[i - 1]), abs(s[i]), 0.5 * abs(p[i]))\n\t\t\t\t: undefined\n\t\t);\n\t}\n\treturn [s, p, yp];\n};\n\nconst interpolator = (arr, yp, s) => {\n\tlet n = arr.length - 1;\n\tlet n2 = n * n;\n\treturn t => {\n\t\tlet i;\n\t\tif (t >= 1) {\n\t\t\ti = n - 1;\n\t\t} else {\n\t\t\ti = Math.max(0, Math.floor(t * n));\n\t\t}\n\t\tlet t1 = t - i / n;\n\t\tlet t2 = t1 * t1;\n\t\tlet t3 = t2 * t1;\n\t\treturn (\n\t\t\t(yp[i] + yp[i + 1] - 2 * s[i]) * n2 * t3 +\n\t\t\t(3 * s[i] - 2 * yp[i] - yp[i + 1]) * n * t2 +\n\t\t\typ[i] * t1 +\n\t\t\tarr[i]\n\t\t);\n\t};\n};\n\n/*\n\tA monotone spline which uses one-sided finite differences\n\tat the boundaries.\n */\nexport const interpolatorSplineMonotone = arr => {\n\tif (arr.length < 3) {\n\t\treturn interpolatorLinear(arr);\n\t}\n\tlet n = arr.length - 1;\n\tlet [s, , yp] = mono(arr);\n\typ[0] = s[0];\n\typ[n] = s[n - 1];\n\treturn interpolator(arr, yp, s);\n};\n\n/*\n\tThe clamped monotone spline derives the values of y' \n\tat the boundary points by tracing a parabola \n\tthrough the first/last three points.\n\n\tFor arrays of fewer than three values, we fall back to \n\tlinear interpolation.\n */\n\nexport const interpolatorSplineMonotone2 = arr => {\n\tif (arr.length < 3) {\n\t\treturn interpolatorLinear(arr);\n\t}\n\tlet n = arr.length - 1;\n\tlet [s, p, yp] = mono(arr);\n\tp[0] = (arr[1] * 2 - arr[0] * 1.5 - arr[2] * 0.5) * n;\n\tp[n] = (arr[n] * 1.5 - arr[n - 1] * 2 + arr[n - 2] * 0.5) * n;\n\typ[0] = p[0] * s[0] <= 0 ? 0 : abs(p[0]) > 2 * abs(s[0]) ? 2 * s[0] : p[0];\n\typ[n] =\n\t\tp[n] * s[n - 1] <= 0\n\t\t\t? 0\n\t\t\t: abs(p[n]) > 2 * abs(s[n - 1])\n\t\t\t? 2 * s[n - 1]\n\t\t\t: p[n];\n\treturn interpolator(arr, yp, s);\n};\n\n/*\n\tThe closed monotone spline considers \n\tthe array to be periodic:\n\n\tarr[-1] = arr[arr.length - 1]\n\tarr[arr.length] = arr[0]\n\n\t...and so on.\n */\nexport const interpolatorSplineMonotoneClosed = arr => {\n\tlet n = arr.length - 1;\n\tlet [s, p, yp] = mono(arr);\n\t// boundary conditions\n\tp[0] = 0.5 * (arr[1] - arr[n]) * n;\n\tp[n] = 0.5 * (arr[0] - arr[n - 1]) * n;\n\tlet s_m1 = (arr[0] - arr[n]) * n;\n\tlet s_n = s_m1;\n\typ[0] =\n\t\t(sgn(s_m1) + sgn(s[0])) * min(abs(s_m1), abs(s[0]), 0.5 * abs(p[0]));\n\typ[n] =\n\t\t(sgn(s[n - 1]) + sgn(s_n)) *\n\t\tmin(abs(s[n - 1]), abs(s_n), 0.5 * abs(p[n]));\n\treturn interpolator(arr, yp, s);\n};\n","const gamma = (γ = 1) => (γ === 1 ? t => t : t => Math.pow(t, γ));\n\nexport default gamma;\n","import gamma from './easing/gamma.js';\n\nconst samples = (n = 2, γ = 1) => {\n\tlet ease = gamma(γ);\n\tif (n < 2) {\n\t\treturn n < 1 ? [] : [ease(0.5)];\n\t}\n\tlet res = [];\n\tfor (let i = 0; i < n; i++) {\n\t\tres.push(ease(i / (n - 1)));\n\t}\n\treturn res;\n};\n\nexport default samples;\n","import converter from './converter.js';\nimport prepare from './_prepare.js';\nimport { getMode } from './modes.js';\nimport { differenceEuclidean } from './difference.js';\n\nconst rgb = converter('rgb');\nconst fixup_rgb = c => {\n\tconst res = {\n\t\tmode: c.mode,\n\t\tr: Math.max(0, Math.min(c.r !== undefined ? c.r : 0, 1)),\n\t\tg: Math.max(0, Math.min(c.g !== undefined ? c.g : 0, 1)),\n\t\tb: Math.max(0, Math.min(c.b !== undefined ? c.b : 0, 1))\n\t};\n\tif (c.alpha !== undefined) {\n\t\tres.alpha = c.alpha;\n\t}\n\treturn res;\n};\n\nconst to_displayable_srgb = c => fixup_rgb(rgb(c));\n\nconst inrange_rgb = c => {\n\treturn (\n\t\tc !== undefined &&\n\t\t(c.r === undefined || (c.r >= 0 && c.r <= 1)) &&\n\t\t(c.g === undefined || (c.g >= 0 && c.g <= 1)) &&\n\t\t(c.b === undefined || (c.b >= 0 && c.b <= 1))\n\t);\n};\n\n/*\n\tReturns whether the color is in the sRGB gamut.\n */\nexport function displayable(color) {\n\treturn inrange_rgb(rgb(color));\n}\n\n/*\n\tGiven a color space `mode`, returns a function\n\twith which to check whether a color is \n\tin that color space's gamut.\n */\nexport function inGamut(mode = 'rgb') {\n\tconst { gamut } = getMode(mode);\n\tif (!gamut) {\n\t\treturn color => true;\n\t}\n\tconst conv = converter(typeof gamut === 'string' ? gamut : mode);\n\treturn color => inrange_rgb(conv(color));\n}\n\n/*\n\tObtain a color that's in the sRGB gamut\n\tby converting it to sRGB and clipping the channel values\n\tso that they're within the [0, 1] range.\n\n\tThe result is returned in the color's original color space.\n */\nexport function clampRgb(color) {\n\tcolor = prepare(color);\n\n\t// if the color is undefined or displayable, return it directly\n\tif (color === undefined || displayable(color)) return color;\n\n\t// keep track of color's original mode\n\tlet conv = converter(color.mode);\n\n\treturn conv(to_displayable_srgb(color));\n}\n\n/*\n\tGiven the `mode` color space, returns a function\n\twith which to obtain a color that's in gamut for\n\tthe `mode` color space by clipping the channel values\n\tso that they fit in their respective ranges.\n\n\tIt's similar to `clampRgb`, but works for any \n\tbounded color space (RGB or not) for which \n\tany combination of in-range channel values\n\tproduces an in-gamut color.\n */\nexport function clampGamut(mode = 'rgb') {\n\tconst { gamut } = getMode(mode);\n\tif (!gamut) {\n\t\treturn color => prepare(color);\n\t}\n\tconst destMode = typeof gamut === 'string' ? gamut : mode;\n\tconst destConv = converter(destMode);\n\tconst inDestGamut = inGamut(destMode);\n\treturn color => {\n\t\tconst original = prepare(color);\n\t\tif (!original) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst converted = destConv(original);\n\t\tif (inDestGamut(converted)) {\n\t\t\treturn original;\n\t\t}\n\t\tconst clamped = fixup_rgb(converted);\n\t\tif (original.mode === clamped.mode) {\n\t\t\treturn clamped;\n\t\t}\n\t\treturn converter(original.mode)(clamped);\n\t};\n}\n\n/*\n\tObtain a color that’s in a RGB gamut (by default sRGB)\n\tby first converting it to `mode` and then finding \n\tthe greatest chroma value that fits the gamut.\n\n\tBy default, the CIELCh color space is used,\n\tbut any color that has a chroma component will do.\n\n\tThe result is returned in the color's original color space.\n */\nexport function clampChroma(color, mode = 'lch', rgbGamut = 'rgb') {\n\tcolor = prepare(color);\n\n\tlet inDestinationGamut =\n\t\trgbGamut === 'rgb' ? displayable : inGamut(rgbGamut);\n\tlet clipToGamut =\n\t\trgbGamut === 'rgb' ? to_displayable_srgb : clampGamut(rgbGamut);\n\n\t// if the color is undefined or displayable, return it directly\n\tif (color === undefined || inDestinationGamut(color)) return color;\n\n\t// keep track of color's original mode\n\tlet conv = converter(color.mode);\n\n\t// convert to the provided `mode` for clamping\n\tcolor = converter(mode)(color);\n\n\t// try with chroma = 0\n\tlet clamped = { ...color, c: 0 };\n\n\t// if not even chroma = 0 is displayable\n\t// fall back to RGB clamping\n\tif (!inDestinationGamut(clamped)) {\n\t\treturn conv(clipToGamut(clamped));\n\t}\n\n\t// By this time we know chroma = 0 is displayable and our current chroma is not.\n\t// Find the displayable chroma through the bisection method.\n\tlet start = 0;\n\tlet end = color.c !== undefined ? color.c : 0;\n\tlet range = getMode(mode).ranges.c;\n\tlet resolution = (range[1] - range[0]) / Math.pow(2, 13);\n\tlet _last_good_c = clamped.c;\n\n\twhile (end - start > resolution) {\n\t\tclamped.c = start + (end - start) * 0.5;\n\t\tif (inDestinationGamut(clamped)) {\n\t\t\t_last_good_c = clamped.c;\n\t\t\tstart = clamped.c;\n\t\t} else {\n\t\t\tend = clamped.c;\n\t\t}\n\t}\n\n\treturn conv(\n\t\tinDestinationGamut(clamped) ? clamped : { ...clamped, c: _last_good_c }\n\t);\n}\n\n/*\n\tObtain a color that's in the `dest` gamut,\n\tby first converting it to the `mode` color space\n\tand then finding the largest chroma that's in gamut,\n\tsimilar to `clampChroma`. \n\n\tThe color returned is in the `dest` color space.\n\n\tTo address the shortcomings of `clampChroma`, which can\n\tsometimes produce colors more desaturated than necessary,\n\tthe test used in the binary search is replaced with\n\t\"is color is roughly in gamut\", by comparing the candidate \n\tto the clipped version (obtained with `clampGamut`).\n\tThe test passes if the colors are not too dissimilar, \n\tjudged by the `delta` color difference function \n\tand an associated `jnd` just-noticeable difference value.\n\n\tThe default arguments for this function correspond to the\n\tgamut mapping algorithm defined in CSS Color Level 4:\n\thttps://drafts.csswg.org/css-color/#css-gamut-mapping\n\n\tTo disable the “roughly in gamut” part, pass either\n\t`null` for the `delta` parameter, or zero for `jnd`.\n */\nexport function toGamut(\n\tdest = 'rgb',\n\tmode = 'oklch',\n\tdelta = differenceEuclidean('oklch'),\n\tjnd = 0.02\n) {\n\tconst destConv = converter(dest);\n\tconst destMode = getMode(dest);\n\n\tif (!destMode.gamut) {\n\t\treturn color => destConv(color);\n\t}\n\n\tconst inDestinationGamut = inGamut(dest);\n\tconst clipToGamut = clampGamut(dest);\n\n\tconst ucs = converter(mode);\n\tconst { ranges } = getMode(mode);\n\n\tif (!ranges.l || !ranges.c) {\n\t\tthrow new Error('LCH-like space expected');\n\t}\n\n\treturn color => {\n\t\tcolor = prepare(color);\n\t\tif (color === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst candidate = { ...ucs(color) };\n\n\t\t// account for missing components\n\t\tif (candidate.l === undefined) candidate.l = 0;\n\t\tif (candidate.c === undefined) candidate.c = 0;\n\n\t\tif (candidate.l >= ranges.l[1]) {\n\t\t\tconst res = { ...destMode.white, mode: dest };\n\t\t\tif (color.alpha !== undefined) {\n\t\t\t\tres.alpha = color.alpha;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t\tif (candidate.l <= ranges.l[0]) {\n\t\t\tconst res = { ...destMode.black, mode: dest };\n\t\t\tif (color.alpha !== undefined) {\n\t\t\t\tres.alpha = color.alpha;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t\tif (inDestinationGamut(candidate)) {\n\t\t\treturn destConv(candidate);\n\t\t}\n\t\tlet start = 0;\n\t\tlet end = candidate.c;\n\t\tlet epsilon = (ranges.c[1] - ranges.c[0]) / 4000; // 0.0001 for oklch()\n\t\tlet clipped = clipToGamut(candidate);\n\t\twhile (end - start > epsilon) {\n\t\t\tcandidate.c = (start + end) * 0.5;\n\t\t\tclipped = clipToGamut(candidate);\n\t\t\tif (\n\t\t\t\tinDestinationGamut(candidate) ||\n\t\t\t\t(delta && jnd > 0 && delta(candidate, clipped) <= jnd)\n\t\t\t) {\n\t\t\t\tstart = candidate.c;\n\t\t\t} else {\n\t\t\t\tend = candidate.c;\n\t\t\t}\n\t\t}\n\t\treturn destConv(inDestinationGamut(candidate) ? candidate : clipped);\n\t};\n}\n","import { differenceEuclidean } from './difference.js';\n\n/*\n\tThis works linearly right now, but we might get better performance\n\twith a V-P Tree (Vantage Point Tree). \n\n\tReference:\n\t* http://pnylab.com/papers/vptree/main.html\n */\n\nconst nearest = (colors, metric = differenceEuclidean(), accessor = d => d) => {\n\tlet arr = colors.map((c, idx) => ({ color: accessor(c), i: idx }));\n\treturn (color, n = 1, τ = Infinity) => {\n\t\tif (isFinite(n)) {\n\t\t\tn = Math.max(1, Math.min(n, arr.length - 1));\n\t\t}\n\n\t\tarr.forEach(c => {\n\t\t\tc.d = metric(color, c.color);\n\t\t});\n\n\t\treturn arr\n\t\t\t.sort((a, b) => a.d - b.d)\n\t\t\t.slice(0, n)\n\t\t\t.filter(c => c.d < τ)\n\t\t\t.map(c => colors[c.i]);\n\t};\n};\n\nexport default nearest;\n","import { mapper, mapTransferLinear } from './map.js';\nimport converter from './converter.js';\nimport prepare from './_prepare.js';\nimport { getMode } from './modes.js';\n\nconst minzero = v => Math.max(v, 0);\nconst clamp = v => Math.max(Math.min(v, 1), 0);\nconst lerp = (a, b, t) =>\n\ta === undefined || b === undefined ? undefined : a + t * (b - a);\n\nconst matrixSepia = amount => {\n\tlet a = 1 - clamp(amount);\n\treturn [\n\t\t0.393 + 0.607 * a,\n\t\t0.769 - 0.769 * a,\n\t\t0.189 - 0.189 * a,\n\t\t0,\n\t\t0.349 - 0.349 * a,\n\t\t0.686 + 0.314 * a,\n\t\t0.168 - 0.168 * a,\n\t\t0,\n\t\t0.272 - 0.272 * a,\n\t\t0.534 - 0.534 * a,\n\t\t0.131 + 0.869 * a,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1\n\t];\n};\n\nconst matrixSaturate = sat => {\n\tlet s = minzero(sat);\n\treturn [\n\t\t0.213 + 0.787 * s,\n\t\t0.715 - 0.715 * s,\n\t\t0.072 - 0.072 * s,\n\t\t0,\n\t\t0.213 - 0.213 * s,\n\t\t0.715 + 0.285 * s,\n\t\t0.072 - 0.072 * s,\n\t\t0,\n\t\t0.213 - 0.213 * s,\n\t\t0.715 - 0.715 * s,\n\t\t0.072 + 0.928 * s,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1\n\t];\n};\n\nconst matrixGrayscale = amount => {\n\tlet a = 1 - clamp(amount);\n\treturn [\n\t\t0.2126 + 0.7874 * a,\n\t\t0.7152 - 0.7152 * a,\n\t\t0.0722 - 0.0722 * a,\n\t\t0,\n\t\t0.2126 - 0.2126 * a,\n\t\t0.7152 + 0.2848 * a,\n\t\t0.0722 - 0.0722 * a,\n\t\t0,\n\t\t0.2126 - 0.2126 * a,\n\t\t0.7152 - 0.7152 * a,\n\t\t0.0722 + 0.9278 * a,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1\n\t];\n};\n\nconst matrixHueRotate = degrees => {\n\tlet rad = (Math.PI * degrees) / 180;\n\tlet c = Math.cos(rad);\n\tlet s = Math.sin(rad);\n\treturn [\n\t\t0.213 + c * 0.787 - s * 0.213,\n\t\t0.715 - c * 0.715 - s * 0.715,\n\t\t0.072 - c * 0.072 + s * 0.928,\n\t\t0,\n\t\t0.213 - c * 0.213 + s * 0.143,\n\t\t0.715 + c * 0.285 + s * 0.14,\n\t\t0.072 - c * 0.072 - s * 0.283,\n\t\t0,\n\t\t0.213 - c * 0.213 - s * 0.787,\n\t\t0.715 - c * 0.715 + s * 0.715,\n\t\t0.072 + c * 0.928 + s * 0.072,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1\n\t];\n};\n\nconst matrix = (values, mode, preserve_mode = false) => {\n\tlet conv = converter(mode);\n\tlet channels = getMode(mode).channels;\n\treturn color => {\n\t\tlet c = conv(color);\n\t\tif (!c) {\n\t\t\treturn undefined;\n\t\t}\n\t\tlet res = { mode };\n\t\tlet ch;\n\t\tlet count = channels.length;\n\t\tfor (let i = 0; i < values.length; i++) {\n\t\t\tch = channels[Math.floor(i / count)];\n\t\t\tif (c[ch] === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tres[ch] =\n\t\t\t\t(res[ch] || 0) + values[i] * (c[channels[i % count]] || 0);\n\t\t}\n\t\tif (!preserve_mode) {\n\t\t\treturn res;\n\t\t}\n\t\tlet prep = prepare(color);\n\t\treturn prep && res.mode !== prep.mode ? converter(prep.mode)(res) : res;\n\t};\n};\n\nconst filterBrightness = (amt = 1, mode = 'rgb') => {\n\tlet a = minzero(amt);\n\treturn mapper(mapTransferLinear(a), mode, true);\n};\n\nconst filterContrast = (amt = 1, mode = 'rgb') => {\n\tlet a = minzero(amt);\n\treturn mapper(mapTransferLinear(a, (1 - a) / 2), mode, true);\n};\nconst filterSepia = (amt = 1, mode = 'rgb') =>\n\tmatrix(matrixSepia(amt), mode, true);\nconst filterSaturate = (amt = 1, mode = 'rgb') =>\n\tmatrix(matrixSaturate(amt), mode, true);\nconst filterGrayscale = (amt = 1, mode = 'rgb') =>\n\tmatrix(matrixGrayscale(amt), mode, true);\nconst filterInvert = (amt = 1, mode = 'rgb') => {\n\tlet a = clamp(amt);\n\treturn mapper(\n\t\t(v, ch) => (ch === 'alpha' ? v : lerp(a, 1 - a, v)),\n\t\tmode,\n\t\ttrue\n\t);\n};\nconst filterHueRotate = (deg = 0, mode = 'rgb') =>\n\tmatrix(matrixHueRotate(deg), mode, true);\n\nexport {\n\tfilterBrightness,\n\tfilterContrast,\n\tfilterSepia,\n\tfilterSaturate,\n\tfilterGrayscale,\n\tfilterInvert,\n\tfilterHueRotate\n};\n","import converter from './converter.js';\nimport prepare from './_prepare.js';\nimport { lerp } from './interpolate/lerp.js';\n\nlet rgb = converter('rgb');\n\n/*\n\tColor vision deficiency (CVD) simulation based on:\n\n\t\tG. M. Machado, M. M. Oliveira and L. A. F. Fernandes, \n\t\t\"A Physiologically-based Model for Simulation of Color Vision Deficiency\" \n\t\tin IEEE Transactions on Visualization and Computer Graphics, \n\t\tvol. 15, no. 6, pp. 1291-1298, Nov.-Dec. 2009, \n\t\tdoi: 10.1109/TVCG.2009.113.\n\n\tFunctions use precomputed matrices from:\n\n\t\thttps://www.inf.ufrgs.br/~oliveira/pubs_files/CVD_Simulation/CVD_Simulation.html\n\n\tVia the `colorspace` R package documentation:\n\n\t\thttp://colorspace.r-forge.r-project.org/reference/simulate_cvd.html\n */\n\nconst PROT = [\n\t[1.0, 0.0, -0.0, 0.0, 1.0, 0.0, -0.0, -0.0, 1.0],\n\t[\n\t\t0.856167, 0.182038, -0.038205, 0.029342, 0.955115, 0.015544, -0.00288,\n\t\t-0.001563, 1.004443\n\t],\n\t[\n\t\t0.734766, 0.334872, -0.069637, 0.05184, 0.919198, 0.028963, -0.004928,\n\t\t-0.004209, 1.009137\n\t],\n\t[\n\t\t0.630323, 0.465641, -0.095964, 0.069181, 0.890046, 0.040773, -0.006308,\n\t\t-0.007724, 1.014032\n\t],\n\t[\n\t\t0.539009, 0.579343, -0.118352, 0.082546, 0.866121, 0.051332, -0.007136,\n\t\t-0.011959, 1.019095\n\t],\n\t[\n\t\t0.458064, 0.679578, -0.137642, 0.092785, 0.846313, 0.060902, -0.007494,\n\t\t-0.016807, 1.024301\n\t],\n\t[\n\t\t0.38545, 0.769005, -0.154455, 0.100526, 0.829802, 0.069673, -0.007442,\n\t\t-0.02219, 1.029632\n\t],\n\t[\n\t\t0.319627, 0.849633, -0.169261, 0.106241, 0.815969, 0.07779, -0.007025,\n\t\t-0.028051, 1.035076\n\t],\n\t[\n\t\t0.259411, 0.923008, -0.18242, 0.110296, 0.80434, 0.085364, -0.006276,\n\t\t-0.034346, 1.040622\n\t],\n\t[\n\t\t0.203876, 0.990338, -0.194214, 0.112975, 0.794542, 0.092483, -0.005222,\n\t\t-0.041043, 1.046265\n\t],\n\t[\n\t\t0.152286, 1.052583, -0.204868, 0.114503, 0.786281, 0.099216, -0.003882,\n\t\t-0.048116, 1.051998\n\t]\n];\n\nconst DEUTER = [\n\t[1.0, 0.0, -0.0, 0.0, 1.0, 0.0, -0.0, -0.0, 1.0],\n\t[\n\t\t0.866435, 0.177704, -0.044139, 0.049567, 0.939063, 0.01137, -0.003453,\n\t\t0.007233, 0.99622\n\t],\n\t[\n\t\t0.760729, 0.319078, -0.079807, 0.090568, 0.889315, 0.020117, -0.006027,\n\t\t0.013325, 0.992702\n\t],\n\t[\n\t\t0.675425, 0.43385, -0.109275, 0.125303, 0.847755, 0.026942, -0.00795,\n\t\t0.018572, 0.989378\n\t],\n\t[\n\t\t0.605511, 0.52856, -0.134071, 0.155318, 0.812366, 0.032316, -0.009376,\n\t\t0.023176, 0.9862\n\t],\n\t[\n\t\t0.547494, 0.607765, -0.155259, 0.181692, 0.781742, 0.036566, -0.01041,\n\t\t0.027275, 0.983136\n\t],\n\t[\n\t\t0.498864, 0.674741, -0.173604, 0.205199, 0.754872, 0.039929, -0.011131,\n\t\t0.030969, 0.980162\n\t],\n\t[\n\t\t0.457771, 0.731899, -0.18967, 0.226409, 0.731012, 0.042579, -0.011595,\n\t\t0.034333, 0.977261\n\t],\n\t[\n\t\t0.422823, 0.781057, -0.203881, 0.245752, 0.709602, 0.044646, -0.011843,\n\t\t0.037423, 0.974421\n\t],\n\t[\n\t\t0.392952, 0.82361, -0.216562, 0.263559, 0.69021, 0.046232, -0.01191,\n\t\t0.040281, 0.97163\n\t],\n\t[\n\t\t0.367322, 0.860646, -0.227968, 0.280085, 0.672501, 0.047413, -0.01182,\n\t\t0.04294, 0.968881\n\t]\n];\n\nconst TRIT = [\n\t[1.0, 0.0, -0.0, 0.0, 1.0, 0.0, -0.0, -0.0, 1.0],\n\t[\n\t\t0.92667, 0.092514, -0.019184, 0.021191, 0.964503, 0.014306, 0.008437,\n\t\t0.054813, 0.93675\n\t],\n\t[\n\t\t0.89572, 0.13333, -0.02905, 0.029997, 0.9454, 0.024603, 0.013027,\n\t\t0.104707, 0.882266\n\t],\n\t[\n\t\t0.905871, 0.127791, -0.033662, 0.026856, 0.941251, 0.031893, 0.01341,\n\t\t0.148296, 0.838294\n\t],\n\t[\n\t\t0.948035, 0.08949, -0.037526, 0.014364, 0.946792, 0.038844, 0.010853,\n\t\t0.193991, 0.795156\n\t],\n\t[\n\t\t1.017277, 0.027029, -0.044306, -0.006113, 0.958479, 0.047634, 0.006379,\n\t\t0.248708, 0.744913\n\t],\n\t[\n\t\t1.104996, -0.046633, -0.058363, -0.032137, 0.971635, 0.060503, 0.001336,\n\t\t0.317922, 0.680742\n\t],\n\t[\n\t\t1.193214, -0.109812, -0.083402, -0.058496, 0.97941, 0.079086, -0.002346,\n\t\t0.403492, 0.598854\n\t],\n\t[\n\t\t1.257728, -0.139648, -0.118081, -0.078003, 0.975409, 0.102594,\n\t\t-0.003316, 0.501214, 0.502102\n\t],\n\t[\n\t\t1.278864, -0.125333, -0.153531, -0.084748, 0.957674, 0.127074,\n\t\t-0.000989, 0.601151, 0.399838\n\t],\n\t[\n\t\t1.255528, -0.076749, -0.178779, -0.078411, 0.930809, 0.147602, 0.004733,\n\t\t0.691367, 0.3039\n\t]\n];\n\nconst deficiency = (lut, t) => {\n\tlet tt = Math.max(0, Math.min(1, t));\n\tlet i = Math.round(tt / 0.1);\n\tlet w = Math.round(tt % 0.1);\n\tlet arr = lut[i];\n\tif (w > 0 && i < lut.length - 1) {\n\t\tlet arr_2 = lut[i + 1];\n\t\tarr = arr.map((v, idx) => lerp(arr[idx], arr_2[idx], w));\n\t}\n\treturn color => {\n\t\tlet c = prepare(color);\n\t\tif (c === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\tlet { r, g, b } = rgb(c);\n\t\tlet ret = {\n\t\t\tmode: 'rgb',\n\t\t\tr: arr[0] * r + arr[1] * g + arr[2] * b,\n\t\t\tg: arr[3] * r + arr[4] * g + arr[5] * b,\n\t\t\tb: arr[6] * r + arr[7] * g + arr[8] * b\n\t\t};\n\t\tif (c.alpha !== undefined) {\n\t\t\tret.alpha = c.alpha;\n\t\t}\n\t\treturn converter(c.mode)(ret);\n\t};\n};\n\nexport const filterDeficiencyProt = (severity = 1) =>\n\tdeficiency(PROT, severity);\nexport const filterDeficiencyDeuter = (severity = 1) =>\n\tdeficiency(DEUTER, severity);\nexport const filterDeficiencyTrit = (severity = 1) =>\n\tdeficiency(TRIT, severity);\n","/*\n\tSmoothstep easing function and its inverse\n\tReference: https://en.wikipedia.org/wiki/Smoothstep\n */\nconst easingSmoothstep = t => t * t * (3 - 2 * t);\nconst easingSmoothstepInverse = t => 0.5 - Math.sin(Math.asin(1 - 2 * t) / 3);\n\nexport { easingSmoothstep, easingSmoothstepInverse };\n","/*\n\tSmootherstep easing function proposed by K. Perlin\n\tReference: https://en.wikipedia.org/wiki/Smoothstep\n */\nconst smootherstep = t => t * t * t * (t * (t * 6 - 15) + 10);\n\nexport default smootherstep;\n","/* \n\tSinusoidal (cosine) in-out easing\n*/\nconst inOutSine = t => (1 - Math.cos(t * Math.PI)) / 2;\n\nexport default inOutSine;\n","import converter from './converter.js';\n\n/*\n\tWCAG luminance\n\tReferences: \n\n\thttps://en.wikipedia.org/wiki/Relative_luminance\n\thttps://github.com/w3c/wcag/issues/236#issuecomment-379526596\n */\nexport function luminance(color) {\n\tlet c = converter('lrgb')(color);\n\treturn 0.2126 * c.r + 0.7152 * c.g + 0.0722 * c.b;\n}\n\n/*\n\tWCAG contrast\n */\nexport function contrast(a, b) {\n\tlet L1 = luminance(a);\n\tlet L2 = luminance(b);\n\treturn (Math.max(L1, L2) + 0.05) / (Math.min(L1, L2) + 0.05);\n}\n","import { parse, formatHex, formatCss, converter, type Color } from 'culori';\nimport * as ColorLib from 'culori';\n\n// Re-export everything from culori\nexport { ColorLib };\n\n// Converters\nconst toRgb = converter('rgb');\nconst toHsl = converter('hsl');\n\n// Custom colors map for fallback/alias\nconst customColorMap: Record<string, string> = {\n V: '#555555',\n W: '#AAAAAA',\n v: '#000000',\n w: '#FFFFFF',\n\n R: '#AA0000',\n Y: '#FFAA00',\n G: '#00AA00',\n A: '#00AAAA',\n B: '#0000AA',\n P: '#AA00AA',\n\n r: '#FF5555',\n y: '#FFFF55',\n g: '#55FF55',\n a: '#55FFFF',\n b: '#5555FF',\n p: '#FF55FF',\n\n i: '#FfC0CB',\n};\n\n/**\n * 注册一个自定义颜色别名。\n * @param name 别名名称,例如 `abc`、`myColor`。\n * @param color 别名实际映射到的合法颜色字符串,例如 `#ff0000`、`red`。\n */\nexport function registerCustomColor(name: string, color: string) {\n customColorMap[name] = color;\n}\n\n/**\n * 智能解析颜色字符串。\n * 支持:\n * - 通过 culori 解析所有标准 CSS 颜色(名称、hex、rgb、hsl、oklch 等)。\n * - 不带 `#` 的十六进制字符串(如 `ff5555`、`abc`、`aabbccdd`)。\n * - 通过 `registerCustomColor` 注册的自定义别名。\n * - 已经是 `Color` 对象的输入(直接透传)。\n * \n * @param input 要解析的颜色字符串或 `Color` 对象。\n * @param fallback 解析失败时可选的兜底颜色字符串。\n * @returns 解析成功时返回 `Color` 对象,失败时返回 `undefined`。\n */\nexport function smartParse(input: string | Color | any, fallback?: string): Color | undefined {\n // If input is already a Color object (has 'mode'), return it directly\n if (typeof input === 'object' && input !== null && 'mode' in input) {\n return input as Color;\n }\n\n if (typeof input !== 'string') {\n return parse(input) || (fallback ? smartParse(fallback) : undefined);\n }\n\n // 1. Try parsing directly\n let parsed = parse(input);\n if (parsed) return parsed;\n\n // 2. Check custom map first (allow overriding standard logic if needed, or just aliases)\n // Actually, usually aliases handle \"abc\" which fails standard parse.\n if (customColorMap[input]) {\n parsed = parse(customColorMap[input]);\n if (parsed) return parsed;\n }\n\n // 3. Try hex without hash\n // Matches 3, 4, 6, or 8 hex characters\n if (/^([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(input)) {\n parsed = parse('#' + input);\n if (parsed) return parsed;\n }\n\n // 4. Fallback\n if (fallback) {\n return smartParse(fallback);\n }\n\n return undefined;\n}\n\n/**\n * 智能解析颜色并返回对应的 CSS 字符串。\n * 对 sRGB 颜色通常会输出 Hex,其它颜色空间可能输出 CSS 函数形式(如 oklch)。\n * @param input 颜色字符串或颜色对象。\n */\nexport function smartString(input: string | Color | any, fallback?: string): string | undefined {\n const parsed = smartParse(input, fallback);\n if (!parsed) return undefined;\n return formatCss(parsed);\n}\n\n/**\n * 智能判断一个颜色输入是否有效。\n * @param input 颜色字符串或颜色对象。\n */\nexport function isValidColor(input: string | Color | any): boolean {\n return !!smartParse(input);\n}\n\n/**\n * 计算颜色的亮度。\n * 使用 Rec. 601 亮度公式:`(R * 299 + G * 587 + B * 114) / 1000`。\n * 返回值范围通常在 0(黑)到 1(白)之间。\n * \n * @param input 要检测的颜色字符串或对象。\n * @returns 返回亮度值(0-1);如果颜色无效则返回 `0`。\n */\nexport function getBrightness(input: string | Color | any): number {\n const color = smartParse(input);\n if (!color) return 0;\n\n const rgb = toRgb(color);\n if (!rgb) return 0;\n\n // culori rgb channels are 0-1\n // Formula matches: (r*255 * 299 + ...) / 255000 => (r*299 + ...) / 1000\n const r = rgb.r ?? 0;\n const g = rgb.g ?? 0;\n const b = rgb.b ?? 0;\n\n return (r * 0.299) + (g * 0.587) + (b * 0.114);\n}\n\n/**\n * 将颜色转换为 RGBA 数组 `[r, g, b, a]`。\n * 其中 RGB 范围是 0-255,Alpha 范围是 0-1。\n * \n * @param input 要转换的颜色字符串或对象。\n * @returns 转换成功时返回 `[r, g, b, a]`,无效时返回 `undefined`。\n */\nexport function toRgbaArray(input: string | Color | any): [number, number, number, number] | undefined {\n const color = smartParse(input);\n if (!color) return undefined;\n\n const rgb = toRgb(color);\n if (!rgb) return undefined;\n\n return [\n Math.round((rgb.r ?? 0) * 255),\n Math.round((rgb.g ?? 0) * 255),\n Math.round((rgb.b ?? 0) * 255),\n rgb.alpha ?? 1\n ];\n}\n\n/**\n * 将颜色转换为 Hex 字符串。\n * @param input 颜色字符串或颜色对象。\n * @returns 成功时返回如 `#ff0000` 这样的字符串,失败时返回 `undefined`。\n */\nexport function toHexString(input: string | Color | any): string | undefined {\n const color = smartParse(input);\n if (!color) return undefined;\n return formatHex(color);\n}\n\n/**\n * 将颜色转换为 RGB/RGBA 字符串。\n * 为兼容性考虑,这里强制输出旧式逗号分隔语法:`rgb(r, g, b)` 或 `rgba(r, g, b, a)`。\n * \n * @param input 颜色字符串或颜色对象。\n * @returns 成功时返回 RGB/RGBA 字符串,失败时返回 `undefined`。\n */\nexport function toRgbString(input: string | Color | any): string | undefined {\n const arr = toRgbaArray(input);\n if (!arr) return undefined;\n\n const [r, g, b, a] = arr;\n if (a < 1) {\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n return `rgb(${r}, ${g}, ${b})`;\n}\n\n/**\n * 将颜色转换为 HSL/HSLA 字符串。\n * 这里强制输出旧式逗号分隔语法:`hsl(h, s%, l%)` 或 `hsla(h, s%, l%, a)`。\n * \n * @param input 颜色字符串或颜色对象。\n * @returns 成功时返回 HSL/HSLA 字符串,失败时返回 `undefined`。\n */\nexport function toHslString(input: string | Color | any): string | undefined {\n const color = smartParse(input);\n if (!color) return undefined;\n\n const hsl = toHsl(color);\n if (!hsl) return undefined;\n\n const h = Math.round(hsl.h ?? 0);\n const s = Math.round((hsl.s ?? 0) * 100);\n const l = Math.round((hsl.l ?? 0) * 100);\n const a = hsl.alpha ?? 1;\n\n if (a < 1) {\n return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n }\n return `hsl(${h}, ${s}%, ${l}%)`;\n}\n","export * from './x/Dozy'\nexport * from './x/Functions'\nexport * from './x/WebFunctions'\nexport * from './modules/Store'\nexport * from './modules/EnableScaler'\nexport * from './modules/XCode'\nexport * from './modules/RepoStore'\nexport * from './modules/Interface'\nexport * from './modules/gens/Gens'\nexport * from './modules/gens/GensDirectives'\nexport * from './modules/Color'\n\n// 第三方重库已拆到独立子入口,避免命名冲突并让 tree-shake / code-splitting 更干净:\n// lodash-es -> 'dozy/lodash' (含 l 命名空间)\n// axios -> 'dozy/axios'\n// crypto-js -> 'dozy/crypto'\n// browser-image-compression-> 'dozy/image'\n\nexport { nanoid, customAlphabet, urlAlphabet } from 'nanoid'\n\nexport const DOZY = '1.0.105'\n"]}