From b74fec53d896d77aecd5a1c7f60f957671663513 Mon Sep 17 00:00:00 2001 From: "asamuzaK (Kazz)" Date: Fri, 10 Jan 2025 20:09:34 +0900 Subject: [PATCH 01/40] Update package.json Fix #36 * Downgrade lru-cache * Add exports.default * Remove exports.browser * Remove bundle-browser --- dist/cjs/css-color.min.cjs.map | 4 +- dist/esm/css-color.min.js | 261 --------------------------------- dist/esm/css-color.min.js.map | 7 - package.json | 7 +- 4 files changed, 5 insertions(+), 274 deletions(-) delete mode 100644 dist/esm/css-color.min.js delete mode 100644 dist/esm/css-color.min.js.map diff --git a/dist/cjs/css-color.min.cjs.map b/dist/cjs/css-color.min.cjs.map index 0892e1b..68013ef 100644 --- a/dist/cjs/css-color.min.cjs.map +++ b/dist/cjs/css-color.min.cjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../src/index.js", "../../node_modules/lru-cache/src/index.ts", "../../src/js/common.js", "../../node_modules/@csstools/css-tokenizer/dist/index.mjs", "../../node_modules/@csstools/css-parser-algorithms/dist/index.mjs", "../../node_modules/@csstools/css-calc/dist/index.mjs", "../../src/js/constant.js", "../../src/js/css-calc.js", "../../src/js/css-var.js", "../../node_modules/@csstools/color-helpers/dist/index.mjs", "../../node_modules/@csstools/css-color-parser/dist/index.mjs", "../../src/js/relative-color.js", "../../src/js/resolve.js", "../../src/js/util.js", "../../src/js/color.js", "../../src/js/convert.js"], - "sourcesContent": ["/*!\n * CSS color - Resolve, parse, convert CSS color.\n * @license MIT\n * @copyright asamuzaK (Kazz)\n * @see {@link https://github.com/asamuzaK/cssColor/blob/main/LICENSE}\n */\n\nexport { convert } from './js/convert.js';\nexport { cssCalc } from './js/css-calc.js';\nexport { resolve } from './js/resolve.js';\nexport { isColor } from './js/util.js';\n", "/**\n * @module LRUCache\n */\n\n// module-private names and types\ntype Perf = { now: () => number }\nconst perf: Perf =\n typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date\n\nconst warned = new Set()\n\n// either a function or a class\ntype ForC = ((...a: any[]) => any) | { new (...a: any[]): any }\n\n/* c8 ignore start */\nconst PROCESS = (\n typeof process === 'object' && !!process ? process : {}\n) as { [k: string]: any }\n/* c8 ignore start */\n\nconst emitWarning = (\n msg: string,\n type: string,\n code: string,\n fn: ForC\n) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`)\n}\n\nlet AC = globalThis.AbortController\nlet AS = globalThis.AbortSignal\n\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort?: (...a: any[]) => any\n _onabort: ((...a: any[]) => any)[] = []\n reason?: any\n aborted: boolean = false\n addEventListener(_: string, fn: (...a: any[]) => any) {\n this._onabort.push(fn)\n }\n }\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill()\n }\n signal = new AS()\n abort(reason: any) {\n if (this.signal.aborted) return\n //@ts-ignore\n this.signal.reason = reason\n //@ts-ignore\n this.signal.aborted = true\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason)\n }\n this.signal.onabort?.(reason)\n }\n }\n let printACPolyfillWarning =\n PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1'\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning) return\n printACPolyfillWarning = false\n emitWarning(\n 'AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.',\n 'NO_ABORT_CONTROLLER',\n 'ENOTSUP',\n warnACPolyfill\n )\n }\n}\n/* c8 ignore stop */\n\nconst shouldWarn = (code: string) => !warned.has(code)\n\nconst TYPE = Symbol('type')\nexport type PosInt = number & { [TYPE]: 'Positive Integer' }\nexport type Index = number & { [TYPE]: 'LRUCache Index' }\n\nconst isPosInt = (n: any): n is PosInt =>\n n && n === Math.floor(n) && n > 0 && isFinite(n)\n\nexport type UintArray = Uint8Array | Uint16Array | Uint32Array\nexport type NumberArray = UintArray | number[]\n\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max: number) =>\n !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null\n/* c8 ignore stop */\n\nclass ZeroArray extends Array {\n constructor(size: number) {\n super(size)\n this.fill(0)\n }\n}\nexport type { ZeroArray }\nexport type { Stack }\n\nexport type StackLike = Stack | Index[]\nclass Stack {\n heap: NumberArray\n length: number\n // private constructor\n static #constructing: boolean = false\n static create(max: number): StackLike {\n const HeapCls = getUintArray(max)\n if (!HeapCls) return []\n Stack.#constructing = true\n const s = new Stack(max, HeapCls)\n Stack.#constructing = false\n return s\n }\n constructor(\n max: number,\n HeapCls: { new (n: number): NumberArray }\n ) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)')\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max)\n this.length = 0\n }\n push(n: Index) {\n this.heap[this.length++] = n\n }\n pop(): Index {\n return this.heap[--this.length] as Index\n }\n}\n\n/**\n * Promise representing an in-progress {@link LRUCache#fetch} call\n */\nexport type BackgroundFetch = Promise & {\n __returned: BackgroundFetch | undefined\n __abortController: AbortController\n __staleWhileFetching: V | undefined\n}\n\nexport type DisposeTask = [\n value: V,\n key: K,\n reason: LRUCache.DisposeReason\n]\n\nexport namespace LRUCache {\n /**\n * An integer greater than 0, reflecting the calculated size of items\n */\n export type Size = number\n\n /**\n * Integer greater than 0, representing some number of milliseconds, or the\n * time at which a TTL started counting from.\n */\n export type Milliseconds = number\n\n /**\n * An integer greater than 0, reflecting a number of items\n */\n export type Count = number\n\n /**\n * The reason why an item was removed from the cache, passed\n * to the {@link Disposer} methods.\n *\n * - `evict`: The item was evicted because it is the least recently used,\n * and the cache is full.\n * - `set`: A new value was set, overwriting the old value being disposed.\n * - `delete`: The item was explicitly deleted, either by calling\n * {@link LRUCache#delete}, {@link LRUCache#clear}, or\n * {@link LRUCache#set} with an undefined value.\n * - `expire`: The item was removed due to exceeding its TTL.\n * - `fetch`: A {@link OptionsBase#fetchMethod} operation returned\n * `undefined` or was aborted, causing the item to be deleted.\n */\n export type DisposeReason =\n | 'evict'\n | 'set'\n | 'delete'\n | 'expire'\n | 'fetch'\n /**\n * A method called upon item removal, passed as the\n * {@link OptionsBase.dispose} and/or\n * {@link OptionsBase.disposeAfter} options.\n */\n export type Disposer = (\n value: V,\n key: K,\n reason: DisposeReason\n ) => void\n\n /**\n * A function that returns the effective calculated size\n * of an entry in the cache.\n */\n export type SizeCalculator = (value: V, key: K) => Size\n\n /**\n * Options provided to the\n * {@link OptionsBase.fetchMethod} function.\n */\n export interface FetcherOptions {\n signal: AbortSignal\n options: FetcherFetchOptions\n /**\n * Object provided in the {@link FetchOptions.context} option to\n * {@link LRUCache#fetch}\n */\n context: FC\n }\n\n /**\n * Occasionally, it may be useful to track the internal behavior of the\n * cache, particularly for logging, debugging, or for behavior within the\n * `fetchMethod`. To do this, you can pass a `status` object to the\n * {@link LRUCache#fetch}, {@link LRUCache#get}, {@link LRUCache#set},\n * {@link LRUCache#memo}, and {@link LRUCache#has} methods.\n *\n * The `status` option should be a plain JavaScript object. The following\n * fields will be set on it appropriately, depending on the situation.\n */\n export interface Status {\n /**\n * The status of a set() operation.\n *\n * - add: the item was not found in the cache, and was added\n * - update: the item was in the cache, with the same value provided\n * - replace: the item was in the cache, and replaced\n * - miss: the item was not added to the cache for some reason\n */\n set?: 'add' | 'update' | 'replace' | 'miss'\n\n /**\n * the ttl stored for the item, or undefined if ttls are not used.\n */\n ttl?: Milliseconds\n\n /**\n * the start time for the item, or undefined if ttls are not used.\n */\n start?: Milliseconds\n\n /**\n * The timestamp used for TTL calculation\n */\n now?: Milliseconds\n\n /**\n * the remaining ttl for the item, or undefined if ttls are not used.\n */\n remainingTTL?: Milliseconds\n\n /**\n * The calculated size for the item, if sizes are used.\n */\n entrySize?: Size\n\n /**\n * The total calculated size of the cache, if sizes are used.\n */\n totalCalculatedSize?: Size\n\n /**\n * A flag indicating that the item was not stored, due to exceeding the\n * {@link OptionsBase.maxEntrySize}\n */\n maxEntrySizeExceeded?: true\n\n /**\n * The old value, specified in the case of `set:'update'` or\n * `set:'replace'`\n */\n oldValue?: V\n\n /**\n * The results of a {@link LRUCache#has} operation\n *\n * - hit: the item was found in the cache\n * - stale: the item was found in the cache, but is stale\n * - miss: the item was not found in the cache\n */\n has?: 'hit' | 'stale' | 'miss'\n\n /**\n * The status of a {@link LRUCache#fetch} operation.\n * Note that this can change as the underlying fetch() moves through\n * various states.\n *\n * - inflight: there is another fetch() for this key which is in process\n * - get: there is no {@link OptionsBase.fetchMethod}, so\n * {@link LRUCache#get} was called.\n * - miss: the item is not in cache, and will be fetched.\n * - hit: the item is in the cache, and was resolved immediately.\n * - stale: the item is in the cache, but stale.\n * - refresh: the item is in the cache, and not stale, but\n * {@link FetchOptions.forceRefresh} was specified.\n */\n fetch?: 'get' | 'inflight' | 'miss' | 'hit' | 'stale' | 'refresh'\n\n /**\n * The {@link OptionsBase.fetchMethod} was called\n */\n fetchDispatched?: true\n\n /**\n * The cached value was updated after a successful call to\n * {@link OptionsBase.fetchMethod}\n */\n fetchUpdated?: true\n\n /**\n * The reason for a fetch() rejection. Either the error raised by the\n * {@link OptionsBase.fetchMethod}, or the reason for an\n * AbortSignal.\n */\n fetchError?: Error\n\n /**\n * The fetch received an abort signal\n */\n fetchAborted?: true\n\n /**\n * The abort signal received was ignored, and the fetch was allowed to\n * continue.\n */\n fetchAbortIgnored?: true\n\n /**\n * The fetchMethod promise resolved successfully\n */\n fetchResolved?: true\n\n /**\n * The fetchMethod promise was rejected\n */\n fetchRejected?: true\n\n /**\n * The status of a {@link LRUCache#get} operation.\n *\n * - fetching: The item is currently being fetched. If a previous value\n * is present and allowed, that will be returned.\n * - stale: The item is in the cache, and is stale.\n * - hit: the item is in the cache\n * - miss: the item is not in the cache\n */\n get?: 'stale' | 'hit' | 'miss'\n\n /**\n * A fetch or get operation returned a stale value.\n */\n returnedStale?: true\n }\n\n /**\n * options which override the options set in the LRUCache constructor\n * when calling {@link LRUCache#fetch}.\n *\n * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n * {@link OptionsBase.noDeleteOnFetchRejection},\n * {@link OptionsBase.allowStaleOnFetchRejection},\n * {@link FetchOptions.forceRefresh}, and\n * {@link FetcherOptions.context}\n *\n * Any of these may be modified in the {@link OptionsBase.fetchMethod}\n * function, but the {@link GetOptions} fields will of course have no\n * effect, as the {@link LRUCache#get} call already happened by the time\n * the fetchMethod is called.\n */\n export interface FetcherFetchOptions\n extends Pick<\n OptionsBase,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n | 'noDeleteOnFetchRejection'\n | 'allowStaleOnFetchRejection'\n | 'ignoreFetchAbort'\n | 'allowStaleOnFetchAbort'\n > {\n status?: Status\n size?: Size\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#fetch} method.\n */\n export interface FetchOptions\n extends FetcherFetchOptions {\n /**\n * Set to true to force a re-load of the existing data, even if it\n * is not yet stale.\n */\n forceRefresh?: boolean\n /**\n * Context provided to the {@link OptionsBase.fetchMethod} as\n * the {@link FetcherOptions.context} param.\n *\n * If the FC type is specified as unknown (the default),\n * undefined or void, then this is optional. Otherwise, it will\n * be required.\n */\n context?: FC\n signal?: AbortSignal\n status?: Status\n }\n /**\n * Options provided to {@link LRUCache#fetch} when the FC type is something\n * other than `unknown`, `undefined`, or `void`\n */\n export interface FetchOptionsWithContext\n extends FetchOptions {\n context: FC\n }\n /**\n * Options provided to {@link LRUCache#fetch} when the FC type is\n * `undefined` or `void`\n */\n export interface FetchOptionsNoContext\n extends FetchOptions {\n context?: undefined\n }\n\n export interface MemoOptions\n extends Pick<\n OptionsBase,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n | 'noDeleteOnFetchRejection'\n | 'allowStaleOnFetchRejection'\n | 'ignoreFetchAbort'\n | 'allowStaleOnFetchAbort'\n > {\n /**\n * Set to true to force a re-load of the existing data, even if it\n * is not yet stale.\n */\n forceRefresh?: boolean\n /**\n * Context provided to the {@link OptionsBase.memoMethod} as\n * the {@link MemoizerOptions.context} param.\n *\n * If the FC type is specified as unknown (the default),\n * undefined or void, then this is optional. Otherwise, it will\n * be required.\n */\n context?: FC\n status?: Status\n }\n /**\n * Options provided to {@link LRUCache#memo} when the FC type is something\n * other than `unknown`, `undefined`, or `void`\n */\n export interface MemoOptionsWithContext\n extends MemoOptions {\n context: FC\n }\n /**\n * Options provided to {@link LRUCache#memo} when the FC type is\n * `undefined` or `void`\n */\n export interface MemoOptionsNoContext\n extends MemoOptions {\n context?: undefined\n }\n\n /**\n * Options provided to the\n * {@link OptionsBase.memoMethod} function.\n */\n export interface MemoizerOptions {\n options: MemoizerMemoOptions\n /**\n * Object provided in the {@link MemoOptions.context} option to\n * {@link LRUCache#memo}\n */\n context: FC\n }\n\n /**\n * options which override the options set in the LRUCache constructor\n * when calling {@link LRUCache#memo}.\n *\n * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n * {@link MemoOptions.forceRefresh}, and\n * {@link MemoOptions.context}\n *\n * Any of these may be modified in the {@link OptionsBase.memoMethod}\n * function, but the {@link GetOptions} fields will of course have no\n * effect, as the {@link LRUCache#get} call already happened by the time\n * the memoMethod is called.\n */\n export interface MemoizerMemoOptions\n extends Pick<\n OptionsBase,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n > {\n status?: Status\n size?: Size\n start?: Milliseconds\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#has} method.\n */\n export interface HasOptions\n extends Pick, 'updateAgeOnHas'> {\n status?: Status\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#get} method.\n */\n export interface GetOptions\n extends Pick<\n OptionsBase,\n 'allowStale' | 'updateAgeOnGet' | 'noDeleteOnStaleGet'\n > {\n status?: Status\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#peek} method.\n */\n export interface PeekOptions\n extends Pick, 'allowStale'> {}\n\n /**\n * Options that may be passed to the {@link LRUCache#set} method.\n */\n export interface SetOptions\n extends Pick<\n OptionsBase,\n 'sizeCalculation' | 'ttl' | 'noDisposeOnSet' | 'noUpdateTTL'\n > {\n /**\n * If size tracking is enabled, then setting an explicit size\n * in the {@link LRUCache#set} call will prevent calling the\n * {@link OptionsBase.sizeCalculation} function.\n */\n size?: Size\n /**\n * If TTL tracking is enabled, then setting an explicit start\n * time in the {@link LRUCache#set} call will override the\n * default time from `performance.now()` or `Date.now()`.\n *\n * Note that it must be a valid value for whichever time-tracking\n * method is in use.\n */\n start?: Milliseconds\n status?: Status\n }\n\n /**\n * The type signature for the {@link OptionsBase.fetchMethod} option.\n */\n export type Fetcher = (\n key: K,\n staleValue: V | undefined,\n options: FetcherOptions\n ) => Promise | V | undefined | void\n\n /**\n * the type signature for the {@link OptionsBase.memoMethod} option.\n */\n export type Memoizer = (\n key: K,\n staleValue: V | undefined,\n options: MemoizerOptions\n ) => V\n\n /**\n * Options which may be passed to the {@link LRUCache} constructor.\n *\n * Most of these may be overridden in the various options that use\n * them.\n *\n * Despite all being technically optional, the constructor requires that\n * a cache is at minimum limited by one or more of {@link OptionsBase.max},\n * {@link OptionsBase.ttl}, or {@link OptionsBase.maxSize}.\n *\n * If {@link OptionsBase.ttl} is used alone, then it is strongly advised\n * (and in fact required by the type definitions here) that the cache\n * also set {@link OptionsBase.ttlAutopurge}, to prevent potentially\n * unbounded storage.\n *\n * All options are also available on the {@link LRUCache} instance, making\n * it safe to pass an LRUCache instance as the options argumemnt to\n * make another empty cache of the same type.\n *\n * Some options are marked as read-only, because changing them after\n * instantiation is not safe. Changing any of the other options will of\n * course only have an effect on subsequent method calls.\n */\n export interface OptionsBase {\n /**\n * The maximum number of items to store in the cache before evicting\n * old entries. This is read-only on the {@link LRUCache} instance,\n * and may not be overridden.\n *\n * If set, then storage space will be pre-allocated at construction\n * time, and the cache will perform significantly faster.\n *\n * Note that significantly fewer items may be stored, if\n * {@link OptionsBase.maxSize} and/or {@link OptionsBase.ttl} are also\n * set.\n *\n * **It is strongly recommended to set a `max` to prevent unbounded growth\n * of the cache.**\n */\n max?: Count\n\n /**\n * Max time in milliseconds for items to live in cache before they are\n * considered stale. Note that stale items are NOT preemptively removed by\n * default, and MAY live in the cache, contributing to its LRU max, long\n * after they have expired, unless {@link OptionsBase.ttlAutopurge} is\n * set.\n *\n * If set to `0` (the default value), then that means \"do not track\n * TTL\", not \"expire immediately\".\n *\n * Also, as this cache is optimized for LRU/MRU operations, some of\n * the staleness/TTL checks will reduce performance, as they will incur\n * overhead by deleting items.\n *\n * This is not primarily a TTL cache, and does not make strong TTL\n * guarantees. There is no pre-emptive pruning of expired items, but you\n * _may_ set a TTL on the cache, and it will treat expired items as missing\n * when they are fetched, and delete them.\n *\n * Optional, but must be a non-negative integer in ms if specified.\n *\n * This may be overridden by passing an options object to `cache.set()`.\n *\n * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n * positive integer if set.\n *\n * Even if ttl tracking is enabled, **it is strongly recommended to set a\n * `max` to prevent unbounded growth of the cache.**\n *\n * If ttl tracking is enabled, and `max` and `maxSize` are not set,\n * and `ttlAutopurge` is not set, then a warning will be emitted\n * cautioning about the potential for unbounded memory consumption.\n * (The TypeScript definitions will also discourage this.)\n */\n ttl?: Milliseconds\n\n /**\n * Minimum amount of time in ms in which to check for staleness.\n * Defaults to 1, which means that the current time is checked\n * at most once per millisecond.\n *\n * Set to 0 to check the current time every time staleness is tested.\n * (This reduces performance, and is theoretically unnecessary.)\n *\n * Setting this to a higher value will improve performance somewhat\n * while using ttl tracking, albeit at the expense of keeping stale\n * items around a bit longer than their TTLs would indicate.\n *\n * @default 1\n */\n ttlResolution?: Milliseconds\n\n /**\n * Preemptively remove stale items from the cache.\n *\n * Note that this may *significantly* degrade performance, especially if\n * the cache is storing a large number of items. It is almost always best\n * to just leave the stale items in the cache, and let them fall out as new\n * items are added.\n *\n * Note that this means that {@link OptionsBase.allowStale} is a bit\n * pointless, as stale items will be deleted almost as soon as they\n * expire.\n *\n * Use with caution!\n */\n ttlAutopurge?: boolean\n\n /**\n * When using time-expiring entries with `ttl`, setting this to `true` will\n * make each item's age reset to 0 whenever it is retrieved from cache with\n * {@link LRUCache#get}, causing it to not expire. (It can still fall out\n * of cache based on recency of use, of course.)\n *\n * Has no effect if {@link OptionsBase.ttl} is not set.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n */\n updateAgeOnGet?: boolean\n\n /**\n * When using time-expiring entries with `ttl`, setting this to `true` will\n * make each item's age reset to 0 whenever its presence in the cache is\n * checked with {@link LRUCache#has}, causing it to not expire. (It can\n * still fall out of cache based on recency of use, of course.)\n *\n * Has no effect if {@link OptionsBase.ttl} is not set.\n */\n updateAgeOnHas?: boolean\n\n /**\n * Allow {@link LRUCache#get} and {@link LRUCache#fetch} calls to return\n * stale data, if available.\n *\n * By default, if you set `ttl`, stale items will only be deleted from the\n * cache when you `get(key)`. That is, it's not preemptively pruning items,\n * unless {@link OptionsBase.ttlAutopurge} is set.\n *\n * If you set `allowStale:true`, it'll return the stale value *as well as*\n * deleting it. If you don't set this, then it'll return `undefined` when\n * you try to get a stale entry.\n *\n * Note that when a stale entry is fetched, _even if it is returned due to\n * `allowStale` being set_, it is removed from the cache immediately. You\n * can suppress this behavior by setting\n * {@link OptionsBase.noDeleteOnStaleGet}, either in the constructor, or in\n * the options provided to {@link LRUCache#get}.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n * The `cache.has()` method will always return `false` for stale items.\n *\n * Only relevant if a ttl is set.\n */\n allowStale?: boolean\n\n /**\n * Function that is called on items when they are dropped from the\n * cache, as `dispose(value, key, reason)`.\n *\n * This can be handy if you want to close file descriptors or do\n * other cleanup tasks when items are no longer stored in the cache.\n *\n * **NOTE**: It is called _before_ the item has been fully removed\n * from the cache, so if you want to put it right back in, you need\n * to wait until the next tick. If you try to add it back in during\n * the `dispose()` function call, it will break things in subtle and\n * weird ways.\n *\n * Unlike several other options, this may _not_ be overridden by\n * passing an option to `set()`, for performance reasons.\n *\n * The `reason` will be one of the following strings, corresponding\n * to the reason for the item's deletion:\n *\n * - `evict` Item was evicted to make space for a new addition\n * - `set` Item was overwritten by a new value\n * - `expire` Item expired its TTL\n * - `fetch` Item was deleted due to a failed or aborted fetch, or a\n * fetchMethod returning `undefined.\n * - `delete` Item was removed by explicit `cache.delete(key)`,\n * `cache.clear()`, or `cache.set(key, undefined)`.\n */\n dispose?: Disposer\n\n /**\n * The same as {@link OptionsBase.dispose}, but called *after* the entry\n * is completely removed and the cache is once again in a clean state.\n *\n * It is safe to add an item right back into the cache at this point.\n * However, note that it is *very* easy to inadvertently create infinite\n * recursion this way.\n */\n disposeAfter?: Disposer\n\n /**\n * Set to true to suppress calling the\n * {@link OptionsBase.dispose} function if the entry key is\n * still accessible within the cache.\n *\n * This may be overridden by passing an options object to\n * {@link LRUCache#set}.\n *\n * Only relevant if `dispose` or `disposeAfter` are set.\n */\n noDisposeOnSet?: boolean\n\n /**\n * Boolean flag to tell the cache to not update the TTL when setting a new\n * value for an existing key (ie, when updating a value rather than\n * inserting a new value). Note that the TTL value is _always_ set (if\n * provided) when adding a new entry into the cache.\n *\n * Has no effect if a {@link OptionsBase.ttl} is not set.\n *\n * May be passed as an option to {@link LRUCache#set}.\n */\n noUpdateTTL?: boolean\n\n /**\n * Set to a positive integer to track the sizes of items added to the\n * cache, and automatically evict items in order to stay below this size.\n * Note that this may result in fewer than `max` items being stored.\n *\n * Attempting to add an item to the cache whose calculated size is greater\n * that this amount will be a no-op. The item will not be cached, and no\n * other items will be evicted.\n *\n * Optional, must be a positive integer if provided.\n *\n * Sets `maxEntrySize` to the same value, unless a different value is\n * provided for `maxEntrySize`.\n *\n * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n * positive integer if set.\n *\n * Even if size tracking is enabled, **it is strongly recommended to set a\n * `max` to prevent unbounded growth of the cache.**\n *\n * Note also that size tracking can negatively impact performance,\n * though for most cases, only minimally.\n */\n maxSize?: Size\n\n /**\n * The maximum allowed size for any single item in the cache.\n *\n * If a larger item is passed to {@link LRUCache#set} or returned by a\n * {@link OptionsBase.fetchMethod} or {@link OptionsBase.memoMethod}, then\n * it will not be stored in the cache.\n *\n * Attempting to add an item whose calculated size is greater than\n * this amount will not cache the item or evict any old items, but\n * WILL delete an existing value if one is already present.\n *\n * Optional, must be a positive integer if provided. Defaults to\n * the value of `maxSize` if provided.\n */\n maxEntrySize?: Size\n\n /**\n * A function that returns a number indicating the item's size.\n *\n * Requires {@link OptionsBase.maxSize} to be set.\n *\n * If not provided, and {@link OptionsBase.maxSize} or\n * {@link OptionsBase.maxEntrySize} are set, then all\n * {@link LRUCache#set} calls **must** provide an explicit\n * {@link SetOptions.size} or sizeCalculation param.\n */\n sizeCalculation?: SizeCalculator\n\n /**\n * Method that provides the implementation for {@link LRUCache#fetch}\n *\n * ```ts\n * fetchMethod(key, staleValue, { signal, options, context })\n * ```\n *\n * If `fetchMethod` is not provided, then `cache.fetch(key)` is equivalent\n * to `Promise.resolve(cache.get(key))`.\n *\n * If at any time, `signal.aborted` is set to `true`, or if the\n * `signal.onabort` method is called, or if it emits an `'abort'` event\n * which you can listen to with `addEventListener`, then that means that\n * the fetch should be abandoned. This may be passed along to async\n * functions aware of AbortController/AbortSignal behavior.\n *\n * The `fetchMethod` should **only** return `undefined` or a Promise\n * resolving to `undefined` if the AbortController signaled an `abort`\n * event. In all other cases, it should return or resolve to a value\n * suitable for adding to the cache.\n *\n * The `options` object is a union of the options that may be provided to\n * `set()` and `get()`. If they are modified, then that will result in\n * modifying the settings to `cache.set()` when the value is resolved, and\n * in the case of\n * {@link OptionsBase.noDeleteOnFetchRejection} and\n * {@link OptionsBase.allowStaleOnFetchRejection}, the handling of\n * `fetchMethod` failures.\n *\n * For example, a DNS cache may update the TTL based on the value returned\n * from a remote DNS server by changing `options.ttl` in the `fetchMethod`.\n */\n fetchMethod?: Fetcher\n\n /**\n * Method that provides the implementation for {@link LRUCache#memo}\n */\n memoMethod?: Memoizer\n\n /**\n * Set to true to suppress the deletion of stale data when a\n * {@link OptionsBase.fetchMethod} returns a rejected promise.\n */\n noDeleteOnFetchRejection?: boolean\n\n /**\n * Do not delete stale items when they are retrieved with\n * {@link LRUCache#get}.\n *\n * Note that the `get` return value will still be `undefined`\n * unless {@link OptionsBase.allowStale} is true.\n *\n * When using time-expiring entries with `ttl`, by default stale\n * items will be removed from the cache when the key is accessed\n * with `cache.get()`.\n *\n * Setting this option will cause stale items to remain in the cache, until\n * they are explicitly deleted with `cache.delete(key)`, or retrieved with\n * `noDeleteOnStaleGet` set to `false`.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n *\n * Only relevant if a ttl is used.\n */\n noDeleteOnStaleGet?: boolean\n\n /**\n * Set to true to allow returning stale data when a\n * {@link OptionsBase.fetchMethod} throws an error or returns a rejected\n * promise.\n *\n * This differs from using {@link OptionsBase.allowStale} in that stale\n * data will ONLY be returned in the case that the {@link LRUCache#fetch}\n * fails, not any other times.\n *\n * If a `fetchMethod` fails, and there is no stale value available, the\n * `fetch()` will resolve to `undefined`. Ie, all `fetchMethod` errors are\n * suppressed.\n *\n * Implies `noDeleteOnFetchRejection`.\n *\n * This may be set in calls to `fetch()`, or defaulted on the constructor,\n * or overridden by modifying the options object in the `fetchMethod`.\n */\n allowStaleOnFetchRejection?: boolean\n\n /**\n * Set to true to return a stale value from the cache when the\n * `AbortSignal` passed to the {@link OptionsBase.fetchMethod} dispatches\n * an `'abort'` event, whether user-triggered, or due to internal cache\n * behavior.\n *\n * Unless {@link OptionsBase.ignoreFetchAbort} is also set, the underlying\n * {@link OptionsBase.fetchMethod} will still be considered canceled, and\n * any value it returns will be ignored and not cached.\n *\n * Caveat: since fetches are aborted when a new value is explicitly\n * set in the cache, this can lead to fetch returning a stale value,\n * since that was the fallback value _at the moment the `fetch()` was\n * initiated_, even though the new updated value is now present in\n * the cache.\n *\n * For example:\n *\n * ```ts\n * const cache = new LRUCache({\n * ttl: 100,\n * fetchMethod: async (url, oldValue, { signal }) => {\n * const res = await fetch(url, { signal })\n * return await res.json()\n * }\n * })\n * cache.set('https://example.com/', { some: 'data' })\n * // 100ms go by...\n * const result = cache.fetch('https://example.com/')\n * cache.set('https://example.com/', { other: 'thing' })\n * console.log(await result) // { some: 'data' }\n * console.log(cache.get('https://example.com/')) // { other: 'thing' }\n * ```\n */\n allowStaleOnFetchAbort?: boolean\n\n /**\n * Set to true to ignore the `abort` event emitted by the `AbortSignal`\n * object passed to {@link OptionsBase.fetchMethod}, and still cache the\n * resulting resolution value, as long as it is not `undefined`.\n *\n * When used on its own, this means aborted {@link LRUCache#fetch} calls\n * are not immediately resolved or rejected when they are aborted, and\n * instead take the full time to await.\n *\n * When used with {@link OptionsBase.allowStaleOnFetchAbort}, aborted\n * {@link LRUCache#fetch} calls will resolve immediately to their stale\n * cached value or `undefined`, and will continue to process and eventually\n * update the cache when they resolve, as long as the resulting value is\n * not `undefined`, thus supporting a \"return stale on timeout while\n * refreshing\" mechanism by passing `AbortSignal.timeout(n)` as the signal.\n *\n * For example:\n *\n * ```ts\n * const c = new LRUCache({\n * ttl: 100,\n * ignoreFetchAbort: true,\n * allowStaleOnFetchAbort: true,\n * fetchMethod: async (key, oldValue, { signal }) => {\n * // note: do NOT pass the signal to fetch()!\n * // let's say this fetch can take a long time.\n * const res = await fetch(`https://slow-backend-server/${key}`)\n * return await res.json()\n * },\n * })\n *\n * // this will return the stale value after 100ms, while still\n * // updating in the background for next time.\n * const val = await c.fetch('key', { signal: AbortSignal.timeout(100) })\n * ```\n *\n * **Note**: regardless of this setting, an `abort` event _is still\n * emitted on the `AbortSignal` object_, so may result in invalid results\n * when passed to other underlying APIs that use AbortSignals.\n *\n * This may be overridden in the {@link OptionsBase.fetchMethod} or the\n * call to {@link LRUCache#fetch}.\n */\n ignoreFetchAbort?: boolean\n }\n\n export interface OptionsMaxLimit\n extends OptionsBase {\n max: Count\n }\n export interface OptionsTTLLimit\n extends OptionsBase {\n ttl: Milliseconds\n ttlAutopurge: boolean\n }\n export interface OptionsSizeLimit\n extends OptionsBase {\n maxSize: Size\n }\n\n /**\n * The valid safe options for the {@link LRUCache} constructor\n */\n export type Options =\n | OptionsMaxLimit\n | OptionsSizeLimit\n | OptionsTTLLimit\n\n /**\n * Entry objects used by {@link LRUCache#load} and {@link LRUCache#dump},\n * and returned by {@link LRUCache#info}.\n */\n export interface Entry {\n value: V\n ttl?: Milliseconds\n size?: Size\n start?: Milliseconds\n }\n}\n\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache {\n // options that cannot be changed without disaster\n readonly #max: LRUCache.Count\n readonly #maxSize: LRUCache.Size\n readonly #dispose?: LRUCache.Disposer\n readonly #disposeAfter?: LRUCache.Disposer\n readonly #fetchMethod?: LRUCache.Fetcher\n readonly #memoMethod?: LRUCache.Memoizer\n\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl: LRUCache.Milliseconds\n\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution: LRUCache.Milliseconds\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge: boolean\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet: boolean\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale: boolean\n\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet: boolean\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL: boolean\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize: LRUCache.Size\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation?: LRUCache.SizeCalculator\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection: boolean\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection: boolean\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort: boolean\n\n // computed properties\n #size: LRUCache.Count\n #calculatedSize: LRUCache.Size\n #keyMap: Map\n #keyList: (K | undefined)[]\n #valList: (V | BackgroundFetch | undefined)[]\n #next: NumberArray\n #prev: NumberArray\n #head: Index\n #tail: Index\n #free: StackLike\n #disposed?: DisposeTask[]\n #sizes?: ZeroArray\n #starts?: ZeroArray\n #ttls?: ZeroArray\n\n #hasDispose: boolean\n #hasFetchMethod: boolean\n #hasDisposeAfter: boolean\n\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals<\n K extends {},\n V extends {},\n FC extends unknown = unknown\n >(c: LRUCache) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap as Map,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head\n },\n get tail() {\n return c.#tail\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p: any) => c.#isBackgroundFetch(p),\n backgroundFetch: (\n k: K,\n index: number | undefined,\n options: LRUCache.FetchOptions,\n context: any\n ): BackgroundFetch =>\n c.#backgroundFetch(\n k,\n index as Index | undefined,\n options,\n context\n ),\n moveToTail: (index: number): void =>\n c.#moveToTail(index as Index),\n indexes: (options?: { allowStale: boolean }) =>\n c.#indexes(options),\n rindexes: (options?: { allowStale: boolean }) =>\n c.#rindexes(options),\n isStale: (index: number | undefined) =>\n c.#isStale(index as Index),\n }\n }\n\n // Protected read-only members\n\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max(): LRUCache.Count {\n return this.#max\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize(): LRUCache.Count {\n return this.#maxSize\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize(): LRUCache.Size {\n return this.#calculatedSize\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size(): LRUCache.Count {\n return this.#size\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod(): LRUCache.Fetcher | undefined {\n return this.#fetchMethod\n }\n get memoMethod(): LRUCache.Memoizer | undefined {\n return this.#memoMethod\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter\n }\n\n constructor(\n options: LRUCache.Options | LRUCache\n ) {\n const {\n max = 0,\n ttl,\n ttlResolution = 1,\n ttlAutopurge,\n updateAgeOnGet,\n updateAgeOnHas,\n allowStale,\n dispose,\n disposeAfter,\n noDisposeOnSet,\n noUpdateTTL,\n maxSize = 0,\n maxEntrySize = 0,\n sizeCalculation,\n fetchMethod,\n memoMethod,\n noDeleteOnFetchRejection,\n noDeleteOnStaleGet,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n } = options\n\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer')\n }\n\n const UintArray = max ? getUintArray(max) : Array\n if (!UintArray) {\n throw new Error('invalid max value: ' + max)\n }\n\n this.#max = max\n this.#maxSize = maxSize\n this.maxEntrySize = maxEntrySize || this.#maxSize\n this.sizeCalculation = sizeCalculation\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError(\n 'cannot set sizeCalculation without setting maxSize or maxEntrySize'\n )\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function')\n }\n }\n\n if (\n memoMethod !== undefined &&\n typeof memoMethod !== 'function'\n ) {\n throw new TypeError('memoMethod must be a function if defined')\n }\n this.#memoMethod = memoMethod\n\n if (\n fetchMethod !== undefined &&\n typeof fetchMethod !== 'function'\n ) {\n throw new TypeError(\n 'fetchMethod must be a function if specified'\n )\n }\n this.#fetchMethod = fetchMethod\n this.#hasFetchMethod = !!fetchMethod\n\n this.#keyMap = new Map()\n this.#keyList = new Array(max).fill(undefined)\n this.#valList = new Array(max).fill(undefined)\n this.#next = new UintArray(max)\n this.#prev = new UintArray(max)\n this.#head = 0 as Index\n this.#tail = 0 as Index\n this.#free = Stack.create(max)\n this.#size = 0\n this.#calculatedSize = 0\n\n if (typeof dispose === 'function') {\n this.#dispose = dispose\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter\n this.#disposed = []\n } else {\n this.#disposeAfter = undefined\n this.#disposed = undefined\n }\n this.#hasDispose = !!this.#dispose\n this.#hasDisposeAfter = !!this.#disposeAfter\n\n this.noDisposeOnSet = !!noDisposeOnSet\n this.noUpdateTTL = !!noUpdateTTL\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort\n this.ignoreFetchAbort = !!ignoreFetchAbort\n\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError(\n 'maxSize must be a positive integer if specified'\n )\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError(\n 'maxEntrySize must be a positive integer if specified'\n )\n }\n this.#initializeSizeTracking()\n }\n\n this.allowStale = !!allowStale\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n this.updateAgeOnGet = !!updateAgeOnGet\n this.updateAgeOnHas = !!updateAgeOnHas\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1\n this.ttlAutopurge = !!ttlAutopurge\n this.ttl = ttl || 0\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError(\n 'ttl must be a positive integer if specified'\n )\n }\n this.#initializeTTLTracking()\n }\n\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError(\n 'At least one of max, maxSize, or ttl is required'\n )\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED'\n if (shouldWarn(code)) {\n warned.add(code)\n const msg =\n 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.'\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n }\n }\n }\n\n /**\n * Return the number of ms left in the item's TTL. If item is not in cache,\n * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n */\n getRemainingTTL(key: K) {\n return this.#keyMap.has(key) ? Infinity : 0\n }\n\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max)\n const starts = new ZeroArray(this.#max)\n this.#ttls = ttls\n this.#starts = starts\n\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0\n ttls[index] = ttl\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.#delete(this.#keyList[index] as K, 'expire')\n }\n }, ttl + 1)\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref()\n }\n /* c8 ignore stop */\n }\n }\n\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0\n }\n\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index]\n const start = starts[index]\n /* c8 ignore next */\n if (!ttl || !start) return\n status.ttl = ttl\n status.start = start\n status.now = cachedNow || getNow()\n const age = status.now - start\n status.remainingTTL = ttl - age\n }\n }\n\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0\n const getNow = () => {\n const n = perf.now()\n if (this.ttlResolution > 0) {\n cachedNow = n\n const t = setTimeout(\n () => (cachedNow = 0),\n this.ttlResolution\n )\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref()\n }\n /* c8 ignore stop */\n }\n return n\n }\n\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key)\n if (index === undefined) {\n return 0\n }\n const ttl = ttls[index]\n const start = starts[index]\n if (!ttl || !start) {\n return Infinity\n }\n const age = (cachedNow || getNow()) - start\n return ttl - age\n }\n\n this.#isStale = index => {\n const s = starts[index]\n const t = ttls[index]\n return !!t && !!s && (cachedNow || getNow()) - s > t\n }\n }\n\n // conditionally set private methods related to TTL\n #updateItemAge: (index: Index) => void = () => {}\n #statusTTL: (status: LRUCache.Status, index: Index) => void =\n () => {}\n #setItemTTL: (\n index: Index,\n ttl: LRUCache.Milliseconds,\n start?: LRUCache.Milliseconds\n // ignore because we never call this if we're not already in TTL mode\n /* c8 ignore start */\n ) => void = () => {}\n /* c8 ignore stop */\n\n #isStale: (index: Index) => boolean = () => false\n\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max)\n this.#calculatedSize = 0\n this.#sizes = sizes\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index] as number\n sizes[index] = 0\n }\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function')\n }\n size = sizeCalculation(v, k)\n if (!isPosInt(size)) {\n throw new TypeError(\n 'sizeCalculation return invalid (expect positive integer)'\n )\n }\n } else {\n throw new TypeError(\n 'invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.'\n )\n }\n }\n return size\n }\n this.#addItemSize = (\n index: Index,\n size: LRUCache.Size,\n status?: LRUCache.Status\n ) => {\n sizes[index] = size\n if (this.#maxSize) {\n const maxSize = this.#maxSize - (sizes[index] as number)\n while (this.#calculatedSize > maxSize) {\n this.#evict(true)\n }\n }\n this.#calculatedSize += sizes[index] as number\n if (status) {\n status.entrySize = size\n status.totalCalculatedSize = this.#calculatedSize\n }\n }\n }\n\n #removeItemSize: (index: Index) => void = _i => {}\n #addItemSize: (\n index: Index,\n size: LRUCache.Size,\n status?: LRUCache.Status\n ) => void = (_i, _s, _st) => {}\n #requireSize: (\n k: K,\n v: V | BackgroundFetch,\n size?: LRUCache.Size,\n sizeCalculation?: LRUCache.SizeCalculator\n ) => LRUCache.Size = (\n _k: K,\n _v: V | BackgroundFetch,\n size?: LRUCache.Size,\n sizeCalculation?: LRUCache.SizeCalculator\n ) => {\n if (size || sizeCalculation) {\n throw new TypeError(\n 'cannot set size without setting maxSize or maxEntrySize on cache'\n )\n }\n return 0\n };\n\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true; ) {\n if (!this.#isValidIndex(i)) {\n break\n }\n if (allowStale || !this.#isStale(i)) {\n yield i\n }\n if (i === this.#head) {\n break\n } else {\n i = this.#prev[i] as Index\n }\n }\n }\n }\n\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true; ) {\n if (!this.#isValidIndex(i)) {\n break\n }\n if (allowStale || !this.#isStale(i)) {\n yield i\n }\n if (i === this.#tail) {\n break\n } else {\n i = this.#next[i] as Index\n }\n }\n }\n }\n\n #isValidIndex(index: Index) {\n return (\n index !== undefined &&\n this.#keyMap.get(this.#keyList[index] as K) === index\n )\n }\n\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (\n this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield [this.#keyList[i], this.#valList[i]] as [K, V]\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (\n this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield [this.#keyList[i], this.#valList[i]]\n }\n }\n }\n\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i]\n if (\n k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield k\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i]\n if (\n k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield k\n }\n }\n }\n\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n if (\n v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield this.#valList[i] as V\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i]\n if (\n v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield this.#valList[i]\n }\n }\n }\n\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries()\n }\n\n /**\n * A String value that is used in the creation of the default string\n * description of an object. Called by the built-in method\n * `Object.prototype.toString`.\n */\n [Symbol.toStringTag] = 'LRUCache'\n\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n */\n find(\n fn: (v: V, k: K, self: LRUCache) => boolean,\n getOptions: LRUCache.GetOptions = {}\n ) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n if (fn(value, this.#keyList[i] as K, this)) {\n return this.get(this.#keyList[i] as K, getOptions)\n }\n }\n }\n\n /**\n * Call the supplied function on each item in the cache, in order from most\n * recently used to least recently used.\n *\n * `fn` is called as `fn(value, key, cache)`.\n *\n * If `thisp` is provided, function will be called in the `this`-context of\n * the provided object, or the cache if no `thisp` object is provided.\n *\n * Does not update age or recenty of use, or iterate over stale values.\n */\n forEach(\n fn: (v: V, k: K, self: LRUCache) => any,\n thisp: any = this\n ) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n fn.call(thisp, value, this.#keyList[i] as K, this)\n }\n }\n\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(\n fn: (v: V, k: K, self: LRUCache) => any,\n thisp: any = this\n ) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n fn.call(thisp, value, this.#keyList[i] as K, this)\n }\n }\n\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.#delete(this.#keyList[i] as K, 'expire')\n deleted = true\n }\n }\n return deleted\n }\n\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Returns `undefined` if the key is not present.\n *\n * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n * serialization, the `start` value is always the current timestamp, and the\n * `ttl` is a calculated remaining time to live (negative if expired).\n *\n * Always returns stale values, if their info is found in the cache, so be\n * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n * if relevant.\n */\n info(key: K): LRUCache.Entry | undefined {\n const i = this.#keyMap.get(key)\n if (i === undefined) return undefined\n const v = this.#valList[i]\n const value: V | undefined = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) return undefined\n const entry: LRUCache.Entry = { value }\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i]\n const start = this.#starts[i]\n if (ttl && start) {\n const remain = ttl - (perf.now() - start)\n entry.ttl = remain\n entry.start = Date.now()\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i]\n }\n return entry\n }\n\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to {@link LRUCache#load}.\n *\n * The `start` fields are calculated relative to a portable `Date.now()`\n * timestamp, even if `performance.now()` is available.\n *\n * Stale entries are always included in the `dump`, even if\n * {@link LRUCache.OptionsBase.allowStale} is false.\n *\n * Note: this returns an actual array, not a generator, so it can be more\n * easily passed around.\n */\n dump() {\n const arr: [K, LRUCache.Entry][] = []\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i]\n const v = this.#valList[i]\n const value: V | undefined = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined || key === undefined) continue\n const entry: LRUCache.Entry = { value }\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i]\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - (this.#starts[i] as number)\n entry.start = Math.floor(Date.now() - age)\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i]\n }\n arr.unshift([key, entry])\n }\n return arr\n }\n\n /**\n * Reset the cache and load in the items in entries in the order listed.\n *\n * The shape of the resulting cache may be different if the same options are\n * not used in both caches.\n *\n * The `start` fields are assumed to be calculated relative to a portable\n * `Date.now()` timestamp, even if `performance.now()` is available.\n */\n load(arr: [K, LRUCache.Entry][]) {\n this.clear()\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start\n entry.start = perf.now() - age\n }\n this.set(key, entry.value, entry)\n }\n }\n\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n *\n * Fields on the {@link LRUCache.SetOptions} options param will override\n * their corresponding values in the constructor options for the scope\n * of this single `set()` operation.\n *\n * If `start` is provided, then that will set the effective start\n * time for the TTL calculation. Note that this must be a previous\n * value of `performance.now()` if supported, or a previous value of\n * `Date.now()` if not.\n *\n * Options object may also include `size`, which will prevent\n * calling the `sizeCalculation` function and just use the specified\n * number if it is a positive integer, and `noDisposeOnSet` which\n * will prevent calling a `dispose` function in the case of\n * overwrites.\n *\n * If the `size` (or return value of `sizeCalculation`) for a given\n * entry is greater than `maxEntrySize`, then the item will not be\n * added to the cache.\n *\n * Will update the recency of the entry.\n *\n * If the value is `undefined`, then this is an alias for\n * `cache.delete(key)`. `undefined` is never stored in the cache.\n */\n set(\n k: K,\n v: V | BackgroundFetch | undefined,\n setOptions: LRUCache.SetOptions = {}\n ) {\n if (v === undefined) {\n this.delete(k)\n return this\n }\n const {\n ttl = this.ttl,\n start,\n noDisposeOnSet = this.noDisposeOnSet,\n sizeCalculation = this.sizeCalculation,\n status,\n } = setOptions\n let { noUpdateTTL = this.noUpdateTTL } = setOptions\n\n const size = this.#requireSize(\n k,\n v,\n setOptions.size || 0,\n sizeCalculation\n )\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss'\n status.maxEntrySizeExceeded = true\n }\n // have to delete, in case something is there already.\n this.#delete(k, 'set')\n return this\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k)\n if (index === undefined) {\n // addition\n index = (\n this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size\n ) as Index\n this.#keyList[index] = k\n this.#valList[index] = v\n this.#keyMap.set(k, index)\n this.#next[this.#tail] = index\n this.#prev[index] = this.#tail\n this.#tail = index\n this.#size++\n this.#addItemSize(index, size, status)\n if (status) status.set = 'add'\n noUpdateTTL = false\n } else {\n // update\n this.#moveToTail(index)\n const oldVal = this.#valList[index] as V | BackgroundFetch\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'))\n const { __staleWhileFetching: s } = oldVal\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s as V, k, 'set')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s as V, k, 'set'])\n }\n }\n } else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal as V, k, 'set')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal as V, k, 'set'])\n }\n }\n this.#removeItemSize(index)\n this.#addItemSize(index, size, status)\n this.#valList[index] = v\n if (status) {\n status.set = 'replace'\n const oldValue =\n oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal\n if (oldValue !== undefined) status.oldValue = oldValue\n }\n } else if (status) {\n status.set = 'update'\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking()\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start)\n }\n if (status) this.#statusTTL(status, index)\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n return this\n }\n\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop(): V | undefined {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head]\n this.#evict(true)\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching\n }\n } else if (val !== undefined) {\n return val\n }\n }\n } finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n }\n }\n\n #evict(free: boolean) {\n const head = this.#head\n const k = this.#keyList[head] as K\n const v = this.#valList[head] as V\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'))\n } else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict'])\n }\n }\n this.#removeItemSize(head)\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined\n this.#valList[head] = undefined\n this.#free.push(head)\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0 as Index\n this.#free.length = 0\n } else {\n this.#head = this.#next[head] as Index\n }\n this.#keyMap.delete(k)\n this.#size--\n return head\n }\n\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Check if a key is in the cache, without updating the recency of\n * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n * to `true` in either the options or the constructor.\n *\n * Will return `false` if the item is stale, even though it is technically in\n * the cache. The difference can be determined (if it matters) by using a\n * `status` argument, and inspecting the `has` field.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k: K, hasOptions: LRUCache.HasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } =\n hasOptions\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n const v = this.#valList[index]\n if (\n this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined\n ) {\n return false\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index)\n }\n if (status) {\n status.has = 'hit'\n this.#statusTTL(status, index)\n }\n return true\n } else if (status) {\n status.has = 'stale'\n this.#statusTTL(status, index)\n }\n } else if (status) {\n status.has = 'miss'\n }\n return false\n }\n\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k: K, peekOptions: LRUCache.PeekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions\n const index = this.#keyMap.get(k)\n if (\n index === undefined ||\n (!allowStale && this.#isStale(index))\n ) {\n return\n }\n const v = this.#valList[index]\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n }\n\n #backgroundFetch(\n k: K,\n index: Index | undefined,\n options: LRUCache.FetchOptions,\n context: any\n ): BackgroundFetch {\n const v = index === undefined ? undefined : this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n return v\n }\n\n const ac = new AC()\n const { signal } = options\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n })\n\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n }\n\n const cb = (\n v: V | undefined,\n updateCache = false\n ): V | undefined => {\n const { aborted } = ac.signal\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true\n options.status.fetchError = ac.signal.reason\n if (ignoreAbort) options.status.fetchAbortIgnored = true\n } else {\n options.status.fetchResolved = true\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason)\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p as BackgroundFetch\n if (this.#valList[index as Index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index as Index] = bf.__staleWhileFetching\n } else {\n this.#delete(k, 'fetch')\n }\n } else {\n if (options.status) options.status.fetchUpdated = true\n this.set(k, v, fetchOpts.options)\n }\n }\n return v\n }\n\n const eb = (er: any) => {\n if (options.status) {\n options.status.fetchRejected = true\n options.status.fetchError = er\n }\n return fetchFail(er)\n }\n\n const fetchFail = (er: any): V | undefined => {\n const { aborted } = ac.signal\n const allowStaleAborted =\n aborted && options.allowStaleOnFetchAbort\n const allowStale =\n allowStaleAborted || options.allowStaleOnFetchRejection\n const noDelete = allowStale || options.noDeleteOnFetchRejection\n const bf = p as BackgroundFetch\n if (this.#valList[index as Index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined\n if (del) {\n this.#delete(k, 'fetch')\n } else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index as Index] = bf.__staleWhileFetching\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true\n }\n return bf.__staleWhileFetching\n } else if (bf.__returned === bf) {\n throw er\n }\n }\n\n const pcall = (\n res: (v: V | undefined) => void,\n rej: (e: any) => void\n ) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts)\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej)\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (\n !options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort\n ) {\n res(undefined)\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true)\n }\n }\n })\n }\n\n if (options.status) options.status.fetchDispatched = true\n const p = new Promise(pcall).then(cb, eb)\n const bf: BackgroundFetch = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n })\n\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined })\n index = this.#keyMap.get(k)\n } else {\n this.#valList[index] = bf\n }\n return bf\n }\n\n #isBackgroundFetch(p: any): p is BackgroundFetch {\n if (!this.#hasFetchMethod) return false\n const b = p as BackgroundFetch\n return (\n !!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC\n )\n }\n\n /**\n * Make an asynchronous cached fetch using the\n * {@link LRUCache.OptionsBase.fetchMethod} function.\n *\n * If the value is in the cache and not stale, then the returned\n * Promise resolves to the value.\n *\n * If not in the cache, or beyond its TTL staleness, then\n * `fetchMethod(key, staleValue, { options, signal, context })` is\n * called, and the value returned will be added to the cache once\n * resolved.\n *\n * If called with `allowStale`, and an asynchronous fetch is\n * currently in progress to reload a stale value, then the former\n * stale value will be returned.\n *\n * If called with `forceRefresh`, then the cached item will be\n * re-fetched, even if it is not stale. However, if `allowStale` is also\n * set, then the old value will still be returned. This is useful\n * in cases where you want to force a reload of a cached value. If\n * a background fetch is already in progress, then `forceRefresh`\n * has no effect.\n *\n * If multiple fetches for the same key are issued, then they will all be\n * coalesced into a single call to fetchMethod.\n *\n * Note that this means that handling options such as\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort},\n * {@link LRUCache.FetchOptions.signal},\n * and {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} will be\n * determined by the FIRST fetch() call for a given key.\n *\n * This is a known (fixable) shortcoming which will be addresed on when\n * someone complains about it, as the fix would involve added complexity and\n * may not be worth the costs for this edge case.\n *\n * If {@link LRUCache.OptionsBase.fetchMethod} is not specified, then this is\n * effectively an alias for `Promise.resolve(cache.get(key))`.\n *\n * When the fetch method resolves to a value, if the fetch has not\n * been aborted due to deletion, eviction, or being overwritten,\n * then it is added to the cache using the options provided.\n *\n * If the key is evicted or deleted before the `fetchMethod`\n * resolves, then the AbortSignal passed to the `fetchMethod` will\n * receive an `abort` event, and the promise returned by `fetch()`\n * will reject with the reason for the abort.\n *\n * If a `signal` is passed to the `fetch()` call, then aborting the\n * signal will abort the fetch and cause the `fetch()` promise to\n * reject with the reason provided.\n *\n * **Setting `context`**\n *\n * If an `FC` type is set to a type other than `unknown`, `void`, or\n * `undefined` in the {@link LRUCache} constructor, then all\n * calls to `cache.fetch()` _must_ provide a `context` option. If\n * set to `undefined` or `void`, then calls to fetch _must not_\n * provide a `context` option.\n *\n * The `context` param allows you to provide arbitrary data that\n * might be relevant in the course of fetching the data. It is only\n * relevant for the course of a single `fetch()` operation, and\n * discarded afterwards.\n *\n * **Note: `fetch()` calls are inflight-unique**\n *\n * If you call `fetch()` multiple times with the same key value,\n * then every call after the first will resolve on the same\n * promise1,\n * _even if they have different settings that would otherwise change\n * the behavior of the fetch_, such as `noDeleteOnFetchRejection`\n * or `ignoreFetchAbort`.\n *\n * In most cases, this is not a problem (in fact, only fetching\n * something once is what you probably want, if you're caching in\n * the first place). If you are changing the fetch() options\n * dramatically between runs, there's a good chance that you might\n * be trying to fit divergent semantics into a single object, and\n * would be better off with multiple cache instances.\n *\n * **1**: Ie, they're not the \"same Promise\", but they resolve at\n * the same time, because they're both waiting on the same\n * underlying fetchMethod response.\n */\n\n fetch(\n k: K,\n fetchOptions: unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : LRUCache.FetchOptionsWithContext\n ): Promise\n\n // this overload not allowed if context is required\n fetch(\n k: unknown extends FC\n ? K\n : FC extends undefined | void\n ? K\n : never,\n fetchOptions?: unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : never\n ): Promise\n\n async fetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions = {}\n ): Promise {\n const {\n // get options\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n // set options\n ttl = this.ttl,\n noDisposeOnSet = this.noDisposeOnSet,\n size = 0,\n sizeCalculation = this.sizeCalculation,\n noUpdateTTL = this.noUpdateTTL,\n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,\n ignoreFetchAbort = this.ignoreFetchAbort,\n allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,\n context,\n forceRefresh = false,\n status,\n signal,\n } = fetchOptions\n\n if (!this.#hasFetchMethod) {\n if (status) status.fetch = 'get'\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n })\n }\n\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n }\n\n let index = this.#keyMap.get(k)\n if (index === undefined) {\n if (status) status.fetch = 'miss'\n const p = this.#backgroundFetch(k, index, options, context)\n return (p.__returned = p)\n } else {\n // in cache, maybe already fetching\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n const stale =\n allowStale && v.__staleWhileFetching !== undefined\n if (status) {\n status.fetch = 'inflight'\n if (stale) status.returnedStale = true\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v)\n }\n\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index)\n if (!forceRefresh && !isStale) {\n if (status) status.fetch = 'hit'\n this.#moveToTail(index)\n if (updateAgeOnGet) {\n this.#updateItemAge(index)\n }\n if (status) this.#statusTTL(status, index)\n return v\n }\n\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context)\n const hasStale = p.__staleWhileFetching !== undefined\n const staleVal = hasStale && allowStale\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh'\n if (staleVal && isStale) status.returnedStale = true\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p)\n }\n }\n\n /**\n * In some cases, `cache.fetch()` may resolve to `undefined`, either because\n * a {@link LRUCache.OptionsBase#fetchMethod} was not provided (turning\n * `cache.fetch(k)` into just an async wrapper around `cache.get(k)`) or\n * because `ignoreFetchAbort` was specified (either to the constructor or\n * in the {@link LRUCache.FetchOptions}). Also, the\n * {@link LRUCache.OptionsBase.fetchMethod} may return `undefined` or `void`, making\n * the test even more complicated.\n *\n * Because inferring the cases where `undefined` might be returned are so\n * cumbersome, but testing for `undefined` can also be annoying, this method\n * can be used, which will reject if `this.fetch()` resolves to undefined.\n */\n forceFetch(\n k: K,\n fetchOptions: unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : LRUCache.FetchOptionsWithContext\n ): Promise\n // this overload not allowed if context is required\n forceFetch(\n k: unknown extends FC\n ? K\n : FC extends undefined | void\n ? K\n : never,\n fetchOptions?: unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : never\n ): Promise\n async forceFetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions = {}\n ): Promise {\n const v = await this.fetch(\n k,\n fetchOptions as unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : LRUCache.FetchOptionsWithContext\n )\n if (v === undefined) throw new Error('fetch() returned undefined')\n return v\n }\n\n /**\n * If the key is found in the cache, then this is equivalent to\n * {@link LRUCache#get}. If not, in the cache, then calculate the value using\n * the {@link LRUCache.OptionsBase.memoMethod}, and add it to the cache.\n *\n * If an `FC` type is set to a type other than `unknown`, `void`, or\n * `undefined` in the LRUCache constructor, then all calls to `cache.memo()`\n * _must_ provide a `context` option. If set to `undefined` or `void`, then\n * calls to memo _must not_ provide a `context` option.\n *\n * The `context` param allows you to provide arbitrary data that might be\n * relevant in the course of fetching the data. It is only relevant for the\n * course of a single `memo()` operation, and discarded afterwards.\n */\n memo(\n k: K,\n memoOptions: unknown extends FC\n ? LRUCache.MemoOptions\n : FC extends undefined | void\n ? LRUCache.MemoOptionsNoContext\n : LRUCache.MemoOptionsWithContext\n ): V\n // this overload not allowed if context is required\n memo(\n k: unknown extends FC\n ? K\n : FC extends undefined | void\n ? K\n : never,\n memoOptions?: unknown extends FC\n ? LRUCache.MemoOptions\n : FC extends undefined | void\n ? LRUCache.MemoOptionsNoContext\n : never\n ): V\n memo(k: K, memoOptions: LRUCache.MemoOptions = {}) {\n const memoMethod = this.#memoMethod\n if (!memoMethod) {\n throw new Error('no memoMethod provided to constructor')\n }\n const { context, forceRefresh, ...options } = memoOptions\n const v = this.get(k, options)\n if (!forceRefresh && v !== undefined) return v\n const vv = memoMethod(k, v, {\n options,\n context,\n } as LRUCache.MemoizerOptions)\n this.set(k, vv, options)\n return vv\n }\n\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k: K, getOptions: LRUCache.GetOptions = {}) {\n const {\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n status,\n } = getOptions\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n const value = this.#valList[index]\n const fetching = this.#isBackgroundFetch(value)\n if (status) this.#statusTTL(status, index)\n if (this.#isStale(index)) {\n if (status) status.get = 'stale'\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.#delete(k, 'expire')\n }\n if (status && allowStale) status.returnedStale = true\n return allowStale ? value : undefined\n } else {\n if (\n status &&\n allowStale &&\n value.__staleWhileFetching !== undefined\n ) {\n status.returnedStale = true\n }\n return allowStale ? value.__staleWhileFetching : undefined\n }\n } else {\n if (status) status.get = 'hit'\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching\n }\n this.#moveToTail(index)\n if (updateAgeOnGet) {\n this.#updateItemAge(index)\n }\n return value\n }\n } else if (status) {\n status.get = 'miss'\n }\n }\n\n #connect(p: Index, n: Index) {\n this.#prev[n] = p\n this.#next[p] = n\n }\n\n #moveToTail(index: Index): void {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index] as Index\n } else {\n this.#connect(\n this.#prev[index] as Index,\n this.#next[index] as Index\n )\n }\n this.#connect(this.#tail, index)\n this.#tail = index\n }\n }\n\n /**\n * Deletes a key out of the cache.\n *\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k: K) {\n return this.#delete(k, 'delete')\n }\n\n #delete(k: K, reason: LRUCache.DisposeReason) {\n let deleted = false\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n deleted = true\n if (this.#size === 1) {\n this.#clear(reason)\n } else {\n this.#removeItemSize(index)\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v as V, k, reason)\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v as V, k, reason])\n }\n }\n this.#keyMap.delete(k)\n this.#keyList[index] = undefined\n this.#valList[index] = undefined\n if (index === this.#tail) {\n this.#tail = this.#prev[index] as Index\n } else if (index === this.#head) {\n this.#head = this.#next[index] as Index\n } else {\n const pi = this.#prev[index] as number\n this.#next[pi] = this.#next[index] as number\n const ni = this.#next[index] as number\n this.#prev[ni] = this.#prev[index] as number\n }\n this.#size--\n this.#free.push(index)\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed\n let task: DisposeTask | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n return deleted\n }\n\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n return this.#clear('delete')\n }\n #clear(reason: LRUCache.DisposeReason) {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else {\n const k = this.#keyList[index]\n if (this.#hasDispose) {\n this.#dispose?.(v as V, k as K, reason)\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v as V, k as K, reason])\n }\n }\n }\n\n this.#keyMap.clear()\n this.#valList.fill(undefined)\n this.#keyList.fill(undefined)\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0)\n this.#starts.fill(0)\n }\n if (this.#sizes) {\n this.#sizes.fill(0)\n }\n this.#head = 0 as Index\n this.#tail = 0 as Index\n this.#free.length = 0\n this.#calculatedSize = 0\n this.#size = 0\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n }\n}\n", "/**\r\n * common.js\r\n */\r\n\r\n/* constants */\r\nconst TYPE_FROM = 8;\r\nconst TYPE_TO = -1;\r\n\r\n/**\r\n * get type\r\n * @param {*} o - object to check\r\n * @returns {string} - type of object\r\n */\r\nexport const getType = o =>\r\n Object.prototype.toString.call(o).slice(TYPE_FROM, TYPE_TO);\r\n\r\n/**\r\n * is string\r\n * @param {*} o - object to check\r\n * @returns {boolean} - result\r\n */\r\nexport const isString = o => typeof o === 'string' || o instanceof String;\r\n", "class ParseError extends Error{sourceStart;sourceEnd;parserState;constructor(e,n,t,o){super(e),this.name=\"ParseError\",this.sourceStart=n,this.sourceEnd=t,this.parserState=o}}class ParseErrorWithToken extends ParseError{token;constructor(e,n,t,o,r){super(e,n,t,o),this.token=r}}const e={UnexpectedNewLineInString:\"Unexpected newline while consuming a string token.\",UnexpectedEOFInString:\"Unexpected EOF while consuming a string token.\",UnexpectedEOFInComment:\"Unexpected EOF while consuming a comment.\",UnexpectedEOFInURL:\"Unexpected EOF while consuming a url token.\",UnexpectedEOFInEscapedCodePoint:\"Unexpected EOF while consuming an escaped code point.\",UnexpectedCharacterInURL:\"Unexpected character while consuming a url token.\",InvalidEscapeSequenceInURL:\"Invalid escape sequence while consuming a url token.\",InvalidEscapeSequenceAfterBackslash:'Invalid escape sequence after \"\\\\\"'},n=\"undefined\"!=typeof globalThis&&\"structuredClone\"in globalThis;function cloneTokens(e){return n?structuredClone(e):JSON.parse(JSON.stringify(e))}function stringify(...e){let n=\"\";for(let t=0;t=48&&e<=57}function isUppercaseLetterCodePoint(e){return e>=65&&e<=90}function isLowercaseLetterCodePoint(e){return e>=97&&e<=122}function isHexDigitCodePoint(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70}function isLetterCodePoint(e){return isLowercaseLetterCodePoint(e)||isUppercaseLetterCodePoint(e)}function isIdentStartCodePoint(e){return isLetterCodePoint(e)||isNonASCII_IdentCodePoint(e)||95===e}function isIdentCodePoint(e){return isIdentStartCodePoint(e)||isDigitCodePoint(e)||e===o}function isNonASCII_IdentCodePoint(e){return 183===e||8204===e||8205===e||8255===e||8256===e||8204===e||(192<=e&&e<=214||216<=e&&e<=246||248<=e&&e<=893||895<=e&&e<=8191||8304<=e&&e<=8591||11264<=e&&e<=12271||12289<=e&&e<=55295||63744<=e&&e<=64975||65008<=e&&e<=65533||(0===e||(!!isSurrogate(e)||e>=65536)))}function isNewLine(e){return e===r||e===t||12===e}function isWhitespace(e){return 32===e||e===r||9===e||e===t||12===e}function isSurrogate(e){return e>=55296&&e<=57343}function checkIfTwoCodePointsAreAValidEscape(e){return 92===e.source.codePointAt(e.cursor)&&!isNewLine(e.source.codePointAt(e.cursor+1)??-1)}function checkIfThreeCodePointsWouldStartAnIdentSequence(e,n){return n.source.codePointAt(n.cursor)===o?n.source.codePointAt(n.cursor+1)===o||(!!isIdentStartCodePoint(n.source.codePointAt(n.cursor+1)??-1)||92===n.source.codePointAt(n.cursor+1)&&!isNewLine(n.source.codePointAt(n.cursor+2)??-1)):!!isIdentStartCodePoint(n.source.codePointAt(n.cursor)??-1)||checkIfTwoCodePointsAreAValidEscape(n)}function checkIfThreeCodePointsWouldStartANumber(e){return e.source.codePointAt(e.cursor)===i||e.source.codePointAt(e.cursor)===o?!!isDigitCodePoint(e.source.codePointAt(e.cursor+1)??-1)||46===e.source.codePointAt(e.cursor+1)&&isDigitCodePoint(e.source.codePointAt(e.cursor+2)??-1):46===e.source.codePointAt(e.cursor)?isDigitCodePoint(e.source.codePointAt(e.cursor+1)??-1):isDigitCodePoint(e.source.codePointAt(e.cursor)??-1)}function checkIfTwoCodePointsStartAComment(e){return 47===e.source.codePointAt(e.cursor)&&42===e.source.codePointAt(e.cursor+1)}function checkIfThreeCodePointsWouldStartCDC(e){return e.source.codePointAt(e.cursor)===o&&e.source.codePointAt(e.cursor+1)===o&&62===e.source.codePointAt(e.cursor+2)}var c,a,u;function mirrorVariantType(e){switch(e){case c.OpenParen:return c.CloseParen;case c.CloseParen:return c.OpenParen;case c.OpenCurly:return c.CloseCurly;case c.CloseCurly:return c.OpenCurly;case c.OpenSquare:return c.CloseSquare;case c.CloseSquare:return c.OpenSquare;default:return null}}function mirrorVariant(e){switch(e[0]){case c.OpenParen:return[c.CloseParen,\")\",-1,-1,void 0];case c.CloseParen:return[c.OpenParen,\"(\",-1,-1,void 0];case c.OpenCurly:return[c.CloseCurly,\"}\",-1,-1,void 0];case c.CloseCurly:return[c.OpenCurly,\"{\",-1,-1,void 0];case c.OpenSquare:return[c.CloseSquare,\"]\",-1,-1,void 0];case c.CloseSquare:return[c.OpenSquare,\"[\",-1,-1,void 0];default:return null}}function consumeComment(n,t){for(t.advanceCodePoint(2);;){const o=t.readCodePoint();if(void 0===o){const o=[c.Comment,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInComment,t.representationStart,t.representationEnd,[\"4.3.2. Consume comments\",\"Unexpected EOF\"],o)),o}if(42===o&&(void 0!==t.source.codePointAt(t.cursor)&&47===t.source.codePointAt(t.cursor))){t.advanceCodePoint();break}}return[c.Comment,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0]}function consumeEscapedCodePoint(n,o){const i=o.readCodePoint();if(void 0===i)return n.onParseError(new ParseError(e.UnexpectedEOFInEscapedCodePoint,o.representationStart,o.representationEnd,[\"4.3.7. Consume an escaped code point\",\"Unexpected EOF\"])),s;if(isHexDigitCodePoint(i)){const e=[i];let n;for(;void 0!==(n=o.source.codePointAt(o.cursor))&&isHexDigitCodePoint(n)&&e.length<6;)e.push(n),o.advanceCodePoint();isWhitespace(o.source.codePointAt(o.cursor)??-1)&&(o.source.codePointAt(o.cursor)===t&&o.source.codePointAt(o.cursor+1)===r&&o.advanceCodePoint(),o.advanceCodePoint());const c=parseInt(String.fromCodePoint(...e),16);return 0===c||isSurrogate(c)||c>1114111?s:c}return 0===i||isSurrogate(i)?s:i}function consumeIdentSequence(e,n){const t=[];for(;;){const o=n.source.codePointAt(n.cursor)??-1;if(0===o||isSurrogate(o))t.push(s),n.advanceCodePoint(+(o>65535)+1);else if(isIdentCodePoint(o))t.push(o),n.advanceCodePoint(+(o>65535)+1);else{if(!checkIfTwoCodePointsAreAValidEscape(n))return t;n.advanceCodePoint(),t.push(consumeEscapedCodePoint(e,n))}}}function consumeHashToken(e,n){n.advanceCodePoint();const t=n.source.codePointAt(n.cursor);if(void 0!==t&&(isIdentCodePoint(t)||checkIfTwoCodePointsAreAValidEscape(n))){let t=u.Unrestricted;checkIfThreeCodePointsWouldStartAnIdentSequence(0,n)&&(t=u.ID);const o=consumeIdentSequence(e,n);return[c.Hash,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...o),type:t}]}return[c.Delim,\"#\",n.representationStart,n.representationEnd,{value:\"#\"}]}function consumeNumber(e,n){let t=a.Integer;for(n.source.codePointAt(n.cursor)!==i&&n.source.codePointAt(n.cursor)!==o||n.advanceCodePoint();isDigitCodePoint(n.source.codePointAt(n.cursor)??-1);)n.advanceCodePoint();if(46===n.source.codePointAt(n.cursor)&&isDigitCodePoint(n.source.codePointAt(n.cursor+1)??-1))for(n.advanceCodePoint(2),t=a.Number;isDigitCodePoint(n.source.codePointAt(n.cursor)??-1);)n.advanceCodePoint();if(101===n.source.codePointAt(n.cursor)||69===n.source.codePointAt(n.cursor)){if(isDigitCodePoint(n.source.codePointAt(n.cursor+1)??-1))n.advanceCodePoint(2);else{if(n.source.codePointAt(n.cursor+1)!==o&&n.source.codePointAt(n.cursor+1)!==i||!isDigitCodePoint(n.source.codePointAt(n.cursor+2)??-1))return t;n.advanceCodePoint(3)}for(t=a.Number;isDigitCodePoint(n.source.codePointAt(n.cursor)??-1);)n.advanceCodePoint()}return t}function consumeNumericToken(e,n){let t;{const e=n.source.codePointAt(n.cursor);e===o?t=\"-\":e===i&&(t=\"+\")}const r=consumeNumber(0,n),s=parseFloat(n.source.slice(n.representationStart,n.representationEnd+1));if(checkIfThreeCodePointsWouldStartAnIdentSequence(0,n)){const o=consumeIdentSequence(e,n);return[c.Dimension,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:s,signCharacter:t,type:r,unit:String.fromCodePoint(...o)}]}return 37===n.source.codePointAt(n.cursor)?(n.advanceCodePoint(),[c.Percentage,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:s,signCharacter:t}]):[c.Number,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:s,signCharacter:t,type:r}]}function consumeWhiteSpace(e){for(;isWhitespace(e.source.codePointAt(e.cursor)??-1);)e.advanceCodePoint();return[c.Whitespace,e.source.slice(e.representationStart,e.representationEnd+1),e.representationStart,e.representationEnd,void 0]}!function(e){e.Comment=\"comment\",e.AtKeyword=\"at-keyword-token\",e.BadString=\"bad-string-token\",e.BadURL=\"bad-url-token\",e.CDC=\"CDC-token\",e.CDO=\"CDO-token\",e.Colon=\"colon-token\",e.Comma=\"comma-token\",e.Delim=\"delim-token\",e.Dimension=\"dimension-token\",e.EOF=\"EOF-token\",e.Function=\"function-token\",e.Hash=\"hash-token\",e.Ident=\"ident-token\",e.Number=\"number-token\",e.Percentage=\"percentage-token\",e.Semicolon=\"semicolon-token\",e.String=\"string-token\",e.URL=\"url-token\",e.Whitespace=\"whitespace-token\",e.OpenParen=\"(-token\",e.CloseParen=\")-token\",e.OpenSquare=\"[-token\",e.CloseSquare=\"]-token\",e.OpenCurly=\"{-token\",e.CloseCurly=\"}-token\",e.UnicodeRange=\"unicode-range-token\"}(c||(c={})),function(e){e.Integer=\"integer\",e.Number=\"number\"}(a||(a={})),function(e){e.Unrestricted=\"unrestricted\",e.ID=\"id\"}(u||(u={}));class Reader{cursor=0;source=\"\";representationStart=0;representationEnd=-1;constructor(e){this.source=e}advanceCodePoint(e=1){this.cursor=this.cursor+e,this.representationEnd=this.cursor-1}readCodePoint(){const e=this.source.codePointAt(this.cursor);if(void 0!==e)return this.cursor=this.cursor+1,this.representationEnd=this.cursor-1,e}unreadCodePoint(e=1){this.cursor=this.cursor-e,this.representationEnd=this.cursor-1}resetRepresentation(){this.representationStart=this.cursor,this.representationEnd=-1}}function consumeStringToken(n,o){let i=\"\";const a=o.readCodePoint();for(;;){const u=o.readCodePoint();if(void 0===u){const t=[c.String,o.source.slice(o.representationStart,o.representationEnd+1),o.representationStart,o.representationEnd,{value:i}];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInString,o.representationStart,o.representationEnd,[\"4.3.5. Consume a string token\",\"Unexpected EOF\"],t)),t}if(isNewLine(u)){o.unreadCodePoint();const i=[c.BadString,o.source.slice(o.representationStart,o.representationEnd+1),o.representationStart,o.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.UnexpectedNewLineInString,o.representationStart,o.source.codePointAt(o.cursor)===t&&o.source.codePointAt(o.cursor+1)===r?o.representationEnd+2:o.representationEnd+1,[\"4.3.5. Consume a string token\",\"Unexpected newline\"],i)),i}if(u===a)return[c.String,o.source.slice(o.representationStart,o.representationEnd+1),o.representationStart,o.representationEnd,{value:i}];if(92!==u)0===u||isSurrogate(u)?i+=String.fromCodePoint(s):i+=String.fromCodePoint(u);else{if(void 0===o.source.codePointAt(o.cursor))continue;if(isNewLine(o.source.codePointAt(o.cursor)??-1)){o.source.codePointAt(o.cursor)===t&&o.source.codePointAt(o.cursor+1)===r&&o.advanceCodePoint(),o.advanceCodePoint();continue}i+=String.fromCodePoint(consumeEscapedCodePoint(n,o))}}}function checkIfCodePointsMatchURLIdent(e){return!(3!==e.length||117!==e[0]&&85!==e[0]||114!==e[1]&&82!==e[1]||108!==e[2]&&76!==e[2])}function consumeBadURL(e,n){for(;;){const t=n.source.codePointAt(n.cursor);if(void 0===t)return;if(41===t)return void n.advanceCodePoint();checkIfTwoCodePointsAreAValidEscape(n)?(n.advanceCodePoint(),consumeEscapedCodePoint(e,n)):n.advanceCodePoint()}}function consumeUrlToken(n,t){for(;isWhitespace(t.source.codePointAt(t.cursor)??-1);)t.advanceCodePoint();let o=\"\";for(;;){if(void 0===t.source.codePointAt(t.cursor)){const r=[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"Unexpected EOF\"],r)),r}if(41===t.source.codePointAt(t.cursor))return t.advanceCodePoint(),[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}];if(isWhitespace(t.source.codePointAt(t.cursor)??-1)){for(t.advanceCodePoint();isWhitespace(t.source.codePointAt(t.cursor)??-1);)t.advanceCodePoint();if(void 0===t.source.codePointAt(t.cursor)){const r=[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"Consume as much whitespace as possible\",\"Unexpected EOF\"],r)),r}return 41===t.source.codePointAt(t.cursor)?(t.advanceCodePoint(),[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}]):(consumeBadURL(n,t),[c.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0])}const i=t.source.codePointAt(t.cursor);if(34===i||39===i||40===i||(11===(r=i??-1)||127===r||0<=r&&r<=8||14<=r&&r<=31)){consumeBadURL(n,t);const o=[c.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.UnexpectedCharacterInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"Unexpected U+0022 QUOTATION MARK (\\\"), U+0027 APOSTROPHE ('), U+0028 LEFT PARENTHESIS (() or non-printable code point\"],o)),o}if(92===i){if(checkIfTwoCodePointsAreAValidEscape(t)){t.advanceCodePoint(),o+=String.fromCodePoint(consumeEscapedCodePoint(n,t));continue}consumeBadURL(n,t);const r=[c.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.InvalidEscapeSequenceInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"U+005C REVERSE SOLIDUS (\\\\)\",\"The input stream does not start with a valid escape sequence\"],r)),r}0===t.source.codePointAt(t.cursor)||isSurrogate(t.source.codePointAt(t.cursor)??-1)?(o+=String.fromCodePoint(s),t.advanceCodePoint()):(o+=t.source[t.cursor],t.advanceCodePoint())}var r}function consumeIdentLikeToken(e,n){const t=consumeIdentSequence(e,n);if(40!==n.source.codePointAt(n.cursor))return[c.Ident,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...t)}];if(checkIfCodePointsMatchURLIdent(t)){n.advanceCodePoint();let o=0;for(;;){const e=isWhitespace(n.source.codePointAt(n.cursor)??-1),r=isWhitespace(n.source.codePointAt(n.cursor+1)??-1);if(e&&r){o+=1,n.advanceCodePoint(1);continue}const i=e?n.source.codePointAt(n.cursor+1):n.source.codePointAt(n.cursor);if(34===i||39===i)return o>0&&n.unreadCodePoint(o),[c.Function,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...t)}];break}return consumeUrlToken(e,n)}return n.advanceCodePoint(),[c.Function,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...t)}]}function checkIfThreeCodePointsWouldStartAUnicodeRange(e){return!(117!==e.source.codePointAt(e.cursor)&&85!==e.source.codePointAt(e.cursor)||e.source.codePointAt(e.cursor+1)!==i||63!==e.source.codePointAt(e.cursor+2)&&!isHexDigitCodePoint(e.source.codePointAt(e.cursor+2)??-1))}function consumeUnicodeRangeToken(e,n){n.advanceCodePoint(2);const t=[],r=[];let i;for(;void 0!==(i=n.source.codePointAt(n.cursor))&&t.length<6&&isHexDigitCodePoint(i);)t.push(i),n.advanceCodePoint();for(;void 0!==(i=n.source.codePointAt(n.cursor))&&t.length<6&&63===i;)0===r.length&&r.push(...t),t.push(48),r.push(70),n.advanceCodePoint();if(!r.length&&n.source.codePointAt(n.cursor)===o&&isHexDigitCodePoint(n.source.codePointAt(n.cursor+1)??-1))for(n.advanceCodePoint();void 0!==(i=n.source.codePointAt(n.cursor))&&r.length<6&&isHexDigitCodePoint(i);)r.push(i),n.advanceCodePoint();if(!r.length){const e=parseInt(String.fromCodePoint(...t),16);return[c.UnicodeRange,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{startOfRange:e,endOfRange:e}]}const s=parseInt(String.fromCodePoint(...t),16),a=parseInt(String.fromCodePoint(...r),16);return[c.UnicodeRange,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{startOfRange:s,endOfRange:a}]}function tokenize(e,n){const t=tokenizer(e,n),o=[];for(;!t.endOfFile();)o.push(t.nextToken());return o.push(t.nextToken()),o}function tokenizer(n,s){const a=n.css.valueOf(),u=n.unicodeRangesAllowed??!1,d=new Reader(a),p={onParseError:s?.onParseError??noop};return{nextToken:function nextToken(){d.resetRepresentation();const n=d.source.codePointAt(d.cursor);if(void 0===n)return[c.EOF,\"\",-1,-1,void 0];if(47===n&&checkIfTwoCodePointsStartAComment(d))return consumeComment(p,d);if(u&&(117===n||85===n)&&checkIfThreeCodePointsWouldStartAUnicodeRange(d))return consumeUnicodeRangeToken(0,d);if(isIdentStartCodePoint(n))return consumeIdentLikeToken(p,d);if(isDigitCodePoint(n))return consumeNumericToken(p,d);switch(n){case 44:return d.advanceCodePoint(),[c.Comma,\",\",d.representationStart,d.representationEnd,void 0];case 58:return d.advanceCodePoint(),[c.Colon,\":\",d.representationStart,d.representationEnd,void 0];case 59:return d.advanceCodePoint(),[c.Semicolon,\";\",d.representationStart,d.representationEnd,void 0];case 40:return d.advanceCodePoint(),[c.OpenParen,\"(\",d.representationStart,d.representationEnd,void 0];case 41:return d.advanceCodePoint(),[c.CloseParen,\")\",d.representationStart,d.representationEnd,void 0];case 91:return d.advanceCodePoint(),[c.OpenSquare,\"[\",d.representationStart,d.representationEnd,void 0];case 93:return d.advanceCodePoint(),[c.CloseSquare,\"]\",d.representationStart,d.representationEnd,void 0];case 123:return d.advanceCodePoint(),[c.OpenCurly,\"{\",d.representationStart,d.representationEnd,void 0];case 125:return d.advanceCodePoint(),[c.CloseCurly,\"}\",d.representationStart,d.representationEnd,void 0];case 39:case 34:return consumeStringToken(p,d);case 35:return consumeHashToken(p,d);case i:case 46:return checkIfThreeCodePointsWouldStartANumber(d)?consumeNumericToken(p,d):(d.advanceCodePoint(),[c.Delim,d.source[d.representationStart],d.representationStart,d.representationEnd,{value:d.source[d.representationStart]}]);case r:case t:case 12:case 9:case 32:return consumeWhiteSpace(d);case o:return checkIfThreeCodePointsWouldStartANumber(d)?consumeNumericToken(p,d):checkIfThreeCodePointsWouldStartCDC(d)?(d.advanceCodePoint(3),[c.CDC,\"--\\x3e\",d.representationStart,d.representationEnd,void 0]):checkIfThreeCodePointsWouldStartAnIdentSequence(0,d)?consumeIdentLikeToken(p,d):(d.advanceCodePoint(),[c.Delim,\"-\",d.representationStart,d.representationEnd,{value:\"-\"}]);case 60:return checkIfFourCodePointsWouldStartCDO(d)?(d.advanceCodePoint(4),[c.CDO,\"\\x3c!--\",d.representationStart,d.representationEnd,void 0]):(d.advanceCodePoint(),[c.Delim,\"<\",d.representationStart,d.representationEnd,{value:\"<\"}]);case 64:if(d.advanceCodePoint(),checkIfThreeCodePointsWouldStartAnIdentSequence(0,d)){const e=consumeIdentSequence(p,d);return[c.AtKeyword,d.source.slice(d.representationStart,d.representationEnd+1),d.representationStart,d.representationEnd,{value:String.fromCodePoint(...e)}]}return[c.Delim,\"@\",d.representationStart,d.representationEnd,{value:\"@\"}];case 92:{if(checkIfTwoCodePointsAreAValidEscape(d))return consumeIdentLikeToken(p,d);d.advanceCodePoint();const n=[c.Delim,\"\\\\\",d.representationStart,d.representationEnd,{value:\"\\\\\"}];return p.onParseError(new ParseErrorWithToken(e.InvalidEscapeSequenceAfterBackslash,d.representationStart,d.representationEnd,[\"4.3.1. Consume a token\",\"U+005C REVERSE SOLIDUS (\\\\)\",\"The input stream does not start with a valid escape sequence\"],n)),n}}return d.advanceCodePoint(),[c.Delim,d.source[d.representationStart],d.representationStart,d.representationEnd,{value:d.source[d.representationStart]}]},endOfFile:function endOfFile(){return void 0===d.source.codePointAt(d.cursor)}}}function noop(){}function mutateIdent(e,n){const t=[];for(const e of n)t.push(e.codePointAt(0));const o=String.fromCodePoint(...ensureThatValueRoundTripsAsIdent(t));e[1]=o,e[4].value=n}function mutateUnit(e,n){const t=[];for(const e of n)t.push(e.codePointAt(0));const o=ensureThatValueRoundTripsAsIdent(t);101===o[0]&&insertEscapedCodePoint(o,0,o[0]);const r=String.fromCodePoint(...o),i=\"+\"===e[4].signCharacter?e[4].signCharacter:\"\",s=e[4].value.toString();e[1]=`${i}${s}${r}`,e[4].unit=n}function ensureThatValueRoundTripsAsIdent(e){let n=0;e[0]===o&&e[1]===o?n=2:e[0]===o&&e[1]?(n=2,isIdentStartCodePoint(e[1])||(n+=insertEscapedCodePoint(e,1,e[1]))):isIdentStartCodePoint(e[0])?n=1:(n=1,n+=insertEscapedCodePoint(e,0,e[0]));for(let t=n;t{let s=-1;for(let i=n.indexOf(t);i=e.length)?-1:(n=e.slice(),s)}}function consumeComponentValue(e,n){const t=n[0];if(i(t)||r(t)||a(t)){const t=consumeSimpleBlock(e,n);return{advance:t.advance,node:t.node}}if(c(t)){const t=consumeFunction(e,n);return{advance:t.advance,node:t.node}}if(u(t)){const t=consumeWhitespace(e,n);return{advance:t.advance,node:t.node}}if(l(t)){const t=consumeComment(e,n);return{advance:t.advance,node:t.node}}return{advance:1,node:new TokenNode(t)}}!function(e){e.Function=\"function\",e.SimpleBlock=\"simple-block\",e.Whitespace=\"whitespace\",e.Comment=\"comment\",e.Token=\"token\"}(f||(f={}));class ContainerNodeBaseClass{value=[];indexOf(e){return this.value.indexOf(e)}at(e){if(\"number\"==typeof e)return e<0&&(e=this.value.length+e),this.value[e]}forEach(e,n){if(0===this.value.length)return;const t=walkerIndexGenerator(this.value);let o=0;for(;o!1!==e(n,t)&&((!(\"walk\"in n.node)||!this.value.includes(n.node)||!1!==n.node.walk(e,n.state))&&void 0)),n)}}class FunctionNode extends ContainerNodeBaseClass{type=f.Function;name;endToken;constructor(e,n,t){super(),this.name=e,this.endToken=n,this.value=t}getName(){return this.name[4].value}normalize(){e(this.endToken)&&(this.endToken=[n.CloseParen,\")\",-1,-1,void 0])}tokens(){return e(this.endToken)?[this.name,...this.value.flatMap((e=>e.tokens()))]:[this.name,...this.value.flatMap((e=>e.tokens())),this.endToken]}toString(){const e=this.value.map((e=>t(e)?o(e):e.toString())).join(\"\");return o(this.name)+e+o(this.endToken)}toJSON(){return{type:this.type,name:this.getName(),tokens:this.tokens(),value:this.value.map((e=>e.toJSON()))}}isFunctionNode(){return FunctionNode.isFunctionNode(this)}static isFunctionNode(e){return!!e&&(e instanceof FunctionNode&&e.type===f.Function)}}function consumeFunction(n,t){const o=[];let s=1;for(;;){const i=t[s];if(!i||e(i))return n.onParseError(new d(\"Unexpected EOF while consuming a function.\",t[0][2],t[t.length-1][3],[\"5.4.9. Consume a function\",\"Unexpected EOF\"])),{advance:t.length,node:new FunctionNode(t[0],i,o)};if(h(i))return{advance:s+1,node:new FunctionNode(t[0],i,o)};if(p(i)){const e=consumeAllCommentsAndWhitespace(n,t.slice(s));s+=e.advance,o.push(...e.nodes);continue}const r=consumeComponentValue(n,t.slice(s));s+=r.advance,o.push(r.node)}}class SimpleBlockNode extends ContainerNodeBaseClass{type=f.SimpleBlock;startToken;endToken;constructor(e,n,t){super(),this.startToken=e,this.endToken=n,this.value=t}normalize(){if(e(this.endToken)){const e=s(this.startToken);e&&(this.endToken=e)}}tokens(){return e(this.endToken)?[this.startToken,...this.value.flatMap((e=>e.tokens()))]:[this.startToken,...this.value.flatMap((e=>e.tokens())),this.endToken]}toString(){const e=this.value.map((e=>t(e)?o(e):e.toString())).join(\"\");return o(this.startToken)+e+o(this.endToken)}toJSON(){return{type:this.type,startToken:this.startToken,tokens:this.tokens(),value:this.value.map((e=>e.toJSON()))}}isSimpleBlockNode(){return SimpleBlockNode.isSimpleBlockNode(this)}static isSimpleBlockNode(e){return!!e&&(e instanceof SimpleBlockNode&&e.type===f.SimpleBlock)}}function consumeSimpleBlock(n,t){const o=m(t[0][0]);if(!o)throw new Error(\"Failed to parse, a mirror variant must exist for all block open tokens.\");const s=[];let i=1;for(;;){const r=t[i];if(!r||e(r))return n.onParseError(new d(\"Unexpected EOF while consuming a simple block.\",t[0][2],t[t.length-1][3],[\"5.4.8. Consume a simple block\",\"Unexpected EOF\"])),{advance:t.length,node:new SimpleBlockNode(t[0],r,s)};if(r[0]===o)return{advance:i+1,node:new SimpleBlockNode(t[0],r,s)};if(p(r)){const e=consumeAllCommentsAndWhitespace(n,t.slice(i));i+=e.advance,s.push(...e.nodes);continue}const a=consumeComponentValue(n,t.slice(i));i+=a.advance,s.push(a.node)}}class WhitespaceNode{type=f.Whitespace;value;constructor(e){this.value=e}tokens(){return this.value}toString(){return o(...this.value)}toJSON(){return{type:this.type,tokens:this.tokens()}}isWhitespaceNode(){return WhitespaceNode.isWhitespaceNode(this)}static isWhitespaceNode(e){return!!e&&(e instanceof WhitespaceNode&&e.type===f.Whitespace)}}function consumeWhitespace(e,n){let t=0;for(;;){const e=n[t];if(!u(e))return{advance:t,node:new WhitespaceNode(n.slice(0,t))};t++}}class CommentNode{type=f.Comment;value;constructor(e){this.value=e}tokens(){return[this.value]}toString(){return o(this.value)}toJSON(){return{type:this.type,tokens:this.tokens()}}isCommentNode(){return CommentNode.isCommentNode(this)}static isCommentNode(e){return!!e&&(e instanceof CommentNode&&e.type===f.Comment)}}function consumeComment(e,n){return{advance:1,node:new CommentNode(n[0])}}function consumeAllCommentsAndWhitespace(e,n){const t=[];let o=0;for(;;)if(u(n[o])){const e=consumeWhitespace(0,n.slice(o));o+=e.advance,t.push(e.node)}else{if(!l(n[o]))return{advance:o,nodes:t};t.push(new CommentNode(n[o])),o++}}class TokenNode{type=f.Token;value;constructor(e){this.value=e}tokens(){return[this.value]}toString(){return this.value[1]}toJSON(){return{type:this.type,tokens:this.tokens()}}isTokenNode(){return TokenNode.isTokenNode(this)}static isTokenNode(e){return!!e&&(e instanceof TokenNode&&e.type===f.Token)}}function parseComponentValue(t,o){const s={onParseError:o?.onParseError??(()=>{})},i=[...t];e(i[i.length-1])&&i.push([n.EOF,\"\",i[i.length-1][2],i[i.length-1][3],void 0]);const r=consumeComponentValue(s,i);if(e(i[Math.min(r.advance,i.length-1)]))return r.node;s.onParseError(new d(\"Expected EOF after parsing a component value.\",t[0][2],t[t.length-1][3],[\"5.3.9. Parse a component value\",\"Expected EOF\"]))}function parseListOfComponentValues(t,o){const s={onParseError:o?.onParseError??(()=>{})},i=[...t];e(i[i.length-1])&&i.push([n.EOF,\"\",i[i.length-1][2],i[i.length-1][3],void 0]);const r=[];let a=0;for(;;){if(!i[a]||e(i[a]))return r;const n=consumeComponentValue(s,i.slice(a));r.push(n.node),a+=n.advance}}function parseCommaSeparatedListOfComponentValues(t,o){const s={onParseError:o?.onParseError??(()=>{})},i=[...t];if(0===t.length)return[];e(i[i.length-1])&&i.push([n.EOF,\"\",i[i.length-1][2],i[i.length-1][3],void 0]);const r=[];let a=[],c=0;for(;;){if(!i[c]||e(i[c]))return a.length&&r.push(a),r;if(k(i[c])){r.push(a),a=[],c++;continue}const n=consumeComponentValue(s,t.slice(c));a.push(n.node),c+=n.advance}}function gatherNodeAncestry(e){const n=new Map;return e.walk((e=>{Array.isArray(e.node)?e.node.forEach((t=>{n.set(t,e.parent)})):n.set(e.node,e.parent)})),n}function forEach(e,n,t){if(0===e.length)return;const o=walkerIndexGenerator(e);let s=0;for(;s!1!==n(t,o)&&((!(\"walk\"in t.node)||!e.includes(t.node)||!1!==t.node.walk(n,t.state))&&void 0)),t)}function replaceComponentValues(e,n){for(let t=0;t{if(\"number\"!=typeof t)return;const o=n(e.node);o&&(Array.isArray(o)?e.parent.value.splice(t,1,...o):e.parent.value.splice(t,1,o))}))}return e}function stringify(e){return e.map((e=>e.map((e=>o(...e.tokens()))).join(\"\"))).join(\",\")}function isSimpleBlockNode(e){return SimpleBlockNode.isSimpleBlockNode(e)}function isFunctionNode(e){return FunctionNode.isFunctionNode(e)}function isWhitespaceNode(e){return WhitespaceNode.isWhitespaceNode(e)}function isCommentNode(e){return CommentNode.isCommentNode(e)}function isWhiteSpaceOrCommentNode(e){return isWhitespaceNode(e)||isCommentNode(e)}function isTokenNode(e){return TokenNode.isTokenNode(e)}function sourceIndices(e){if(Array.isArray(e)){const n=e[0];if(!n)return[0,0];const t=e[e.length-1]||n;return[sourceIndices(n)[0],sourceIndices(t)[1]]}const n=e.tokens(),t=n[0],o=n[n.length-1];return t&&o?[t[2],o[3]]:[0,0]}export{CommentNode,f as ComponentValueType,ContainerNodeBaseClass,FunctionNode,SimpleBlockNode,TokenNode,WhitespaceNode,forEach,gatherNodeAncestry,isCommentNode,isFunctionNode,isSimpleBlockNode,isTokenNode,isWhiteSpaceOrCommentNode,isWhitespaceNode,parseCommaSeparatedListOfComponentValues,parseComponentValue,parseListOfComponentValues,replaceComponentValues,sourceIndices,stringify,walk,walkerIndexGenerator};\n", "import{TokenNode as e,isTokenNode as n,isWhitespaceNode as t,isCommentNode as r,isWhiteSpaceOrCommentNode as u,isSimpleBlockNode as a,isFunctionNode as i,FunctionNode as o,WhitespaceNode as l,parseCommaSeparatedListOfComponentValues as c,replaceComponentValues as s}from\"@csstools/css-parser-algorithms\";import{isTokenDimension as v,TokenType as f,NumberType as m,mutateUnit as p,isTokenNumber as C,isTokenPercentage as g,isTokenIdent as D,isTokenNumeric as B,stringify as N,isTokenOpenParen as A,isTokenDelim as d,isTokenComma as F,isToken as b,tokenizer as h,tokenize as w}from\"@csstools/css-tokenizer\";const E=/[A-Z]/g;function toLowerCaseAZ(e){return e.replace(E,(e=>String.fromCharCode(e.charCodeAt(0)+32)))}const S={cm:\"px\",in:\"px\",mm:\"px\",pc:\"px\",pt:\"px\",px:\"px\",q:\"px\",deg:\"deg\",grad:\"deg\",rad:\"deg\",turn:\"deg\",ms:\"s\",s:\"s\",hz:\"hz\",khz:\"hz\"},I=new Map([[\"cm\",e=>e],[\"mm\",e=>10*e],[\"q\",e=>40*e],[\"in\",e=>e/2.54],[\"pc\",e=>e/2.54*6],[\"pt\",e=>e/2.54*72],[\"px\",e=>e/2.54*96]]),y=new Map([[\"deg\",e=>e],[\"grad\",e=>e/.9],[\"rad\",e=>e/180*Math.PI],[\"turn\",e=>e/360]]),M=new Map([[\"deg\",e=>.9*e],[\"grad\",e=>e],[\"rad\",e=>.9*e/180*Math.PI],[\"turn\",e=>.9*e/360]]),T=new Map([[\"hz\",e=>e],[\"khz\",e=>e/1e3]]),k=new Map([[\"cm\",e=>2.54*e],[\"mm\",e=>25.4*e],[\"q\",e=>25.4*e*4],[\"in\",e=>e],[\"pc\",e=>6*e],[\"pt\",e=>72*e],[\"px\",e=>96*e]]),x=new Map([[\"hz\",e=>1e3*e],[\"khz\",e=>e]]),P=new Map([[\"cm\",e=>e/10],[\"mm\",e=>e],[\"q\",e=>4*e],[\"in\",e=>e/25.4],[\"pc\",e=>e/25.4*6],[\"pt\",e=>e/25.4*72],[\"px\",e=>e/25.4*96]]),O=new Map([[\"ms\",e=>e],[\"s\",e=>e/1e3]]),W=new Map([[\"cm\",e=>e/6*2.54],[\"mm\",e=>e/6*25.4],[\"q\",e=>e/6*25.4*4],[\"in\",e=>e/6],[\"pc\",e=>e],[\"pt\",e=>e/6*72],[\"px\",e=>e/6*96]]),L=new Map([[\"cm\",e=>e/72*2.54],[\"mm\",e=>e/72*25.4],[\"q\",e=>e/72*25.4*4],[\"in\",e=>e/72],[\"pc\",e=>e/72*6],[\"pt\",e=>e],[\"px\",e=>e/72*96]]),U=new Map([[\"cm\",e=>e/96*2.54],[\"mm\",e=>e/96*25.4],[\"q\",e=>e/96*25.4*4],[\"in\",e=>e/96],[\"pc\",e=>e/96*6],[\"pt\",e=>e/96*72],[\"px\",e=>e]]),Z=new Map([[\"cm\",e=>e/4/10],[\"mm\",e=>e/4],[\"q\",e=>e],[\"in\",e=>e/4/25.4],[\"pc\",e=>e/4/25.4*6],[\"pt\",e=>e/4/25.4*72],[\"px\",e=>e/4/25.4*96]]),$=new Map([[\"deg\",e=>180*e/Math.PI],[\"grad\",e=>180*e/Math.PI/.9],[\"rad\",e=>e],[\"turn\",e=>180*e/Math.PI/360]]),z=new Map([[\"ms\",e=>1e3*e],[\"s\",e=>e]]),q=new Map([[\"deg\",e=>360*e],[\"grad\",e=>360*e/.9],[\"rad\",e=>360*e/180*Math.PI],[\"turn\",e=>e]]),G=new Map([[\"cm\",I],[\"mm\",P],[\"q\",Z],[\"in\",k],[\"pc\",W],[\"pt\",L],[\"px\",U],[\"ms\",O],[\"s\",z],[\"deg\",y],[\"grad\",M],[\"rad\",$],[\"turn\",q],[\"hz\",T],[\"khz\",x]]);function convertUnit(e,n){if(!v(e))return n;if(!v(n))return n;const t=toLowerCaseAZ(e[4].unit),r=toLowerCaseAZ(n[4].unit);if(t===r)return n;const u=G.get(r);if(!u)return n;const a=u.get(t);if(!a)return n;const i=a(n[4].value),o=[f.Dimension,\"\",n[2],n[3],{...n[4],signCharacter:i<0?\"-\":void 0,type:Number.isInteger(i)?m.Integer:m.Number,value:i}];return p(o,e[4].unit),o}function toCanonicalUnit(e){if(!v(e))return e;const n=toLowerCaseAZ(e[4].unit),t=S[n];if(n===t)return e;const r=G.get(n);if(!r)return e;const u=r.get(t);if(!u)return e;const a=u(e[4].value),i=[f.Dimension,\"\",e[2],e[3],{...e[4],signCharacter:a<0?\"-\":void 0,type:Number.isInteger(a)?m.Integer:m.Number,value:a}];return p(i,t),i}function addition(n){if(2!==n.length)return-1;const t=n[0].value;let r=n[1].value;if(C(t)&&C(r)){const n=t[4].value+r[4].value;return new e([f.Number,n.toString(),t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number}])}if(g(t)&&g(r)){const n=t[4].value+r[4].value;return new e([f.Percentage,n.toString()+\"%\",t[2],r[3],{value:n}])}if(v(t)&&v(r)&&(r=convertUnit(t,r),toLowerCaseAZ(t[4].unit)===toLowerCaseAZ(r[4].unit))){const n=t[4].value+r[4].value;return new e([f.Dimension,n.toString()+t[4].unit,t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number,unit:t[4].unit}])}return-1}function division(n){if(2!==n.length)return-1;const t=n[0].value,r=n[1].value;if(C(t)&&C(r)){const n=t[4].value/r[4].value;return new e([f.Number,n.toString(),t[2],r[3],{value:n,type:Number.isInteger(n)?m.Integer:m.Number}])}if(g(t)&&C(r)){const n=t[4].value/r[4].value;return new e([f.Percentage,n.toString()+\"%\",t[2],r[3],{value:n}])}if(v(t)&&C(r)){const n=t[4].value/r[4].value;return new e([f.Dimension,n.toString()+t[4].unit,t[2],r[3],{value:n,type:Number.isInteger(n)?m.Integer:m.Number,unit:t[4].unit}])}return-1}function isCalculation(e){return!!e&&\"object\"==typeof e&&\"inputs\"in e&&Array.isArray(e.inputs)&&\"operation\"in e}function solve(e){if(-1===e)return-1;const t=[];for(let r=0;rconvertUnit(u,e.value)));if(!arrayOfSameNumeric(a))return-1;const i=a.map((e=>e[4].value)),o=Math.hypot(...i);return resultToCalculation(e,u,o)}function solveMax(e,t,r){if(!t.every(n))return-1;const u=t[0].value;if(!B(u))return-1;if(!r.rawPercentages&&g(u))return-1;const a=t.map((e=>convertUnit(u,e.value)));if(!arrayOfSameNumeric(a))return-1;const i=a.map((e=>e[4].value)),o=Math.max(...i);return resultToCalculation(e,u,o)}function solveMin(e,t,r){if(!t.every(n))return-1;const u=t[0].value;if(!B(u))return-1;if(!r.rawPercentages&&g(u))return-1;const a=t.map((e=>convertUnit(u,e.value)));if(!arrayOfSameNumeric(a))return-1;const i=a.map((e=>e[4].value)),o=Math.min(...i);return resultToCalculation(e,u,o)}function solveMod(e,n,t){const r=n.value;if(!B(r))return-1;const u=convertUnit(r,t.value);if(!twoOfSameNumeric(r,u))return-1;let a;return a=0===u[4].value?Number.NaN:Number.isFinite(r[4].value)&&(Number.isFinite(u[4].value)||(u[4].value!==Number.POSITIVE_INFINITY||r[4].value!==Number.NEGATIVE_INFINITY&&!Object.is(0*r[4].value,-0))&&(u[4].value!==Number.NEGATIVE_INFINITY||r[4].value!==Number.POSITIVE_INFINITY&&!Object.is(0*r[4].value,0)))?Number.isFinite(u[4].value)?(r[4].value%u[4].value+u[4].value)%u[4].value:r[4].value:Number.NaN,resultToCalculation(e,r,a)}function solvePow(e,n,t){const r=n.value,u=t.value;if(!C(r))return-1;if(!twoOfSameNumeric(r,u))return-1;return numberToCalculation(e,Math.pow(r[4].value,u[4].value))}function solveRem(e,n,t){const r=n.value;if(!B(r))return-1;const u=convertUnit(r,t.value);if(!twoOfSameNumeric(r,u))return-1;let a;return a=0===u[4].value?Number.NaN:Number.isFinite(r[4].value)?Number.isFinite(u[4].value)?r[4].value%u[4].value:r[4].value:Number.NaN,resultToCalculation(e,r,a)}function solveRound(e,n,t,r,u){const a=t.value;if(!B(a))return-1;if(!u.rawPercentages&&g(a))return-1;const i=convertUnit(a,r.value);if(!twoOfSameNumeric(a,i))return-1;let o;if(0===i[4].value)o=Number.NaN;else if(Number.isFinite(a[4].value)||Number.isFinite(i[4].value))if(!Number.isFinite(a[4].value)&&Number.isFinite(i[4].value))o=a[4].value;else if(Number.isFinite(a[4].value)&&!Number.isFinite(i[4].value))switch(n){case\"down\":o=a[4].value<0?-1/0:Object.is(-0,0*a[4].value)?-0:0;break;case\"up\":o=a[4].value>0?1/0:Object.is(0,0*a[4].value)?0:-0;break;default:o=Object.is(0,0*a[4].value)?0:-0}else if(Number.isFinite(i[4].value))switch(n){case\"down\":o=Math.floor(a[4].value/i[4].value)*i[4].value;break;case\"up\":o=Math.ceil(a[4].value/i[4].value)*i[4].value;break;case\"to-zero\":o=Math.trunc(a[4].value/i[4].value)*i[4].value;break;default:{let e=Math.floor(a[4].value/i[4].value)*i[4].value,n=Math.ceil(a[4].value/i[4].value)*i[4].value;if(e>n){const t=e;e=n,n=t}const t=Math.abs(a[4].value-e),r=Math.abs(a[4].value-n);o=t===r?n:t0?1/0:-1/0:Math.tan(a),numberToCalculation(e,a)}function subtraction(n){if(2!==n.length)return-1;const t=n[0].value;let r=n[1].value;if(C(t)&&C(r)){const n=t[4].value-r[4].value;return new e([f.Number,n.toString(),t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number}])}if(g(t)&&g(r)){const n=t[4].value-r[4].value;return new e([f.Percentage,n.toString()+\"%\",t[2],r[3],{value:n}])}if(v(t)&&v(r)&&(r=convertUnit(t,r),toLowerCaseAZ(t[4].unit)===toLowerCaseAZ(r[4].unit))){const n=t[4].value-r[4].value;return new e([f.Dimension,n.toString()+t[4].unit,t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number,unit:t[4].unit}])}return-1}function solveLog(e,t){if(1===t.length){const r=t[0];if(!r||!n(r))return-1;const u=r.value;if(!C(u))return-1;return numberToCalculation(e,Math.log(u[4].value))}if(2===t.length){const r=t[0];if(!r||!n(r))return-1;const u=r.value;if(!C(u))return-1;const a=t[1];if(!a||!n(a))return-1;const i=a.value;if(!C(i))return-1;return numberToCalculation(e,Math.log(u[4].value)/Math.log(i[4].value))}return-1}const j=/^none$/i;function isNone(e){if(Array.isArray(e)){const n=e.filter((e=>!(t(e)&&r(e))));return 1===n.length&&isNone(n[0])}if(!n(e))return!1;const u=e.value;return!!D(u)&&j.test(u[4].value)}function solveRandom(e,n,t,r,u,a){const i=t.value;if(!B(i))return-1;const o=convertUnit(i,r.value);if(!twoOfSameNumeric(i,o))return-1;let l,c=null;if(u&&(c=convertUnit(i,u.value),!twoOfSameNumeric(i,c)))return-1;if(Number.isFinite(i[4].value))if(Number.isFinite(o[4].value))if(c&&(!Number.isFinite(c[4].value)||c[4].value<=0))l=i[4].value;else{const e=sfc32(crc32([n,N(i),N(o),u?`by ${u.toString()}`:\"\"].join(\",\")),a.randomSeed);let t=i[4].value,r=o[4].value;if(t>r&&([t,r]=[r,t]),c){const n=Math.abs(t-r),u=e();l=t+Math.floor(n/c[4].value*u)*c[4].value}else{const n=e();l=Number((n*(r-t)+t).toFixed(5))}}else l=Number.NaN;else l=Number.NaN;return resultToCalculation(e,i,l)}function sfc32(e=.34944106645296036,n=.19228640875738723,t=.8784393832007205,r=.04850964319275053){return()=>{const u=((e|=0)+(n|=0)|0)+(r|=0)|0;return r=r+1|0,e=n^n>>>9,n=(t|=0)+(t<<3)|0,t=(t=t<<21|t>>>11)+u|0,(u>>>0)/4294967296}}function crc32(e){let n=0,t=0,r=0;n=~n;for(let u=0,a=e.length;u>>8^t;return~n>>>0}const R=new Map([[\"abs\",function abs(e,n,t){return singleNodeSolver(e,n,t,solveAbs)}],[\"acos\",function acos(e,n,t){return singleNodeSolver(e,n,t,solveACos)}],[\"asin\",function asin(e,n,t){return singleNodeSolver(e,n,t,solveASin)}],[\"atan\",function atan(e,n,t){return singleNodeSolver(e,n,t,solveATan)}],[\"atan2\",function atan2(e,n,t){return twoCommaSeparatedNodesSolver(e,n,t,solveATan2)}],[\"calc\",calc$1],[\"clamp\",function clamp(t,r,a){const i=resolveGlobalsAndConstants([...t.value.filter((e=>!u(e)))],r),l=[],c=[],s=[];{let e=l;for(let t=0;t!u(e)));let i=\"\";const o=[],l=[];for(let e=0;e0&&n(t)&&D(t.value)){const n=t.value[4].value.toLowerCase();if(\"by\"===n||n.startsWith(\"--\")){o.push(...a.slice(e+2));break}}}l.push(t)}const c=twoCommaSeparatedArguments(l,t,r);if(-1===c)return-1;const[s,v]=c;let f=null;if(o.length&&(f=singleArgument(o,t,r),-1===f))return-1;return solveRandom(e,i,s,v,f,r)}],[\"rem\",function rem(e,n,t){return twoCommaSeparatedNodesSolver(e,n,t,solveRem)}],[\"round\",function round(t,r,a){const i=resolveGlobalsAndConstants([...t.value.filter((e=>!u(e)))],r);let o=\"\",l=!1;const c=[],s=[];{let e=c;for(let t=0;t!u(e)))],t);if(1===o.length&&n(o[0]))return{inputs:[o[0]],operation:unary};let l=0;for(;l!u(e)))],n)),n,t));return-1===r?-1:r}function twoCommaSeparatedNodesSolver(e,n,t,r){const u=twoCommaSeparatedArguments(e.value,n,t);if(-1===u)return-1;const[a,i]=u;return r(e,a,i,t)}function twoCommaSeparatedArguments(e,t,r){const a=resolveGlobalsAndConstants([...e.filter((e=>!u(e)))],t),i=[],o=[];{let e=i;for(let t=0;t!u(e)))],t),i=[];{const e=[];let u=[];for(let t=0;te.map((e=>N(...e.tokens()))).join(\"\"))).join(\",\")}function calcFromComponentValues(e,n){const t=tokenizeGlobals(n?.globals);return s(e,(e=>{if(!i(e))return;const r=R.get(e.getName().toLowerCase());if(!r)return;const u=patchCalcResult(solve(r(e,t,n??{})),n);return-1!==u?u:void 0}))}const Y=new Set(R.keys());export{calc,calcFromComponentValues,Y as mathFunctionNames};\n", "/**\n * constant.js\n */\n\n/* constants */\nexport const VAL_COMP = 'computedValue';\nexport const VAL_SPEC = 'specifiedValue';\n\n/* values and units */\nconst _DIGIT = '(?:0|[1-9]\\\\d*)';\nconst _COMP = 'clamp|max|min';\nconst _STEP = 'mod|rem|round';\nconst _TRIG = 'a?(?:cos|sin|tan)|atan2';\nconst _EXP = 'exp|hypot|log|pow|sqrt';\nconst _SIGN = 'abs|sign';\nconst _MATH = `${_COMP}|${_STEP}|${_TRIG}|${_EXP}|${_SIGN}`;\nconst _CALC = `calc|${_MATH}`;\nconst _VAR = `var|${_CALC}`;\nexport const ANGLE = 'deg|g?rad|turn';\nexport const NUM = `[+-]?(?:${_DIGIT}(?:\\\\.\\\\d*)?|\\\\.\\\\d+)(?:e-?${_DIGIT})?`;\nexport const NONE = 'none';\nexport const PCT = `${NUM}%`;\nexport const SYN_FN_MATH = `^(?:${_MATH})\\\\($`;\nexport const SYN_FN_MATH_CALC =\n `^(?:${_CALC})\\\\(|(?<=[*\\\\/\\\\s\\\\(])(?:${_CALC})\\\\(`;\nexport const SYN_FN_MATH_VAR = `^(?:${_VAR})\\\\(`;\nexport const SYN_FN_VAR = '^var\\\\(|(?<=[*\\\\/\\\\s\\\\(])var\\\\(';\n\n/* colors */\nconst _ALPHA = `(?:\\\\s*\\\\/\\\\s*(?:${NUM}|${PCT}|${NONE}))?`;\nconst _ALPHA_LV3 = `(?:\\\\s*,\\\\s*(?:${NUM}|${PCT}))?`;\nconst _COLOR_FUNC = '(?:ok)?l(?:ab|ch)|color|hsla?|hwb|rgba?';\nconst _COLOR_KEY = '[a-z]+|#[\\\\da-f]{3}|#[\\\\da-f]{4}|#[\\\\da-f]{6}|#[\\\\da-f]{8}';\nconst _CS_HUE = '(?:ok)?lch|hsl|hwb';\nconst _CS_HUE_ARC = '(?:de|in)creasing|longer|shorter';\nconst _NUM_ANGLE = `${NUM}(?:${ANGLE})?`;\nconst _NUM_ANGLE_NONE = `(?:${NUM}(?:${ANGLE})?|${NONE})`;\nconst _NUM_PCT_NONE = `(?:${NUM}|${PCT}|${NONE})`;\nexport const CS_HUE = `(?:${_CS_HUE})(?:\\\\s(?:${_CS_HUE_ARC})\\\\shue)?`;\nexport const CS_HUE_CAPT = `(${_CS_HUE})(?:\\\\s(${_CS_HUE_ARC})\\\\shue)?`;\nexport const CS_LAB = '(?:ok)?lab';\nexport const CS_LCH = '(?:ok)?lch';\nexport const CS_SRGB = 'srgb(?:-linear)?';\nexport const CS_RGB = `(?:a98|prophoto)-rgb|display-p3|rec2020|${CS_SRGB}`;\nexport const CS_XYZ = 'xyz(?:-d(?:50|65))?';\nexport const CS_MIX = `${CS_HUE}|${CS_LAB}|${CS_SRGB}|${CS_XYZ}`;\nexport const FN_COLOR = 'color(';\nexport const FN_MIX = 'color-mix(';\nexport const FN_REL = `(?:${_COLOR_FUNC})\\\\(\\\\s*from\\\\s+`;\nexport const FN_REL_CAPT = `(${_COLOR_FUNC})\\\\(\\\\s*from\\\\s+`;\nexport const FN_VAR = 'var(';\nexport const SYN_FN_COLOR =\n `(?:${CS_RGB}|${CS_XYZ})(?:\\\\s+${_NUM_PCT_NONE}){3}${_ALPHA}`;\nexport const SYN_FN_REL = `^${FN_REL}|(?<=[\\\\s])${FN_REL}`;\nexport const SYN_HSL = `${_NUM_ANGLE_NONE}(?:\\\\s+${_NUM_PCT_NONE}){2}${_ALPHA}`;\nexport const SYN_HSL_LV3 = `${_NUM_ANGLE}(?:\\\\s*,\\\\s*${PCT}){2}${_ALPHA_LV3}`;\nexport const SYN_LCH = `(?:${_NUM_PCT_NONE}\\\\s+){2}${_NUM_ANGLE_NONE}${_ALPHA}`;\nexport const SYN_MOD = `${_NUM_PCT_NONE}(?:\\\\s+${_NUM_PCT_NONE}){2}${_ALPHA}`;\nexport const SYN_RGB_LV3 =\n `(?:${NUM}(?:\\\\s*,\\\\s*${NUM}){2}|${PCT}(?:\\\\s*,\\\\s*${PCT}){2})${_ALPHA_LV3}`;\nexport const SYN_COLOR_TYPE = `${_COLOR_KEY}|hsla?\\\\(\\\\s*${SYN_HSL_LV3}\\\\s*\\\\)|rgba?\\\\(\\\\s*${SYN_RGB_LV3}\\\\s*\\\\)|(?:hsla?|hwb)\\\\(\\\\s*${SYN_HSL}\\\\s*\\\\)|(?:(?:ok)?lab|rgba?)\\\\(\\\\s*${SYN_MOD}\\\\s*\\\\)|(?:ok)?lch\\\\(\\\\s*${SYN_LCH}\\\\s*\\\\)|color\\\\(\\\\s*${SYN_FN_COLOR}\\\\s*\\\\)`;\nexport const SYN_MIX_PART = `(?:${SYN_COLOR_TYPE})(?:\\\\s+${PCT})?`;\nexport const SYN_MIX = `color-mix\\\\(\\\\s*in\\\\s+(?:${CS_MIX})\\\\s*,\\\\s*${SYN_MIX_PART}\\\\s*,\\\\s*${SYN_MIX_PART}\\\\s*\\\\)`;\nexport const SYN_MIX_CAPT = `color-mix\\\\(\\\\s*in\\\\s+(${CS_MIX})\\\\s*,\\\\s*(${SYN_MIX_PART})\\\\s*,\\\\s*(${SYN_MIX_PART})\\\\s*\\\\)`;\n", "/**\n * css-calc.js\n */\n\nimport { calc } from '@csstools/css-calc';\nimport { TokenType, tokenize } from '@csstools/css-tokenizer';\nimport { LRUCache } from 'lru-cache';\nimport { isString } from './common.js';\nimport { roundToPrecision, valueToJsonString } from './util.js';\n\n/* constants */\nimport {\n FN_VAR, NUM, SYN_FN_MATH, SYN_FN_MATH_CALC, SYN_FN_MATH_VAR, SYN_FN_VAR,\n VAL_SPEC\n} from './constant.js';\nconst {\n CloseParen: PAREN_CLOSE, Comment: COMMENT, Dimension: DIM, EOF,\n Function: FUNC, OpenParen: PAREN_OPEN, Whitespace: W_SPACE\n} = TokenType;\nconst HEX = 16;\nconst MAX_PCT = 100;\n\n/* regexp */\nconst REG_FN_MATH_CALC = new RegExp(SYN_FN_MATH_CALC);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\nconst REG_OPERATOR = /\\s[*+/-]\\s/;\nconst REG_START_MATH = new RegExp(SYN_FN_MATH);\nconst REG_START_MATH_VAR = new RegExp(SYN_FN_MATH_VAR);\nconst REG_TYPE_DIM = new RegExp(`^(${NUM})([a-z]+)$`);\nconst REG_TYPE_DIM_PCT = new RegExp(`^(${NUM})([a-z]+|%)$`);\nconst REG_TYPE_PCT = new RegExp(`^(${NUM})%$`);\n\n/* cached results */\nexport const cachedResults = new LRUCache({\n max: 4096\n});\n\n/**\n * calclator\n */\nexport class Calculator {\n /* private */\n // number\n #hasNum;\n #numSum;\n #numMul;\n // percentage\n #hasPct;\n #pctSum;\n #pctMul;\n // dimension\n #hasDim;\n #dimSum;\n #dimSub;\n #dimMul;\n #dimDiv;\n // et cetra\n #hasEtc;\n #etcSum;\n #etcSub;\n #etcMul;\n #etcDiv;\n\n /**\n * constructor\n */\n constructor() {\n // number\n this.#hasNum = false;\n this.#numSum = [];\n this.#numMul = [];\n // percentage\n this.#hasPct = false;\n this.#pctSum = [];\n this.#pctMul = [];\n // dimension\n this.#hasDim = false;\n this.#dimSum = [];\n this.#dimSub = [];\n this.#dimMul = [];\n this.#dimDiv = [];\n // et cetra\n this.#hasEtc = false;\n this.#etcSum = [];\n this.#etcSub = [];\n this.#etcMul = [];\n this.#etcDiv = [];\n }\n\n get hasNum() {\n return this.#hasNum;\n }\n\n set hasNum(value) {\n this.#hasNum = !!value;\n }\n\n get numSum() {\n return this.#numSum;\n }\n\n get numMul() {\n return this.#numMul;\n }\n\n get hasPct() {\n return this.#hasPct;\n }\n\n set hasPct(value) {\n this.#hasPct = !!value;\n }\n\n get pctSum() {\n return this.#pctSum;\n }\n\n get pctMul() {\n return this.#pctMul;\n }\n\n get hasDim() {\n return this.#hasDim;\n }\n\n set hasDim(value) {\n this.#hasDim = !!value;\n }\n\n get dimSum() {\n return this.#dimSum;\n }\n\n get dimSub() {\n return this.#dimSub;\n }\n\n get dimMul() {\n return this.#dimMul;\n }\n\n get dimDiv() {\n return this.#dimDiv;\n }\n\n get hasEtc() {\n return this.#hasEtc;\n }\n\n set hasEtc(value) {\n this.#hasEtc = !!value;\n }\n\n get etcSum() {\n return this.#etcSum;\n }\n\n get etcSub() {\n return this.#etcSub;\n }\n\n get etcMul() {\n return this.#etcMul;\n }\n\n get etcDiv() {\n return this.#etcDiv;\n }\n\n /**\n * clear values\n * @returns {void}\n */\n clear() {\n // number\n this.#hasNum = false;\n this.#numSum = [];\n this.#numMul = [];\n // percentage\n this.#hasPct = false;\n this.#pctSum = [];\n this.#pctMul = [];\n // dimension\n this.#hasDim = false;\n this.#dimSum = [];\n this.#dimSub = [];\n this.#dimMul = [];\n this.#dimDiv = [];\n // et cetra\n this.#hasEtc = false;\n this.#etcSum = [];\n this.#etcSub = [];\n this.#etcMul = [];\n this.#etcDiv = [];\n }\n\n /**\n * sort values\n * @param {Array} values - values\n * @returns {Array} - sorted values\n */\n sort(values = []) {\n const arr = [...values];\n if (arr.length > 1) {\n arr.sort((a, b) => {\n let res;\n if (REG_TYPE_DIM_PCT.test(a) && REG_TYPE_DIM_PCT.test(b)) {\n const [, valA, unitA] = REG_TYPE_DIM_PCT.exec(a);\n const [, valB, unitB] = REG_TYPE_DIM_PCT.exec(b);\n if (unitA === unitB) {\n if (Number(valA) === Number(valB)) {\n res = 0;\n } else if (Number(valA) > Number(valB)) {\n res = 1;\n } else {\n res = -1;\n }\n } else if (unitA > unitB) {\n res = 1;\n } else {\n res = -1;\n }\n } else {\n if (a === b) {\n res = 0;\n } else if (a > b) {\n res = 1;\n } else {\n res = -1;\n }\n }\n return res;\n });\n }\n return arr;\n }\n\n /**\n * multiply values\n * @returns {?string} - resolved value\n */\n multiply() {\n const value = [];\n let num;\n if (this.#hasNum) {\n num = 1;\n for (const i of this.#numMul) {\n num *= i;\n if (num === 0 || !Number.isFinite(num) || Number.isNaN(num)) {\n break;\n }\n }\n if (!this.#hasPct && !this.#hasDim && !this.hasEtc) {\n value.push(num);\n }\n }\n if (this.#hasPct) {\n if (!this.#hasNum) {\n num = 1;\n }\n for (const i of this.#pctMul) {\n num *= i;\n if (num === 0 || !Number.isFinite(num) || Number.isNaN(num)) {\n break;\n }\n }\n if (Number.isFinite(num)) {\n num = `${num}%`;\n }\n if (!this.#hasDim && !this.hasEtc) {\n value.push(num);\n }\n }\n if (this.#hasDim) {\n let dim, mul, div;\n if (this.#dimMul.length) {\n if (this.#dimMul.length === 1) {\n [mul] = this.#dimMul;\n } else {\n mul = `${this.sort(this.#dimMul).join(' * ')}`;\n }\n }\n if (this.#dimDiv.length) {\n if (this.#dimDiv.length === 1) {\n [div] = this.#dimDiv;\n } else {\n div = `${this.sort(this.#dimDiv).join(' * ')}`;\n }\n }\n if (Number.isFinite(num)) {\n if (mul) {\n if (div) {\n if (div.includes('*')) {\n dim = calc(`calc(${num} * ${mul} / (${div}))`, {\n toCanonicalUnits: true\n });\n } else {\n dim = calc(`calc(${num} * ${mul} / ${div})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n dim = calc(`calc(${num} * ${mul})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n if (div.includes('*')) {\n dim = calc(`calc(${num} / (${div}))`, {\n toCanonicalUnits: true\n });\n } else {\n dim = calc(`calc(${num} / ${div})`, {\n toCanonicalUnits: true\n });\n }\n }\n value.push(dim.replace(/^calc/, ''));\n } else {\n if (!value.length && num !== undefined) {\n value.push(num);\n }\n if (mul) {\n if (div) {\n if (div.includes('*')) {\n dim = calc(`calc(${mul} / (${div}))`, {\n toCanonicalUnits: true\n });\n } else {\n dim = calc(`calc(${mul} / ${div})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n dim = calc(`calc(${mul})`, {\n toCanonicalUnits: true\n });\n }\n if (value.length) {\n value.push('*', dim.replace(/^calc/, ''));\n } else {\n value.push(dim.replace(/^calc/, ''));\n }\n } else {\n dim = calc(`calc(${div})`, {\n toCanonicalUnits: true\n });\n if (value.length) {\n value.push('/', dim.replace(/^calc/, ''));\n } else {\n value.push('1', '/', dim.replace(/^calc/, ''));\n }\n }\n }\n }\n if (this.#hasEtc) {\n if (this.#etcMul.length) {\n if (!value.length && num !== undefined) {\n value.push(num);\n }\n const mul = this.sort(this.#etcMul).join(' * ');\n if (value.length) {\n value.push(`* ${mul}`);\n } else {\n value.push(`${mul}`);\n }\n }\n if (this.#etcDiv.length) {\n const div = this.sort(this.#etcDiv).join(' * ');\n if (div.includes('*')) {\n if (value.length) {\n value.push(`/ (${div})`);\n } else {\n value.push(`1 / (${div})`);\n }\n } else if (value.length) {\n value.push(`/ ${div}`);\n } else {\n value.push(`1 / ${div}`);\n }\n }\n }\n return value.join(' ') || null;\n }\n\n /**\n * sum values\n * @returns {?string} - resolved value\n */\n sum() {\n const value = [];\n if (this.#hasNum) {\n let num = 0;\n for (const i of this.#numSum) {\n num += i;\n if (!Number.isFinite(num) || Number.isNaN(num)) {\n break;\n }\n }\n value.push(num);\n }\n if (this.#hasPct) {\n let num = 0;\n for (const i of this.#pctSum) {\n num += i;\n if (!Number.isFinite(num) || Number.isNaN(num)) {\n break;\n }\n }\n if (Number.isFinite(num)) {\n num = `${num}%`;\n }\n if (value.length) {\n value.push(`+ ${num}`);\n } else {\n value.push(num);\n }\n }\n if (this.#hasDim) {\n let dim, sum, sub;\n if (this.#dimSum.length) {\n sum = this.#dimSum.join(' + ');\n }\n if (this.#dimSub.length) {\n sub = this.#dimSub.join(' + ');\n }\n if (sum) {\n if (sub) {\n if (sub.includes('-')) {\n dim = calc(`calc(${sum} - (${sub}))`, {\n toCanonicalUnits: true\n });\n } else {\n dim = calc(`calc(${sum} - ${sub})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n dim = calc(`calc(${sum})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n dim = calc(`calc(-1 * (${sub}))`, {\n toCanonicalUnits: true\n });\n }\n if (value.length) {\n value.push('+', dim.replace(/^calc/, ''));\n } else {\n value.push(dim.replace(/^calc/, ''));\n }\n }\n if (this.#hasEtc) {\n if (this.#etcSum.length) {\n const sum = this.sort(this.#etcSum).map(item => {\n let res;\n if (REG_OPERATOR.test(item) &&\n !item.startsWith('(') && !item.endsWith(')')) {\n res = `(${item})`;\n } else {\n res = item;\n }\n return res;\n }).join(' + ');\n if (value.length) {\n if (this.#etcSum.length > 1) {\n value.push(`+ (${sum})`);\n } else {\n value.push(`+ ${sum}`);\n }\n } else {\n value.push(`${sum}`);\n }\n }\n if (this.#etcSub.length) {\n const sub = this.sort(this.#etcSub).map(item => {\n let res;\n if (REG_OPERATOR.test(item) &&\n !item.startsWith('(') && !item.endsWith(')')) {\n res = `(${item})`;\n } else {\n res = item;\n }\n return res;\n }).join(' + ');\n if (value.length) {\n if (this.#etcSub.length > 1) {\n value.push(`- (${sub})`);\n } else {\n value.push(`- ${sub}`);\n }\n } else if (this.#etcSub.length > 1) {\n value.push(`-1 * (${sub})`);\n } else {\n value.push(`-1 * ${sub}`);\n }\n }\n }\n return value.join(' ') || null;\n }\n}\n\n/**\n * sort calc values\n * @param {Array} values - values\n * @param {boolean} finalize - finalize\n * @returns {string} - sorted value\n */\nexport const sortCalcValues = (values = [], finalize = false) => {\n if (values.length < 3) {\n return null;\n }\n const start = values.shift();\n const end = values.pop();\n if (values.length === 1) {\n const [value] = values;\n return `${start}${value}${end}`;\n }\n const sortedValues = [];\n const cal = new Calculator();\n let operator;\n for (let i = 0, l = values.length; i < l; i++) {\n const value = values[i];\n if (value === '*' || value === '/') {\n operator = value;\n } else if (value === '+' || value === '-') {\n const sortedValue = cal.multiply();\n sortedValues.push(sortedValue, value);\n cal.clear();\n operator = null;\n } else {\n switch (operator) {\n case '/': {\n if (Number.isFinite(value * 1)) {\n cal.hasNum = true;\n cal.numMul.push(1 / value);\n } else if (REG_TYPE_PCT.test(value)) {\n const [, val] = REG_TYPE_PCT.exec(value);\n cal.hasPct = true;\n cal.pctMul.push(MAX_PCT * MAX_PCT / Number(val));\n } else if (REG_TYPE_DIM.test(value)) {\n cal.hasDim = true;\n cal.dimDiv.push(value);\n } else {\n cal.hasEtc = true;\n cal.etcDiv.push(value);\n }\n break;\n }\n case '*':\n default: {\n if (Number.isFinite(value * 1)) {\n cal.hasNum = true;\n cal.numMul.push(value * 1);\n } else if (REG_TYPE_PCT.test(value)) {\n const [, val] = REG_TYPE_PCT.exec(value);\n cal.hasPct = true;\n cal.pctMul.push(Number(val));\n } else if (REG_TYPE_DIM.test(value)) {\n cal.hasDim = true;\n cal.dimMul.push(value);\n } else {\n cal.hasEtc = true;\n cal.etcMul.push(value);\n }\n }\n }\n if (i === l - 1) {\n const sortedValue = cal.multiply();\n sortedValues.push(sortedValue);\n cal.clear();\n operator = null;\n }\n }\n }\n let resolvedValue;\n if (finalize && (sortedValues.includes('+') || sortedValues.includes('-'))) {\n const finalizedValues = [];\n cal.clear();\n operator = null;\n for (let i = 0, l = sortedValues.length; i < l; i++) {\n const value = sortedValues[i];\n if (value === '+' || value === '-') {\n operator = value;\n } else {\n switch (operator) {\n case '-': {\n if (Number.isFinite(value * 1)) {\n cal.hasNum = true;\n cal.numSum.push(-1 * value);\n } else if (REG_TYPE_PCT.test(value)) {\n const [, val] = REG_TYPE_PCT.exec(value);\n cal.hasPct = true;\n cal.pctSum.push(-1 * Number(val));\n } else if (REG_TYPE_DIM.test(value)) {\n cal.hasDim = true;\n cal.dimSub.push(value);\n } else {\n cal.hasEtc = true;\n cal.etcSub.push(value);\n }\n break;\n }\n case '+':\n default: {\n if (Number.isFinite(value * 1)) {\n cal.hasNum = true;\n cal.numSum.push(value * 1);\n } else if (REG_TYPE_PCT.test(value)) {\n const [, val] = REG_TYPE_PCT.exec(value);\n cal.hasPct = true;\n cal.pctSum.push(Number(val));\n } else if (REG_TYPE_DIM.test(value)) {\n cal.hasDim = true;\n cal.dimSum.push(value);\n } else {\n cal.hasEtc = true;\n cal.etcSum.push(value);\n }\n }\n }\n if (i === l - 1) {\n const sortedValue = cal.sum();\n finalizedValues.push(sortedValue);\n cal.clear();\n operator = null;\n }\n }\n }\n resolvedValue = finalizedValues.join(' ');\n } else {\n resolvedValue = sortedValues.join(' ');\n }\n return `${start}${resolvedValue}${end}`;\n};\n\n/**\n * serialize calc\n * @param {string} value - value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {?string} - resolved value\n */\nexport const serializeCalc = (value, opt = {}) => {\n const { format } = opt;\n if (isString(value)) {\n if (!REG_START_MATH_VAR.test(value) || format !== VAL_SPEC) {\n return value;\n }\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string`);\n }\n const cacheKey = `{serializeCalc:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n const items = tokenize({ css: value }).map(token => {\n const [type, value] = token;\n let res;\n if (type !== W_SPACE && type !== COMMENT) {\n res = value;\n }\n return res;\n }).filter(v => v);\n let startIndex = items.findLastIndex(item => /\\($/.test(item));\n while (startIndex) {\n const endIndex = items.findIndex((item, index) => {\n return item === ')' && index > startIndex;\n });\n const slicedValues = items.slice(startIndex, endIndex + 1);\n let serializedValue = sortCalcValues(slicedValues);\n if (REG_START_MATH_VAR.test(serializedValue)) {\n serializedValue = calc(serializedValue, {\n toCanonicalUnits: true\n });\n }\n items.splice(startIndex, endIndex - startIndex + 1, serializedValue);\n startIndex = items.findLastIndex(item => /\\($/.test(item));\n }\n const serializedCalc = sortCalcValues(items, true);\n if (cacheKey) {\n cachedResults.set(cacheKey, serializedCalc);\n }\n return serializedCalc;\n};\n\n/**\n * resolve dimension\n * @param {Array} token - token\n * @param {object} [opt] - options\n * @param {object} [opt.dimension] - dimension\n * @returns {?string} - resolved value\n */\nexport const resolveDimension = (token, opt = {}) => {\n if (!Array.isArray(token)) {\n throw new TypeError(`${token} is not an array.`);\n }\n const [, value,,, detail = {}] = token;\n const { unit, value: relativeValue } = detail;\n const { dimension = {} } = opt;\n if (unit === 'px') {\n return value;\n }\n let res;\n if (unit && Number.isFinite(relativeValue)) {\n let pixelValue;\n if (Object.hasOwnProperty.call(dimension, unit)) {\n pixelValue = dimension[unit];\n } else if (typeof dimension.callback === 'function') {\n pixelValue = dimension.callback(unit);\n }\n if (Number.isFinite(pixelValue)) {\n res = `${relativeValue * pixelValue}px`;\n }\n }\n return res ?? null;\n};\n\n/**\n * parse tokens\n * @param {Array.} tokens - tokens\n * @param {object} [opt] - options\n * @returns {Array.} - parsed tokens\n */\nexport const parseTokens = (tokens, opt = {}) => {\n if (!Array.isArray(tokens)) {\n throw new TypeError(`${tokens} is not an array.`);\n }\n const { format } = opt;\n const mathFunc = new Set();\n let nest = 0;\n const res = [];\n while (tokens.length) {\n const token = tokens.shift();\n if (!Array.isArray(token)) {\n throw new TypeError(`${token} is not an array.`);\n }\n const [type, value] = token;\n switch (type) {\n case DIM: {\n let resolvedValue;\n if (format === VAL_SPEC && !mathFunc.has(nest)) {\n resolvedValue = value;\n } else {\n resolvedValue = resolveDimension(token, opt);\n if (!resolvedValue) {\n resolvedValue = value;\n }\n }\n res.push(resolvedValue);\n break;\n }\n case FUNC:\n case PAREN_OPEN: {\n res.push(value);\n nest++;\n if (REG_START_MATH.test(value)) {\n mathFunc.add(nest);\n }\n break;\n }\n case PAREN_CLOSE: {\n if (res.length) {\n const lastValue = res[res.length - 1];\n if (lastValue === ' ') {\n res.splice(-1, 1, value);\n } else {\n res.push(value);\n }\n } else {\n res.push(value);\n }\n if (mathFunc.has(nest)) {\n mathFunc.delete(nest);\n }\n nest--;\n break;\n }\n case W_SPACE: {\n if (res.length) {\n const lastValue = res[res.length - 1];\n if (!lastValue.endsWith('(') && lastValue !== ' ') {\n res.push(value);\n }\n }\n break;\n }\n default: {\n if (type !== COMMENT && type !== EOF) {\n res.push(value);\n }\n }\n }\n }\n return res;\n};\n\n/**\n * resolve CSS calc()\n * @param {string} value - color value including calc()\n * @param {object} [opt] - options\n * @param {object} [opt.dimension] - dimension\n * @param {string} [opt.format] - output format\n * @returns {?string} - value\n */\nexport const cssCalc = (value, opt = {}) => {\n const { format, dimension } = opt;\n if (isString(value)) {\n if (REG_FN_VAR.test(value)) {\n if (format === VAL_SPEC) {\n return value;\n // var() must be resolved before cssCalc()\n } else {\n throw new SyntaxError(`Unexpected token ${FN_VAR} found.`);\n }\n } else if (!REG_FN_MATH_CALC.test(value)) {\n return value;\n }\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string`);\n }\n let cacheKey;\n if (typeof dimension?.callback !== 'function') {\n cacheKey = `{cssCalc:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n let resolvedValue;\n if (dimension) {\n const tokens = tokenize({ css: value });\n const values = parseTokens(tokens, opt);\n resolvedValue = calc(values.join(''), {\n toCanonicalUnits: true\n });\n } else {\n resolvedValue = calc(value, {\n toCanonicalUnits: true\n });\n }\n if (REG_START_MATH_VAR.test(value)) {\n if (REG_TYPE_DIM_PCT.test(resolvedValue)) {\n const [, val, unit] = REG_TYPE_DIM_PCT.exec(resolvedValue);\n resolvedValue = `${roundToPrecision(Number(val), HEX)}${unit}`;\n }\n // wrap with `calc()`\n if (resolvedValue && !REG_START_MATH_VAR.test(resolvedValue) &&\n format === VAL_SPEC) {\n resolvedValue = `calc(${resolvedValue})`;\n }\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, resolvedValue);\n }\n return resolvedValue;\n};\n", "/**\n * css-var.js\n */\n\nimport { TokenType, tokenize } from '@csstools/css-tokenizer';\nimport { LRUCache } from 'lru-cache';\nimport { isString } from './common.js';\nimport { cssCalc } from './css-calc.js';\nimport { isColor, valueToJsonString } from './util.js';\n\n/* constants */\nimport { FN_VAR, SYN_FN_MATH_CALC, SYN_FN_VAR, VAL_SPEC } from './constant.js';\nconst {\n CloseParen: PAREN_CLOSE, Comment: COMMENT, EOF, Ident: IDENT,\n Whitespace: W_SPACE\n} = TokenType;\n\n/* regexp */\nconst REG_FN_MATH_CALC = new RegExp(SYN_FN_MATH_CALC);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\n\n/* cached results */\nexport const cachedResults = new LRUCache({\n max: 4096\n});\n\n/**\n * resolve custom property\n * @param {Array.} tokens - tokens\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @returns {Array.} - [tokens, resolvedValue]\n */\nexport function resolveCustomProperty(tokens, opt = {}) {\n if (!Array.isArray(tokens)) {\n throw new TypeError(`${tokens} is not an array.`);\n }\n const { customProperty = {} } = opt;\n const items = [];\n while (tokens.length) {\n const token = tokens.shift();\n if (!Array.isArray(token)) {\n throw new TypeError(`${token} is not an array.`);\n }\n const [type, value] = token;\n // end of var()\n if (type === PAREN_CLOSE) {\n break;\n }\n // nested var()\n if (value === FN_VAR) {\n const [restTokens, item] = resolveCustomProperty(tokens, opt);\n tokens = restTokens;\n if (item) {\n items.push(item);\n }\n } else if (type === IDENT) {\n if (value.startsWith('--')) {\n if (Object.hasOwnProperty.call(customProperty, value)) {\n items.push(customProperty[value]);\n } else if (typeof customProperty.callback === 'function') {\n const item = customProperty.callback(value);\n if (item) {\n items.push(item);\n }\n }\n } else if (value) {\n items.push(value);\n }\n }\n }\n let resolveAsColor;\n if (items.length > 1) {\n const lastValue = items[items.length - 1];\n resolveAsColor = isColor(lastValue);\n }\n let resolvedValue;\n for (let item of items) {\n item = item.trim();\n if (REG_FN_VAR.test(item)) {\n // recurse cssVar()\n item = cssVar(item, opt);\n if (item) {\n if (resolveAsColor) {\n if (isColor(item)) {\n resolvedValue = item;\n }\n } else {\n resolvedValue = item;\n }\n }\n } else if (REG_FN_MATH_CALC.test(item)) {\n item = cssCalc(item, opt);\n if (resolveAsColor) {\n if (isColor(item)) {\n resolvedValue = item;\n }\n } else {\n resolvedValue = item;\n }\n } else if (item &&\n !/^(?:inherit|initial|revert(?:-layer)?|unset)$/.test(item)) {\n if (resolveAsColor) {\n if (isColor(item)) {\n resolvedValue = item;\n }\n } else {\n resolvedValue = item;\n }\n }\n if (resolvedValue) {\n break;\n }\n }\n return [tokens, resolvedValue];\n}\n\n/**\n * parse tokens\n * @param {Array.} tokens - tokens\n * @param {object} [opt] - options\n * @returns {?Array.} - parsed tokens\n */\nexport function parseTokens(tokens, opt = {}) {\n const res = [];\n while (tokens.length) {\n const token = tokens.shift();\n const [type, value] = token;\n if (value === FN_VAR) {\n const [restTokens, resolvedValue] = resolveCustomProperty(tokens, opt);\n if (!resolvedValue) {\n return null;\n }\n tokens = restTokens;\n res.push(resolvedValue);\n } else {\n switch (type) {\n case PAREN_CLOSE: {\n if (res.length) {\n const lastValue = res[res.length - 1];\n if (lastValue === ' ') {\n res.splice(-1, 1, value);\n } else {\n res.push(value);\n }\n } else {\n res.push(value);\n }\n break;\n }\n case W_SPACE: {\n if (res.length) {\n const lastValue = res[res.length - 1];\n if (!lastValue.endsWith('(') && lastValue !== ' ') {\n res.push(value);\n }\n }\n break;\n }\n default: {\n if (type !== COMMENT && type !== EOF) {\n res.push(value);\n }\n }\n }\n }\n }\n return res;\n}\n\n/**\n * resolve CSS var()\n * @param {string} value - color value including var()\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @returns {?string} - value\n */\nexport function cssVar(value, opt = {}) {\n const { customProperty, format } = opt;\n if (isString(value)) {\n if (!REG_FN_VAR.test(value) || format === VAL_SPEC) {\n return value;\n }\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{cssVar:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n const tokens = tokenize({ css: value });\n const values = parseTokens(tokens, opt);\n if (Array.isArray(values)) {\n let color = values.join('');\n if (REG_FN_MATH_CALC.test(color)) {\n color = cssCalc(color, opt);\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, color);\n }\n return color;\n } else {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n}\n", "function multiplyMatrices(t,n){return[t[0]*n[0]+t[1]*n[1]+t[2]*n[2],t[3]*n[0]+t[4]*n[1]+t[5]*n[2],t[6]*n[0]+t[7]*n[1]+t[8]*n[2]]}const t=[.955473421488075,-.02309845494876471,.06325924320057072,-.0283697093338637,1.0099953980813041,.021041441191917323,.012314014864481998,-.020507649298898964,1.330365926242124];\n/**\n * Bradford chromatic adaptation from D50 to D65\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function D50_to_D65(n){return multiplyMatrices(t,n)}const n=[1.0479297925449969,.022946870601609652,-.05019226628920524,.02962780877005599,.9904344267538799,-.017073799063418826,-.009243040646204504,.015055191490298152,.7518742814281371];\n/**\n * Bradford chromatic adaptation from D65 to D50\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\n */function D65_to_D50(t){return multiplyMatrices(n,t)}\n/**\n * @param {number} hue - Hue as degrees 0..360\n * @param {number} sat - Saturation as percentage 0..100\n * @param {number} light - Lightness as percentage 0..100\n * @return {number[]} Array of sRGB components; in-gamut colors in range [0..1]\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hslToRgb.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hslToRgb.js\n */function HSL_to_sRGB(t){let n=t[0]%360;const _=t[1]/100,o=t[2]/100;return n<0&&(n+=360),[HSL_to_sRGB_channel(0,n,_,o),HSL_to_sRGB_channel(8,n,_,o),HSL_to_sRGB_channel(4,n,_,o)]}function HSL_to_sRGB_channel(t,n,_,o){const e=(t+n/30)%12;return o-_*Math.min(o,1-o)*Math.max(-1,Math.min(e-3,9-e,1))}\n/**\n * @param {number} hue - Hue as degrees 0..360\n * @param {number} white - Whiteness as percentage 0..100\n * @param {number} black - Blackness as percentage 0..100\n * @return {number[]} Array of RGB components 0..1\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hwbToRgb.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hwbToRgb.js\n */function HWB_to_sRGB(t){const n=t[0],_=t[1]/100,o=t[2]/100;if(_+o>=1){const t=_/(_+o);return[t,t,t]}const e=HSL_to_sRGB([n,100,50]),a=1-_-o;return[e[0]*a+_,e[1]*a+_,e[2]*a+_]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function LCH_to_Lab(t){const n=t[2]*Math.PI/180;return[t[0],t[1]*Math.cos(n),t[1]*Math.sin(n)]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function Lab_to_LCH(t){const n=180*Math.atan2(t[2],t[1])/Math.PI;return[t[0],Math.sqrt(Math.pow(t[1],2)+Math.pow(t[2],2)),n>=0?n:n+360]}const _=[.3457/.3585,1,.2958/.3585];\n/**\n * Convert Lab to D50-adapted XYZ\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */function Lab_to_XYZ(t){const n=24389/27,o=216/24389,e=(t[0]+16)/116,a=t[1]/500+e,r=e-t[2]/200;return[(Math.pow(a,3)>o?Math.pow(a,3):(116*a-16)/n)*_[0],(t[0]>8?Math.pow((t[0]+16)/116,3):t[0]/n)*_[1],(Math.pow(r,3)>o?Math.pow(r,3):(116*r-16)/n)*_[2]]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js\n */function OKLCH_to_OKLab(t){const n=t[2]*Math.PI/180;return[t[0],t[1]*Math.cos(n),t[1]*Math.sin(n)]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js\n */function OKLab_to_OKLCH(t){const n=180*Math.atan2(t[2],t[1])/Math.PI;return[t[0],Math.sqrt(t[1]**2+t[2]**2),n>=0?n:n+360]}const o=[1.2268798758459243,-.5578149944602171,.2813910456659647,-.0405757452148008,1.112286803280317,-.0717110580655164,-.0763729366746601,-.4214933324022432,1.5869240198367816],e=[1,.3963377773761749,.2158037573099136,1,-.1055613458156586,-.0638541728258133,1,-.0894841775298119,-1.2914855480194092];\n/**\n * Given OKLab, convert to XYZ relative to D65\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js\n */\nfunction OKLab_to_XYZ(t){const n=multiplyMatrices(e,t);return multiplyMatrices(o,[n[0]**3,n[1]**3,n[2]**3])}\n/**\n * Assuming XYZ is relative to D50, convert to CIE Lab\n * from CIE standard, which now defines these as a rational fraction\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function XYZ_to_Lab(t){const n=compute_f(t[0]/_[0]),o=compute_f(t[1]/_[1]);return[116*o-16,500*(n-o),200*(o-compute_f(t[2]/_[2]))]}const a=216/24389,r=24389/27;function compute_f(t){return t>a?Math.cbrt(t):(r*t+16)/116}const l=[.819022437996703,.3619062600528904,-.1288737815209879,.0329836539323885,.9292868615863434,.0361446663506424,.0481771893596242,.2642395317527308,.6335478284694309],i=[.210454268309314,.7936177747023054,-.0040720430116193,1.9779985324311684,-2.42859224204858,.450593709617411,.0259040424655478,.7827717124575296,-.8086757549230774];\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n *\n * XYZ <-> LMS matrices recalculated for consistent reference white\n * @see https://github.com/w3c/csswg-drafts/issues/6642#issuecomment-943521484\n */\nfunction XYZ_to_OKLab(t){const n=multiplyMatrices(l,t);return multiplyMatrices(i,[Math.cbrt(n[0]),Math.cbrt(n[1]),Math.cbrt(n[2])])}const c=[30757411/17917100,-6372589/17917100,-4539589/17917100,-.666684351832489,1.616481236634939,467509/29648200,792561/44930125,-1921689/44930125,.942103121235474];\n/**\n * Convert XYZ to linear-light rec2020\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */const u=[446124/178915,-333277/357830,-72051/178915,-14852/17905,63121/35810,423/17905,11844/330415,-50337/660830,316169/330415];\n/**\n * Convert XYZ to linear-light P3\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function XYZ_to_lin_P3(t){return multiplyMatrices(u,t)}const s=[1.3457868816471583,-.25557208737979464,-.05110186497554526,-.5446307051249019,1.5082477428451468,.02052744743642139,0,0,1.2119675456389452];\n/**\n * Convert D50 XYZ to linear-light prophoto-rgb\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */const h=[1829569/896150,-506331/896150,-308931/896150,-851781/878810,1648619/878810,36519/878810,16779/1248040,-147721/1248040,1266979/1248040];\n/**\n * Convert XYZ to linear-light a98-rgb\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */const m=[12831/3959,-329/214,-1974/3959,-851781/878810,1648619/878810,36519/878810,705/12673,-2585/12673,705/667];\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function XYZ_to_lin_sRGB(t){return multiplyMatrices(m,t)}\n/**\n * Convert an array of linear-light rec2020 RGB in the range 0.0-1.0\n * to gamma corrected form ITU-R BT.2020-2 p.4\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */const D=1.09929682680944,g=.018053968510807;function gam_2020_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _>g?n*(D*Math.pow(_,.45)-(D-1)):4.5*t}\n/**\n * Convert an array of linear-light sRGB values in the range 0.0-1.0 to gamma corrected form\n * Extended transfer function:\n * For negative values, linear portion extends on reflection\n * of axis, then uses reflected pow below that\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://en.wikipedia.org/wiki/SRGB\n */function gam_sRGB(t){return[gam_sRGB_channel(t[0]),gam_sRGB_channel(t[1]),gam_sRGB_channel(t[2])]}function gam_sRGB_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _>.0031308?n*(1.055*Math.pow(_,1/2.4)-.055):12.92*t}\n/**\n * Convert an array of linear-light display-p3 RGB in the range 0.0-1.0\n * to gamma corrected form\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function gam_P3(t){return gam_sRGB(t)}\n/**\n * Convert an array of linear-light prophoto-rgb in the range 0.0-1.0\n * to gamma corrected form.\n * Transfer curve is gamma 1.8 with a small linear portion.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */const b=1/512;function gam_ProPhoto_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _>=b?n*Math.pow(_,1/1.8):16*t}\n/**\n * Convert an array of linear-light a98-rgb in the range 0.0-1.0\n * to gamma corrected form. Negative values are also now accepted\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function gam_a98rgb_channel(t){const n=t<0?-1:1,_=Math.abs(t);return n*Math.pow(_,256/563)}\n/**\n * Convert an array of rec2020 RGB values in the range 0.0 - 1.0\n * to linear light (un-companded) form.\n * ITU-R BT.2020-2 p.4\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */const f=1.09929682680944,X=.018053968510807;function lin_2020_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _<4.5*X?t/4.5:n*Math.pow((_+f-1)/f,1/.45)}const Y=[63426534/99577255,20160776/139408157,47086771/278816314,26158966/99577255,.677998071518871,8267143/139408157,0,19567812/697040785,1.0609850577107909];\n/**\n * Convert an array of linear-light rec2020 values to CIE XYZ\n * using D65 (no chromatic adaptation)\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */\n/**\n * Convert an array of of sRGB values where in-gamut values are in the range\n * [0 - 1] to linear light (un-companded) form.\n * Extended transfer function:\n * For negative values, linear portion is extended on reflection of axis,\n * then reflected power function is used.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://en.wikipedia.org/wiki/SRGB\n */\nfunction lin_sRGB(t){return[lin_sRGB_channel(t[0]),lin_sRGB_channel(t[1]),lin_sRGB_channel(t[2])]}function lin_sRGB_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _<=.04045?t/12.92:n*Math.pow((_+.055)/1.055,2.4)}\n/**\n * Convert an array of display-p3 RGB values in the range 0.0 - 1.0\n * to linear light (un-companded) form.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function lin_P3(t){return lin_sRGB(t)}const Z=[608311/1250200,189793/714400,198249/1000160,35783/156275,247089/357200,198249/2500400,0,32229/714400,5220557/5000800];\n/**\n * Convert an array of linear-light display-p3 values to CIE XYZ\n * using D65 (no chromatic adaptation)\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */function lin_P3_to_XYZ(t){return multiplyMatrices(Z,t)}\n/**\n * Convert an array of prophoto-rgb values where in-gamut Colors are in the\n * range [0.0 - 1.0] to linear light (un-companded) form. Transfer curve is\n * gamma 1.8 with a small linear portion. Extended transfer function\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */const M=16/512;function lin_ProPhoto_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _<=M?t/16:n*Math.pow(_,1.8)}const p=[.7977666449006423,.13518129740053308,.0313477341283922,.2880748288194013,.711835234241873,8993693872564e-17,0,0,.8251046025104602];\n/**\n * Convert an array of linear-light prophoto-rgb values to CIE D50 XYZ.\n * Matrix cannot be expressed in rational form, but is calculated to 64 bit accuracy.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see see https://github.com/w3c/csswg-drafts/issues/7675\n */function lin_a98rgb_channel(t){const n=t<0?-1:1,_=Math.abs(t);return n*Math.pow(_,563/256)}const d=[573536/994567,263643/1420810,187206/994567,591459/1989134,6239551/9945670,374412/4972835,53769/1989134,351524/4972835,4929758/4972835];\n/**\n * Convert an array of linear-light a98-rgb values to CIE XYZ\n * http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n * has greater numerical precision than section 4.3.5.3 of\n * https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n * but the values below were calculated from first principles\n * from the chromaticity coordinates of R G B W\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n * @see https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/matrixmaker.html\n */const L=[506752/1228815,87881/245763,12673/70218,87098/409605,175762/245763,12673/175545,7918/409605,87881/737289,1001167/1053270];\n/**\n * Convert an array of linear-light sRGB values to CIE XYZ\n * using sRGB's own white, D65 (no chromatic adaptation)\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function lin_sRGB_to_XYZ(t){return multiplyMatrices(L,t)}\n/**\n * Convert an array of gamma-corrected sRGB values in the 0.0 to 1.0 range to HSL.\n *\n * @param {Color} RGB [r, g, b]\n * - Red component 0..1\n * - Green component 0..1\n * - Blue component 0..1\n * @return {number[]} Array of HSL values: Hue as degrees 0..360, Saturation and Lightness as percentages 0..100\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/utilities.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n *\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/better-rgbToHsl.js\n */function sRGB_to_HSL(t){const n=t[0],_=t[1],o=t[2],e=Math.max(n,_,o),a=Math.min(n,_,o),r=(a+e)/2,l=e-a;let i=NaN,c=0;if(0!==Math.round(1e5*l)){const t=Math.round(1e5*r);switch(c=0===t||1e5===t?0:(e-r)/Math.min(r,1-r),e){case n:i=(_-o)/l+(_=360&&(i-=360),[i,100*c,100*r]}function sRGB_to_Hue(t){const n=t[0],_=t[1],o=t[2],e=Math.max(n,_,o);let a=NaN;const r=e-Math.min(n,_,o);if(0!==r){switch(e){case n:a=(_-o)/r+(_=360&&(a-=360),a}function sRGB_to_XYZ_D50(t){let n=t;return n=lin_sRGB(n),n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_sRGB(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n),n=gam_sRGB(n),n}function HSL_to_XYZ_D50(t){let n=t;return n=HSL_to_sRGB(n),n=lin_sRGB(n),n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_HSL(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n),n=gam_sRGB(n),n=sRGB_to_HSL(n),n}function HWB_to_XYZ_D50(t){let n=t;return n=HWB_to_sRGB(n),n=lin_sRGB(n),n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_HWB(t){let n=t;n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n);const _=gam_sRGB(n),o=Math.min(_[0],_[1],_[2]),e=1-Math.max(_[0],_[1],_[2]);return[sRGB_to_Hue(_),100*o,100*e]}function Lab_to_XYZ_D50(t){let n=t;return n=Lab_to_XYZ(n),n}function XYZ_D50_to_Lab(t){let n=t;return n=XYZ_to_Lab(n),n}function LCH_to_XYZ_D50(t){let n=t;return n=LCH_to_Lab(n),n=Lab_to_XYZ(n),n}function XYZ_D50_to_LCH(t){let n=t;return n=XYZ_to_Lab(n),n=Lab_to_LCH(n),n}function OKLab_to_XYZ_D50(t){let n=t;return n=OKLab_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_OKLab(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_OKLab(n),n}function OKLCH_to_XYZ_D50(t){let n=t;return n=OKLCH_to_OKLab(n),n=OKLab_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_OKLCH(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_OKLab(n),n=OKLab_to_OKLCH(n),n}function lin_sRGB_to_XYZ_D50(t){let n=t;return n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_lin_sRGB(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n),n}function a98_RGB_to_XYZ_D50(t){let n=t;\n/**\n * Convert an array of a98-rgb values in the range 0.0 - 1.0\n * to linear light (un-companded) form. Negative values are also now accepted\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */\nvar _;return n=[lin_a98rgb_channel((_=n)[0]),lin_a98rgb_channel(_[1]),lin_a98rgb_channel(_[2])],n=multiplyMatrices(d,n),n=D65_to_D50(n),n}function XYZ_D50_to_a98_RGB(t){let n=t;var _;return n=D50_to_D65(n),n=multiplyMatrices(h,n),n=[gam_a98rgb_channel((_=n)[0]),gam_a98rgb_channel(_[1]),gam_a98rgb_channel(_[2])],n}function P3_to_XYZ_D50(t){let n=t;return n=lin_P3(n),n=lin_P3_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_P3(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_P3(n),n=gam_P3(n),n}function rec_2020_to_XYZ_D50(t){let n=t;var _;return n=[lin_2020_channel((_=n)[0]),lin_2020_channel(_[1]),lin_2020_channel(_[2])],n=multiplyMatrices(Y,n),n=D65_to_D50(n),n}function XYZ_D50_to_rec_2020(t){let n=t;var _;return n=D50_to_D65(n),n=multiplyMatrices(c,n),n=[gam_2020_channel((_=n)[0]),gam_2020_channel(_[1]),gam_2020_channel(_[2])],n}function ProPhoto_RGB_to_XYZ_D50(t){let n=t;var _;return n=[lin_ProPhoto_channel((_=n)[0]),lin_ProPhoto_channel(_[1]),lin_ProPhoto_channel(_[2])],n=multiplyMatrices(p,n),n}function XYZ_D50_to_ProPhoto(t){let n=t;var _;return n=multiplyMatrices(s,n),n=[gam_ProPhoto_channel((_=n)[0]),gam_ProPhoto_channel(_[1]),gam_ProPhoto_channel(_[2])],n}function XYZ_D65_to_XYZ_D50(t){let n=t;return n=D65_to_D50(n),n}function XYZ_D50_to_XYZ_D65(t){let n=t;return n=D50_to_D65(n),n}function XYZ_D50_to_XYZ_D50(t){return t}function inGamut(t){return t[0]>=-1e-4&&t[0]<=1.0001&&t[1]>=-1e-4&&t[1]<=1.0001&&t[2]>=-1e-4&&t[2]<=1.0001}function clip(t){return[t[0]<0?0:t[0]>1?1:t[0],t[1]<0?0:t[1]>1?1:t[1],t[2]<0?0:t[2]>1?1:t[2]]}\n/**\n * @description Calculate deltaE OK which is the simple root sum of squares\n * @param {number[]} reference - Array of OKLab values: L as 0..1, a and b as -1..1\n * @param {number[]} sample - Array of OKLab values: L as 0..1, a and b as -1..1\n * @return {number} How different a color sample is from reference\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js\n */function deltaEOK(t,n){const[_,o,e]=t,[a,r,l]=n,i=_-a,c=o-r,u=e-l;return Math.sqrt(i**2+c**2+u**2)}const B=.02,G=1e-4;function mapGamut(t,n,_){const o=t;let e=clip(n(o)),a=deltaEOK(OKLCH_to_OKLab(_(e)),OKLCH_to_OKLab(o));if(aG;){const t=(r+l)/2;if(o[1]=t,i&&inGamut(n(o)))r=t;else if(e=clip(n(o)),a=deltaEOK(OKLCH_to_OKLab(_(e)),OKLCH_to_OKLab(o)),a0){const t=_(a);t[0]=o,t[2]=e,a=n(t)}const l=rayTraceBox(r,a);if(!l)break;a=l}return clip(a)}function rayTraceBox(t,n){let _=1/0,o=-1/0;const e=[0,0,0];for(let a=0;a<3;a++){const r=t[a],l=n[a]-r;e[a]=l;const i=0,c=1;if(l){const t=1/l,n=(i-r)*t,e=(c-r)*t;o=Math.max(Math.min(n,e),o),_=Math.min(Math.max(n,e),_)}else if(rc)return!1}return!(o>_||_<0)&&(o<0&&(o=_),!!isFinite(o)&&[t[0]+e[0]*o,t[1]+e[1]*o,t[2]+e[2]*o])}const R={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};function luminance(t){const[n,_,o]=t.map((t=>t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)));return.2126*n+.7152*_+.0722*o}function contrast_ratio_wcag_2_1(t,n){const _=luminance(t),o=luminance(n);return(Math.max(_,o)+.05)/(Math.min(_,o)+.05)}export{HSL_to_XYZ_D50,HWB_to_XYZ_D50,LCH_to_XYZ_D50,Lab_to_XYZ_D50,OKLCH_to_OKLab,OKLCH_to_XYZ_D50,OKLab_to_OKLCH,OKLab_to_XYZ,OKLab_to_XYZ_D50,P3_to_XYZ_D50,ProPhoto_RGB_to_XYZ_D50,XYZ_D50_to_HSL,XYZ_D50_to_HWB,XYZ_D50_to_LCH,XYZ_D50_to_Lab,XYZ_D50_to_OKLCH,XYZ_D50_to_OKLab,XYZ_D50_to_P3,XYZ_D50_to_ProPhoto,XYZ_D50_to_XYZ_D50,XYZ_D50_to_XYZ_D65,XYZ_D50_to_a98_RGB,XYZ_D50_to_lin_sRGB,XYZ_D50_to_rec_2020,XYZ_D50_to_sRGB,XYZ_D65_to_XYZ_D50,XYZ_to_OKLab,XYZ_to_lin_P3,XYZ_to_lin_sRGB,a98_RGB_to_XYZ_D50,clip,contrast_ratio_wcag_2_1,gam_P3,gam_sRGB,inGamut,lin_P3,lin_P3_to_XYZ,lin_sRGB,lin_sRGB_to_XYZ,lin_sRGB_to_XYZ_D50,mapGamut,mapGamutRayTrace,R as namedColors,rec_2020_to_XYZ_D50,sRGB_to_XYZ_D50};\n", "import{TokenType as e,NumberType as a,isTokenIdent as n,isTokenPercentage as r,isTokenNumber as o,isTokenDelim as t,isTokenNumeric as l,isTokenComma as s,isTokenDimension as u,isTokenHash as c}from\"@csstools/css-tokenizer\";import{XYZ_D65_to_XYZ_D50 as i,XYZ_D50_to_XYZ_D50 as h,OKLCH_to_XYZ_D50 as m,LCH_to_XYZ_D50 as p,OKLab_to_XYZ_D50 as N,Lab_to_XYZ_D50 as b,HWB_to_XYZ_D50 as v,HSL_to_XYZ_D50 as g,ProPhoto_RGB_to_XYZ_D50 as f,a98_RGB_to_XYZ_D50 as d,rec_2020_to_XYZ_D50 as y,P3_to_XYZ_D50 as _,lin_sRGB_to_XYZ_D50 as C,sRGB_to_XYZ_D50 as w,XYZ_D50_to_XYZ_D65 as x,XYZ_D50_to_OKLab as H,XYZ_D50_to_OKLCH as L,XYZ_D50_to_LCH as k,XYZ_D50_to_Lab as P,XYZ_D50_to_HWB as S,XYZ_D50_to_HSL as z,XYZ_D50_to_a98_RGB as D,XYZ_D50_to_ProPhoto as F,XYZ_D50_to_rec_2020 as Z,XYZ_D50_to_P3 as M,XYZ_D50_to_lin_sRGB as R,XYZ_D50_to_sRGB as B,namedColors as G,inGamut as T,clip as V,gam_sRGB as A,mapGamutRayTrace as X,OKLCH_to_OKLab as Y,OKLab_to_XYZ as K,XYZ_to_lin_sRGB as I,lin_sRGB_to_XYZ as O,XYZ_to_OKLab as E,OKLab_to_OKLCH as W,contrast_ratio_wcag_2_1 as U,gam_P3 as $,XYZ_to_lin_P3 as j,lin_P3_to_XYZ as q}from\"@csstools/color-helpers\";import{isWhitespaceNode as J,isCommentNode as Q,isTokenNode as ee,isFunctionNode as ae,TokenNode as ne,FunctionNode as re,WhitespaceNode as oe}from\"@csstools/css-parser-algorithms\";import{mathFunctionNames as te,calcFromComponentValues as le}from\"@csstools/css-calc\";var se,ue;function convertNaNToZero(e){return[Number.isNaN(e[0])?0:e[0],Number.isNaN(e[1])?0:e[1],Number.isNaN(e[2])?0:e[2]]}function colorData_to_XYZ_D50(e){switch(e.colorNotation){case se.HEX:case se.RGB:case se.sRGB:return{...e,colorNotation:se.XYZ_D50,channels:w(convertNaNToZero(e.channels))};case se.Linear_sRGB:return{...e,colorNotation:se.XYZ_D50,channels:C(convertNaNToZero(e.channels))};case se.Display_P3:return{...e,colorNotation:se.XYZ_D50,channels:_(convertNaNToZero(e.channels))};case se.Rec2020:return{...e,colorNotation:se.XYZ_D50,channels:y(convertNaNToZero(e.channels))};case se.A98_RGB:return{...e,colorNotation:se.XYZ_D50,channels:d(convertNaNToZero(e.channels))};case se.ProPhoto_RGB:return{...e,colorNotation:se.XYZ_D50,channels:f(convertNaNToZero(e.channels))};case se.HSL:return{...e,colorNotation:se.XYZ_D50,channels:g(convertNaNToZero(e.channels))};case se.HWB:return{...e,colorNotation:se.XYZ_D50,channels:v(convertNaNToZero(e.channels))};case se.Lab:return{...e,colorNotation:se.XYZ_D50,channels:b(convertNaNToZero(e.channels))};case se.OKLab:return{...e,colorNotation:se.XYZ_D50,channels:N(convertNaNToZero(e.channels))};case se.LCH:return{...e,colorNotation:se.XYZ_D50,channels:p(convertNaNToZero(e.channels))};case se.OKLCH:return{...e,colorNotation:se.XYZ_D50,channels:m(convertNaNToZero(e.channels))};case se.XYZ_D50:return{...e,colorNotation:se.XYZ_D50,channels:h(convertNaNToZero(e.channels))};case se.XYZ_D65:return{...e,colorNotation:se.XYZ_D50,channels:i(convertNaNToZero(e.channels))};default:throw new Error(\"Unsupported color notation\")}}!function(e){e.A98_RGB=\"a98-rgb\",e.Display_P3=\"display-p3\",e.HEX=\"hex\",e.HSL=\"hsl\",e.HWB=\"hwb\",e.LCH=\"lch\",e.Lab=\"lab\",e.Linear_sRGB=\"srgb-linear\",e.OKLCH=\"oklch\",e.OKLab=\"oklab\",e.ProPhoto_RGB=\"prophoto-rgb\",e.RGB=\"rgb\",e.sRGB=\"srgb\",e.Rec2020=\"rec2020\",e.XYZ_D50=\"xyz-d50\",e.XYZ_D65=\"xyz-d65\"}(se||(se={})),function(e){e.ColorKeyword=\"color-keyword\",e.HasAlpha=\"has-alpha\",e.HasDimensionValues=\"has-dimension-values\",e.HasNoneKeywords=\"has-none-keywords\",e.HasNumberValues=\"has-number-values\",e.HasPercentageAlpha=\"has-percentage-alpha\",e.HasPercentageValues=\"has-percentage-values\",e.HasVariableAlpha=\"has-variable-alpha\",e.Hex=\"hex\",e.LegacyHSL=\"legacy-hsl\",e.LegacyRGB=\"legacy-rgb\",e.NamedColor=\"named-color\",e.RelativeColorSyntax=\"relative-color-syntax\",e.ColorMix=\"color-mix\",e.ContrastColor=\"contrast-color\",e.Experimental=\"experimental\"}(ue||(ue={}));const ce=new Set([se.A98_RGB,se.Display_P3,se.HEX,se.Linear_sRGB,se.ProPhoto_RGB,se.RGB,se.sRGB,se.Rec2020,se.XYZ_D50,se.XYZ_D65]);function colorDataTo(e,a){const n={...e};if(e.colorNotation!==a){const e=colorData_to_XYZ_D50(n);switch(a){case se.HEX:case se.RGB:n.colorNotation=se.RGB,n.channels=B(e.channels);break;case se.sRGB:n.colorNotation=se.sRGB,n.channels=B(e.channels);break;case se.Linear_sRGB:n.colorNotation=se.Linear_sRGB,n.channels=R(e.channels);break;case se.Display_P3:n.colorNotation=se.Display_P3,n.channels=M(e.channels);break;case se.Rec2020:n.colorNotation=se.Rec2020,n.channels=Z(e.channels);break;case se.ProPhoto_RGB:n.colorNotation=se.ProPhoto_RGB,n.channels=F(e.channels);break;case se.A98_RGB:n.colorNotation=se.A98_RGB,n.channels=D(e.channels);break;case se.HSL:n.colorNotation=se.HSL,n.channels=z(e.channels);break;case se.HWB:n.colorNotation=se.HWB,n.channels=S(e.channels);break;case se.Lab:n.colorNotation=se.Lab,n.channels=P(e.channels);break;case se.LCH:n.colorNotation=se.LCH,n.channels=k(e.channels);break;case se.OKLCH:n.colorNotation=se.OKLCH,n.channels=L(e.channels);break;case se.OKLab:n.colorNotation=se.OKLab,n.channels=H(e.channels);break;case se.XYZ_D50:n.colorNotation=se.XYZ_D50,n.channels=h(e.channels);break;case se.XYZ_D65:n.colorNotation=se.XYZ_D65,n.channels=x(e.channels);break;default:throw new Error(\"Unsupported color notation\")}}else n.channels=convertNaNToZero(e.channels);if(a===e.colorNotation)n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2]);else if(ce.has(a)&&ce.has(e.colorNotation))n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2]);else switch(a){case se.HSL:switch(e.colorNotation){case se.HWB:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0]);break;case se.Lab:case se.OKLab:n.channels=carryForwardMissingComponents(e.channels,[2],n.channels,[0]);break;case se.LCH:case se.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[2,1,0])}break;case se.HWB:switch(e.colorNotation){case se.HSL:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0]);break;case se.LCH:case se.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[2])}break;case se.Lab:case se.OKLab:switch(e.colorNotation){case se.HSL:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[2]);break;case se.Lab:case se.OKLab:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2]);break;case se.LCH:case se.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0])}break;case se.LCH:case se.OKLCH:switch(e.colorNotation){case se.HSL:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[2,1,0]);break;case se.HWB:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[2]);break;case se.Lab:case se.OKLab:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0]);break;case se.LCH:case se.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2])}}return n.channels=convertPowerlessComponentsToMissingComponents(n.channels,a),n}function convertPowerlessComponentsToMissingComponents(e,a){const n=[...e];switch(a){case se.HSL:!Number.isNaN(n[1])&&reducePrecision(n[1],4)<=0&&(n[0]=NaN);break;case se.HWB:Math.max(0,reducePrecision(n[1],4))+Math.max(0,reducePrecision(n[2],4))>=100&&(n[0]=NaN);break;case se.LCH:!Number.isNaN(n[1])&&reducePrecision(n[1],4)<=0&&(n[2]=NaN);break;case se.OKLCH:!Number.isNaN(n[1])&&reducePrecision(n[1],6)<=0&&(n[2]=NaN)}return n}function convertPowerlessComponentsToZeroValuesForDisplay(e,a){const n=[...e];switch(a){case se.HSL:(reducePrecision(n[2])<=0||reducePrecision(n[2])>=100)&&(n[0]=NaN,n[1]=NaN),reducePrecision(n[1])<=0&&(n[0]=NaN);break;case se.HWB:Math.max(0,reducePrecision(n[1]))+Math.max(0,reducePrecision(n[2]))>=100&&(n[0]=NaN);break;case se.Lab:(reducePrecision(n[0])<=0||reducePrecision(n[0])>=100)&&(n[1]=NaN,n[2]=NaN);break;case se.LCH:reducePrecision(n[1])<=0&&(n[2]=NaN),(reducePrecision(n[0])<=0||reducePrecision(n[0])>=100)&&(n[1]=NaN,n[2]=NaN);break;case se.OKLab:(reducePrecision(n[0])<=0||reducePrecision(n[0])>=1)&&(n[1]=NaN,n[2]=NaN);break;case se.OKLCH:reducePrecision(n[1])<=0&&(n[2]=NaN),(reducePrecision(n[0])<=0||reducePrecision(n[0])>=1)&&(n[1]=NaN,n[2]=NaN)}return n}function carryForwardMissingComponents(e,a,n,r){const o=[...n];for(const n of a)Number.isNaN(e[a[n]])&&(o[r[n]]=NaN);return o}function normalizeRelativeColorDataChannels(e){const a=new Map;switch(e.colorNotation){case se.RGB:case se.HEX:a.set(\"r\",dummyNumberToken(255*e.channels[0])),a.set(\"g\",dummyNumberToken(255*e.channels[1])),a.set(\"b\",dummyNumberToken(255*e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case se.HSL:a.set(\"h\",dummyNumberToken(e.channels[0])),a.set(\"s\",dummyNumberToken(e.channels[1])),a.set(\"l\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case se.HWB:a.set(\"h\",dummyNumberToken(e.channels[0])),a.set(\"w\",dummyNumberToken(e.channels[1])),a.set(\"b\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case se.Lab:case se.OKLab:a.set(\"l\",dummyNumberToken(e.channels[0])),a.set(\"a\",dummyNumberToken(e.channels[1])),a.set(\"b\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case se.LCH:case se.OKLCH:a.set(\"l\",dummyNumberToken(e.channels[0])),a.set(\"c\",dummyNumberToken(e.channels[1])),a.set(\"h\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case se.sRGB:case se.A98_RGB:case se.Display_P3:case se.Rec2020:case se.Linear_sRGB:case se.ProPhoto_RGB:a.set(\"r\",dummyNumberToken(e.channels[0])),a.set(\"g\",dummyNumberToken(e.channels[1])),a.set(\"b\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case se.XYZ_D50:case se.XYZ_D65:a.set(\"x\",dummyNumberToken(e.channels[0])),a.set(\"y\",dummyNumberToken(e.channels[1])),a.set(\"z\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha))}return a}function noneToZeroInRelativeColorDataChannels(e){const a=new Map(e);for(const[n,r]of e)Number.isNaN(r[4].value)&&a.set(n,dummyNumberToken(0));return a}function dummyNumberToken(n){return Number.isNaN(n)?[e.Number,\"none\",-1,-1,{value:Number.NaN,type:a.Number}]:[e.Number,n.toString(),-1,-1,{value:n,type:a.Number}]}function reducePrecision(e,a=7){if(Number.isNaN(e))return 0;const n=Math.pow(10,a);return Math.round(e*n)/n}function colorDataFitsRGB_Gamut(e){const a={...e,channels:[...e.channels]};a.channels=convertPowerlessComponentsToZeroValuesForDisplay(a.channels,a.colorNotation);return!colorDataTo(a,se.RGB).channels.find((e=>e<-1e-5||e>1.00001))}function colorDataFitsDisplayP3_Gamut(e){const a={...e,channels:[...e.channels]};a.channels=convertPowerlessComponentsToZeroValuesForDisplay(a.channels,a.colorNotation);return!colorDataTo(a,se.Display_P3).channels.find((e=>e<-1e-5||e>1.00001))}function normalize(e,a,n,r){return Math.min(Math.max(e/a,n),r)}const ie=/[A-Z]/g;function toLowerCaseAZ(e){return e.replace(ie,(e=>String.fromCharCode(e.charCodeAt(0)+32)))}function normalize_Color_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(ue.HasPercentageValues);let n=normalize(t[4].value,100,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=normalize(t[4].value,1,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}const he=new Set([\"srgb\",\"srgb-linear\",\"display-p3\",\"a98-rgb\",\"prophoto-rgb\",\"rec2020\",\"xyz\",\"xyz-d50\",\"xyz-d65\"]);function color$1(e,a){const r=[],s=[],u=[],c=[];let i,h,m=!1,p=!1;const N={colorNotation:se.sRGB,channels:[0,0,0],alpha:1,syntaxFlags:new Set([])};let b=r;for(let o=0;o=0){u=c.value[4].value;continue}}return!1}if(!t)return!1;n.push({color:t,percentage:u}),t=!1,u=!1}}if(t&&n.push({color:t,percentage:u}),2!==n.length)return!1;let c=n[0].percentage,i=n[1].percentage;return(!1===c||!(c<0||c>100))&&((!1===i||!(i<0||i>100))&&(!1===c&&!1===i?(c=50,i=50):!1!==c&&!1===i?i=100-c:!1===c&&!1!==i&&(c=100-i),(0!==c||0!==i)&&(!1!==c&&!1!==i&&(c+i>100&&(c=c/(c+i)*100,i=i/(c+i)*100),c+i<100&&(o=(c+i)/100,c=c/(c+i)*100,i=i/(c+i)*100),{a:{color:n[0].color,percentage:c},b:{color:n[1].color,percentage:i},alphaMultiplier:o}))))}function colorMixRectangular(e,a){if(!a)return!1;const n=a.a.color,r=a.b.color,o=a.a.percentage/100;let t=n.channels,l=r.channels,s=se.RGB,u=n.alpha;if(\"number\"!=typeof u)return!1;let c=r.alpha;if(\"number\"!=typeof c)return!1;switch(u=Number.isNaN(u)?c:u,c=Number.isNaN(c)?u:c,e){case\"srgb\":s=se.RGB;break;case\"srgb-linear\":s=se.Linear_sRGB;break;case\"display-p3\":s=se.Display_P3;break;case\"a98-rgb\":s=se.A98_RGB;break;case\"prophoto-rgb\":s=se.ProPhoto_RGB;break;case\"rec2020\":s=se.Rec2020;break;case\"lab\":s=se.Lab;break;case\"oklab\":s=se.OKLab;break;case\"xyz-d50\":s=se.XYZ_D50;break;case\"xyz\":case\"xyz-d65\":s=se.XYZ_D65}t=colorDataTo(n,s).channels,l=colorDataTo(r,s).channels,t[0]=fillInMissingComponent(t[0],l[0]),l[0]=fillInMissingComponent(l[0],t[0]),t[1]=fillInMissingComponent(t[1],l[1]),l[1]=fillInMissingComponent(l[1],t[1]),t[2]=fillInMissingComponent(t[2],l[2]),l[2]=fillInMissingComponent(l[2],t[2]),t[0]=premultiply(t[0],u),t[1]=premultiply(t[1],u),t[2]=premultiply(t[2],u),l[0]=premultiply(l[0],c),l[1]=premultiply(l[1],c),l[2]=premultiply(l[2],c);const i=interpolate(u,c,o),h={colorNotation:s,channels:[un_premultiply(interpolate(t[0],l[0],o),i),un_premultiply(interpolate(t[1],l[1],o),i),un_premultiply(interpolate(t[2],l[2],o),i)],alpha:i*a.alphaMultiplier,syntaxFlags:new Set([ue.ColorMix])};return(a.a.color.syntaxFlags.has(ue.Experimental)||a.b.color.syntaxFlags.has(ue.Experimental))&&h.syntaxFlags.add(ue.Experimental),h}function colorMixPolar(e,a,n){if(!n)return!1;const r=n.a.color,o=n.b.color,t=n.a.percentage/100;let l=r.channels,s=o.channels,u=0,c=0,i=0,h=0,m=0,p=0,N=se.RGB,b=r.alpha;if(\"number\"!=typeof b)return!1;let v=o.alpha;if(\"number\"!=typeof v)return!1;switch(b=Number.isNaN(b)?v:b,v=Number.isNaN(v)?b:v,e){case\"hsl\":N=se.HSL;break;case\"hwb\":N=se.HWB;break;case\"lch\":N=se.LCH;break;case\"oklch\":N=se.OKLCH}switch(l=colorDataTo(r,N).channels,s=colorDataTo(o,N).channels,e){case\"hsl\":case\"hwb\":u=l[0],c=s[0],i=l[1],h=s[1],m=l[2],p=s[2];break;case\"lch\":case\"oklch\":i=l[0],h=s[0],m=l[1],p=s[1],u=l[2],c=s[2]}u=fillInMissingComponent(u,c),Number.isNaN(u)&&(u=0),c=fillInMissingComponent(c,u),Number.isNaN(c)&&(c=0),i=fillInMissingComponent(i,h),h=fillInMissingComponent(h,i),m=fillInMissingComponent(m,p),p=fillInMissingComponent(p,m);const g=c-u;switch(a){case\"shorter\":g>180?u+=360:g<-180&&(c+=360);break;case\"longer\":-1800?u+=360:c+=360);break;case\"increasing\":g<0&&(c+=360);break;case\"decreasing\":g>0&&(u+=360);break;default:throw new Error(\"Unknown hue interpolation method\")}i=premultiply(i,b),m=premultiply(m,b),h=premultiply(h,v),p=premultiply(p,v);let f=[0,0,0];const d=interpolate(b,v,t);switch(e){case\"hsl\":case\"hwb\":f=[interpolate(u,c,t),un_premultiply(interpolate(i,h,t),d),un_premultiply(interpolate(m,p,t),d)];break;case\"lch\":case\"oklch\":f=[un_premultiply(interpolate(i,h,t),d),un_premultiply(interpolate(m,p,t),d),interpolate(u,c,t)]}const y={colorNotation:N,channels:f,alpha:d*n.alphaMultiplier,syntaxFlags:new Set([ue.ColorMix])};return(n.a.color.syntaxFlags.has(ue.Experimental)||n.b.color.syntaxFlags.has(ue.Experimental))&&y.syntaxFlags.add(ue.Experimental),y}function fillInMissingComponent(e,a){return Number.isNaN(e)?a:e}function interpolate(e,a,n){return e*n+a*(1-n)}function premultiply(e,a){return Number.isNaN(a)?e:Number.isNaN(e)?NaN:e*a}function un_premultiply(e,a){return 0===a||Number.isNaN(a)?e:Number.isNaN(e)?NaN:e/a}function hex(e){const a=toLowerCaseAZ(e[4].value);if(a.match(/[^a-f0-9]/))return!1;const n={colorNotation:se.HEX,channels:[0,0,0],alpha:1,syntaxFlags:new Set([ue.Hex])},r=a.length;if(3===r){const e=a[0],r=a[1],o=a[2];return n.channels=[parseInt(e+e,16)/255,parseInt(r+r,16)/255,parseInt(o+o,16)/255],n}if(6===r){const e=a[0]+a[1],r=a[2]+a[3],o=a[4]+a[5];return n.channels=[parseInt(e,16)/255,parseInt(r,16)/255,parseInt(o,16)/255],n}if(4===r){const e=a[0],r=a[1],o=a[2],t=a[3];return n.channels=[parseInt(e+e,16)/255,parseInt(r+r,16)/255,parseInt(o+o,16)/255],n.alpha=parseInt(t+t,16)/255,n.syntaxFlags.add(ue.HasAlpha),n}if(8===r){const e=a[0]+a[1],r=a[2]+a[3],o=a[4]+a[5],t=a[6]+a[7];return n.channels=[parseInt(e,16)/255,parseInt(r,16)/255,parseInt(o,16)/255],n.alpha=parseInt(t,16)/255,n.syntaxFlags.add(ue.HasAlpha),n}return!1}function normalizeHue(n){if(o(n))return n[4].value=n[4].value%360,n[1]=n[4].value.toString(),n;if(u(n)){let r=n[4].value;switch(toLowerCaseAZ(n[4].unit)){case\"deg\":break;case\"rad\":r=180*n[4].value/Math.PI;break;case\"grad\":r=.9*n[4].value;break;case\"turn\":r=360*n[4].value;break;default:return!1}return r%=360,[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}return!1}function normalize_legacy_HSL_ChannelValues(n,t,l){if(0===t){const e=normalizeHue(n);return!1!==e&&(u(n)&&l.syntaxFlags.add(ue.HasDimensionValues),e)}if(r(n)){3===t?l.syntaxFlags.add(ue.HasPercentageAlpha):l.syntaxFlags.add(ue.HasPercentageValues);let r=normalize(n[4].value,1,0,100);return 3===t&&(r=normalize(n[4].value,100,0,1)),[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}if(o(n)){if(3!==t)return!1;let r=normalize(n[4].value,1,0,100);return 3===t&&(r=normalize(n[4].value,1,0,1)),[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}return!1}function normalize_modern_HSL_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(0===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(ue.HasDimensionValues),e)}if(r(t)){3===l?s.syntaxFlags.add(ue.HasPercentageAlpha):s.syntaxFlags.add(ue.HasPercentageValues);let n=t[4].value;return 3===l?n=normalize(t[4].value,100,0,1):1===l&&(n=normalize(t[4].value,1,0,2147483647)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=t[4].value;return 3===l?n=normalize(t[4].value,1,0,1):1===l&&(n=normalize(t[4].value,1,0,2147483647)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function threeChannelLegacySyntax(e,a,n,r){const t=[],u=[],c=[],i=[],h={colorNotation:n,channels:[0,0,0],alpha:1,syntaxFlags:new Set(r)};let m=t;for(let a=0;aee(e)&&s(e.value)))){const a=hslCommaSeparated(e);if(!1!==a)return a}{const n=hslSpaceSeparated(e,a);if(!1!==n)return n}return!1}function hslCommaSeparated(e){return threeChannelLegacySyntax(e,normalize_legacy_HSL_ChannelValues,se.HSL,[ue.LegacyHSL])}function hslSpaceSeparated(e,a){return threeChannelSpaceSeparated(e,normalize_modern_HSL_ChannelValues,se.HSL,[],a)}function normalize_HWB_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(0===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(ue.HasDimensionValues),e)}if(r(t)){3===l?s.syntaxFlags.add(ue.HasPercentageAlpha):s.syntaxFlags.add(ue.HasPercentageValues);let n=t[4].value;return 3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=t[4].value;return 3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function normalize_Lab_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(ue.HasPercentageValues);let n=normalize(t[4].value,1,0,100);return 1===l||2===l?n=normalize(t[4].value,.8,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=normalize(t[4].value,1,0,100);return 1===l||2===l?n=normalize(t[4].value,1,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function lab(e,a){return threeChannelSpaceSeparated(e,normalize_Lab_ChannelValues,se.Lab,[],a)}function normalize_LCH_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(2===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(ue.HasDimensionValues),e)}if(r(t)){3!==l&&s.syntaxFlags.add(ue.HasPercentageValues);let n=normalize(t[4].value,1,0,100);return 1===l?n=normalize(t[4].value,100/150,0,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=normalize(t[4].value,1,0,100);return 1===l?n=normalize(t[4].value,1,0,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function lch(e,a){return threeChannelSpaceSeparated(e,normalize_LCH_ChannelValues,se.LCH,[],a)}const be=new Map;for(const[e,a]of Object.entries(G))be.set(e,a);function namedColor(e){const a=be.get(toLowerCaseAZ(e));return!!a&&{colorNotation:se.RGB,channels:[a[0]/255,a[1]/255,a[2]/255],alpha:1,syntaxFlags:new Set([ue.ColorKeyword,ue.NamedColor])}}function normalize_OKLab_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(ue.HasPercentageValues);let n=normalize(t[4].value,100,0,1);return 1===l||2===l?n=normalize(t[4].value,250,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=normalize(t[4].value,1,0,1);return 1===l||2===l?n=normalize(t[4].value,1,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function oklab(e,a){return threeChannelSpaceSeparated(e,normalize_OKLab_ChannelValues,se.OKLab,[],a)}function normalize_OKLCH_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(2===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(ue.HasDimensionValues),e)}if(r(t)){3!==l&&s.syntaxFlags.add(ue.HasPercentageValues);let n=normalize(t[4].value,100,0,1);return 1===l?n=normalize(t[4].value,250,0,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=normalize(t[4].value,1,0,1);return 1===l?n=normalize(t[4].value,1,0,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function oklch(e,a){return threeChannelSpaceSeparated(e,normalize_OKLCH_ChannelValues,se.OKLCH,[],a)}function normalize_legacy_sRGB_ChannelValues(n,t,l){if(r(n)){3===t?l.syntaxFlags.add(ue.HasPercentageAlpha):l.syntaxFlags.add(ue.HasPercentageValues);const r=normalize(n[4].value,100,0,1);return[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}if(o(n)){3!==t&&l.syntaxFlags.add(ue.HasNumberValues);let r=normalize(n[4].value,255,0,1);return 3===t&&(r=normalize(n[4].value,1,0,1)),[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}return!1}function normalize_modern_sRGB_ChannelValues(t,l,s){if(n(t)&&\"none\"===t[4].value.toLowerCase())return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(ue.HasPercentageValues);let n=normalize(t[4].value,100,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=normalize(t[4].value,255,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function rgb(e,a){if(e.value.some((e=>ee(e)&&s(e.value)))){const a=rgbCommaSeparated(e);if(!1!==a)return(!a.syntaxFlags.has(ue.HasNumberValues)||!a.syntaxFlags.has(ue.HasPercentageValues))&&a}else{const n=rgbSpaceSeparated(e,a);if(!1!==n)return n}return!1}function rgbCommaSeparated(e){return threeChannelLegacySyntax(e,normalize_legacy_sRGB_ChannelValues,se.RGB,[ue.LegacyRGB])}function rgbSpaceSeparated(e,a){return threeChannelSpaceSeparated(e,normalize_modern_sRGB_ChannelValues,se.RGB,[],a)}function XYZ_D50_to_sRGB_Gamut(e){const a=B(e);if(T(a))return V(a);let n=e;return n=L(n),n[0]<1e-6&&(n=[0,0,0]),n[0]>.999999&&(n=[1,0,0]),A(X(n,oklch_to_lin_srgb,lin_srgb_to_oklch))}function oklch_to_lin_srgb(e){return e=Y(e),e=K(e),I(e)}function lin_srgb_to_oklch(e){return e=O(e),e=E(e),W(e)}function contrastColor(e,a){let r=!1,o=!1;for(let t=0;ts?[1,1,1]:[0,0,0],t}function XYZ_D50_to_P3_Gamut(e){const a=M(e);if(T(a))return V(a);let n=e;return n=L(n),n[0]<1e-6&&(n=[0,0,0]),n[0]>.999999&&(n=[1,0,0]),$(X(n,oklch_to_lin_p3,lin_p3_to_oklch))}function oklch_to_lin_p3(e){return e=Y(e),e=K(e),j(e)}function lin_p3_to_oklch(e){return e=q(e),e=E(e),W(e)}function toPrecision(e,a=7){e=+e,a=+a;const n=(Math.floor(Math.abs(e))+\"\").length;if(a>n)return+e.toFixed(a-n);{const r=10**(n-a);return Math.round(e/r)*r}}function serializeWithAlpha(n,r,o,t){const l=[e.CloseParen,\")\",-1,-1,void 0];if(\"number\"==typeof n.alpha){const s=Math.min(1,Math.max(0,toPrecision(Number.isNaN(n.alpha)?0:n.alpha)));return 1===toPrecision(s,4)?new re(r,l,t):new re(r,l,[...t,new oe([o]),new ne([e.Delim,\"/\",-1,-1,{value:\"/\"}]),new oe([o]),new ne([e.Number,toPrecision(s,4).toString(),-1,-1,{value:n.alpha,type:a.Integer}])])}return new re(r,l,[...t,new oe([o]),new ne([e.Delim,\"/\",-1,-1,{value:\"/\"}]),new oe([o]),n.alpha])}function serializeP3(n,r=!0){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let o=n.channels.map((e=>Number.isNaN(e)?0:e));r?o=XYZ_D50_to_P3_Gamut(colorData_to_XYZ_D50(n).channels):n.colorNotation!==se.Display_P3&&(o=M(colorData_to_XYZ_D50(n).channels));const t=r?Math.min(1,Math.max(0,toPrecision(o[0],6))):toPrecision(o[0],6),l=r?Math.min(1,Math.max(0,toPrecision(o[1],6))):toPrecision(o[1],6),s=r?Math.min(1,Math.max(0,toPrecision(o[2],6))):toPrecision(o[2],6),u=[e.Function,\"color(\",-1,-1,{value:\"color\"}],c=[e.Whitespace,\" \",-1,-1,void 0];return serializeWithAlpha(n,u,c,[new ne([e.Ident,\"display-p3\",-1,-1,{value:\"display-p3\"}]),new oe([c]),new ne([e.Number,t.toString(),-1,-1,{value:o[0],type:a.Number}]),new oe([c]),new ne([e.Number,l.toString(),-1,-1,{value:o[1],type:a.Number}]),new oe([c]),new ne([e.Number,s.toString(),-1,-1,{value:o[2],type:a.Number}])])}function serializeRGB(n,r=!0){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let o=n.channels.map((e=>Number.isNaN(e)?0:e));o=r?XYZ_D50_to_sRGB_Gamut(colorData_to_XYZ_D50(n).channels):B(colorData_to_XYZ_D50(n).channels);const t=Math.min(255,Math.max(0,Math.round(255*toPrecision(o[0])))),l=Math.min(255,Math.max(0,Math.round(255*toPrecision(o[1])))),s=Math.min(255,Math.max(0,Math.round(255*toPrecision(o[2])))),u=[e.CloseParen,\")\",-1,-1,void 0],c=[e.Whitespace,\" \",-1,-1,void 0],i=[e.Comma,\",\",-1,-1,void 0],h=[new ne([e.Number,t.toString(),-1,-1,{value:Math.min(255,255*Math.max(0,o[0])),type:a.Integer}]),new ne(i),new oe([c]),new ne([e.Number,l.toString(),-1,-1,{value:Math.min(255,255*Math.max(0,o[1])),type:a.Integer}]),new ne(i),new oe([c]),new ne([e.Number,s.toString(),-1,-1,{value:Math.min(255,255*Math.max(0,o[2])),type:a.Integer}])];if(\"number\"==typeof n.alpha){const r=Math.min(1,Math.max(0,toPrecision(Number.isNaN(n.alpha)?0:n.alpha)));return 1===toPrecision(r,4)?new re([e.Function,\"rgb(\",-1,-1,{value:\"rgb\"}],u,h):new re([e.Function,\"rgba(\",-1,-1,{value:\"rgba\"}],u,[...h,new ne(i),new oe([c]),new ne([e.Number,toPrecision(r,4).toString(),-1,-1,{value:n.alpha,type:a.Number}])])}return new re([e.Function,\"rgba(\",-1,-1,{value:\"rgba\"}],u,[...h,new ne(i),new oe([c]),n.alpha])}function serializeHSL(n,r=!0){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let o=n.channels.map((e=>Number.isNaN(e)?0:e));o=z(r?w(XYZ_D50_to_sRGB_Gamut(colorData_to_XYZ_D50(n).channels)):colorData_to_XYZ_D50(n).channels),o=o.map((e=>Number.isNaN(e)?0:e));const t=Math.min(360,Math.max(0,Math.round(toPrecision(o[0])))),l=Math.min(100,Math.max(0,Math.round(toPrecision(o[1])))),s=Math.min(100,Math.max(0,Math.round(toPrecision(o[2])))),u=[e.CloseParen,\")\",-1,-1,void 0],c=[e.Whitespace,\" \",-1,-1,void 0],i=[e.Comma,\",\",-1,-1,void 0],h=[new ne([e.Number,t.toString(),-1,-1,{value:o[0],type:a.Integer}]),new ne(i),new oe([c]),new ne([e.Percentage,l.toString()+\"%\",-1,-1,{value:o[1]}]),new ne(i),new oe([c]),new ne([e.Percentage,s.toString()+\"%\",-1,-1,{value:o[2]}])];if(\"number\"==typeof n.alpha){const r=Math.min(1,Math.max(0,toPrecision(Number.isNaN(n.alpha)?0:n.alpha)));return 1===toPrecision(r,4)?new re([e.Function,\"hsl(\",-1,-1,{value:\"hsl\"}],u,h):new re([e.Function,\"hsla(\",-1,-1,{value:\"hsla\"}],u,[...h,new ne(i),new oe([c]),new ne([e.Number,toPrecision(r,4).toString(),-1,-1,{value:n.alpha,type:a.Number}])])}return new re([e.Function,\"hsla(\",-1,-1,{value:\"hsla\"}],u,[...h,new ne(i),new oe([c]),n.alpha])}function serializeOKLCH(n){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let r=n.channels.map((e=>Number.isNaN(e)?0:e));n.colorNotation!==se.OKLCH&&(r=L(colorData_to_XYZ_D50(n).channels));const o=toPrecision(r[0],6),t=toPrecision(r[1],6),l=toPrecision(r[2],6),s=[e.Function,\"oklch(\",-1,-1,{value:\"oklch\"}],u=[e.Whitespace,\" \",-1,-1,void 0];return serializeWithAlpha(n,s,u,[new ne([e.Number,o.toString(),-1,-1,{value:r[0],type:a.Number}]),new oe([u]),new ne([e.Number,t.toString(),-1,-1,{value:r[1],type:a.Number}]),new oe([u]),new ne([e.Number,l.toString(),-1,-1,{value:r[2],type:a.Number}])])}function color(e){if(ae(e)){switch(toLowerCaseAZ(e.getName())){case\"rgb\":case\"rgba\":return rgb(e,color);case\"hsl\":case\"hsla\":return hsl(e,color);case\"hwb\":return a=color,threeChannelSpaceSeparated(e,normalize_HWB_ChannelValues,se.HWB,[],a);case\"lab\":return lab(e,color);case\"lch\":return lch(e,color);case\"oklab\":return oklab(e,color);case\"oklch\":return oklch(e,color);case\"color\":return color$1(e,color);case\"color-mix\":return colorMix(e,color);case\"contrast-color\":return contrastColor(e,color)}}var a;if(ee(e)){if(c(e.value))return hex(e.value);if(n(e.value)){const a=namedColor(e.value[4].value);return!1!==a?a:\"transparent\"===toLowerCaseAZ(e.value[4].value)&&{colorNotation:se.RGB,channels:[0,0,0],alpha:0,syntaxFlags:new Set([ue.ColorKeyword])}}}return!1}export{se as ColorNotation,ue as SyntaxFlag,color,colorDataFitsDisplayP3_Gamut,colorDataFitsRGB_Gamut,serializeHSL,serializeOKLCH,serializeP3,serializeRGB};\n", "/**\n * relative-color.js\n */\n\nimport { color as colorParser } from '@csstools/css-color-parser';\nimport { parseComponentValue } from '@csstools/css-parser-algorithms';\nimport { TokenType, tokenize } from '@csstools/css-tokenizer';\nimport { LRUCache } from 'lru-cache';\nimport { isString } from './common.js';\nimport { colorToRgb } from './convert.js';\nimport { resolveDimension, serializeCalc } from './css-calc.js';\nimport { resolve } from './resolve.js';\nimport { roundToPrecision, valueToJsonString } from './util.js';\n\n/* constants */\nimport {\n CS_LAB, CS_LCH, FN_REL, FN_REL_CAPT, FN_VAR, NONE, SYN_COLOR_TYPE,\n SYN_FN_MATH, SYN_FN_VAR, SYN_MIX, VAL_SPEC\n} from './constant.js';\nimport { NAMED_COLORS } from './color.js';\nconst {\n CloseParen: PAREN_CLOSE, Comment: COMMENT, Dimension: DIM, EOF,\n Function: FUNC, Ident: IDENT, Number: NUM, OpenParen: PAREN_OPEN,\n Percentage: PCT, Whitespace: W_SPACE\n} = TokenType;\nconst NONE_KEY = 'has-none-keywords';\nconst OCT = 8;\nconst DEC = 10;\nconst HEX = 16;\nconst MAX_PCT = 100;\nconst MAX_RGB = 255;\n\n/* regexp */\nconst REG_COLOR_CAPT =\n new RegExp(`^${FN_REL}(${SYN_COLOR_TYPE}|${SYN_MIX})\\\\s+`);\nconst REG_CS_HSL = /(?:hsla?|hwb)$/;\nconst REG_CS_CIE = new RegExp(`^(?:${CS_LAB}|${CS_LCH})$`);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\nconst REG_REL = new RegExp(FN_REL);\nconst REG_REL_CAPT = new RegExp(`^${FN_REL_CAPT}`);\nconst REG_START_MATH = new RegExp(SYN_FN_MATH);\nconst REG_START_REL = new RegExp(`^${FN_REL}`);\n\n/* cached results */\nexport const cachedResults = new LRUCache({\n max: 4096\n});\n\n/**\n * resolve relative color channels\n * @param {Array.} tokens - tokens\n * @param {object} [opt] - options\n * @param {string} [opt.colorSpace] - color space\n * @returns {?Array.} - resolved channels\n */\nexport function resolveColorChannels(tokens, opt = {}) {\n if (!Array.isArray(tokens)) {\n throw new TypeError(`${tokens} is not an array.`);\n }\n const { colorSpace, format } = opt;\n const colorChannels = new Map([\n ['color', ['r', 'g', 'b', 'alpha']],\n ['hsl', ['h', 's', 'l', 'alpha']],\n ['hsla', ['h', 's', 'l', 'alpha']],\n ['hwb', ['h', 'w', 'b', 'alpha']],\n ['lab', ['l', 'a', 'b', 'alpha']],\n ['lch', ['l', 'c', 'h', 'alpha']],\n ['oklab', ['l', 'a', 'b', 'alpha']],\n ['oklch', ['l', 'c', 'h', 'alpha']],\n ['rgb', ['r', 'g', 'b', 'alpha']],\n ['rgba', ['r', 'g', 'b', 'alpha']]\n ]);\n const colorChannel = colorChannels.get(colorSpace);\n const mathFunc = new Set();\n const channels = [[], [], [], []];\n let i = 0;\n let nest = 0;\n let func = false;\n while (tokens.length) {\n const token = tokens.shift();\n if (!Array.isArray(token)) {\n throw new TypeError(`${token} is not an array.`);\n }\n const [type, value,,, detail = {}] = token;\n const { value: numValue } = detail;\n const channel = channels[i];\n switch (type) {\n case DIM: {\n let resolvedValue = resolveDimension(token, opt);\n if (!resolvedValue) {\n resolvedValue = value;\n }\n channel.push(resolvedValue);\n break;\n }\n case FUNC: {\n channel.push(value);\n func = true;\n nest++;\n if (REG_START_MATH.test(value)) {\n mathFunc.add(nest);\n }\n break;\n }\n case IDENT: {\n // invalid channel key\n if (!colorChannel.includes(value)) {\n return null;\n }\n channel.push(value);\n if (!func) {\n i++;\n }\n break;\n }\n case NUM: {\n channel.push(numValue);\n if (!func) {\n i++;\n }\n break;\n }\n case PAREN_OPEN: {\n channel.push(value);\n nest++;\n break;\n }\n case PAREN_CLOSE: {\n if (func) {\n const lastValue = channel[channel.length - 1];\n if (lastValue === ' ') {\n channel.splice(-1, 1, value);\n } else {\n channel.push(value);\n }\n if (mathFunc.has(nest)) {\n mathFunc.delete(nest);\n }\n nest--;\n if (nest === 0) {\n func = false;\n i++;\n }\n }\n break;\n }\n case PCT: {\n channel.push(numValue / MAX_PCT);\n if (!func) {\n i++;\n }\n break;\n }\n case W_SPACE: {\n if (channel.length && func) {\n const lastValue = channel[channel.length - 1];\n if (typeof lastValue === 'number') {\n channel.push(value);\n } else if (isString(lastValue) &&\n !lastValue.endsWith('(') && lastValue !== ' ') {\n channel.push(value);\n }\n }\n break;\n }\n default: {\n if (type !== COMMENT && type !== EOF && func) {\n channel.push(value);\n }\n }\n }\n }\n const channelValues = [];\n for (const channel of channels) {\n if (channel.length === 1) {\n const [resolvedValue] = channel;\n channelValues.push(resolvedValue);\n } else if (channel.length) {\n const resolvedValue = serializeCalc(channel.join(''), {\n format\n });\n channelValues.push(resolvedValue);\n }\n }\n return channelValues;\n}\n\n/**\n * extract origin color\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.currentColor] - current color value\n * @returns {?string} - value\n */\nexport function extractOriginColor(value, opt = {}) {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n if (!value) {\n return null;\n }\n if (!REG_START_REL.test(value)) {\n return value;\n }\n } else {\n return null;\n }\n const { currentColor, format } = opt;\n const cacheKey = `{preProcess:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n if (/currentcolor/.test(value)) {\n if (currentColor) {\n value = value.replace(/currentcolor/g, currentColor);\n } else {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n }\n const [, colorSpace] = REG_REL_CAPT.exec(value);\n opt.colorSpace = colorSpace;\n if (REG_COLOR_CAPT.test(value)) {\n const [, originColor] = REG_COLOR_CAPT.exec(value);\n const [, restValue] = value.split(originColor);\n if (/^[a-z]+$/.test(originColor)) {\n if (!/^transparent$/.test(originColor) &&\n !Object.prototype.hasOwnProperty.call(NAMED_COLORS, originColor)) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n } else if (format === VAL_SPEC) {\n const resolvedOriginColor = resolve(originColor, opt);\n value = value.replace(originColor, resolvedOriginColor);\n }\n if (format === VAL_SPEC) {\n const tokens = tokenize({ css: restValue });\n const channelValues = resolveColorChannels(tokens, opt);\n if (!Array.isArray(channelValues)) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n let channelValue;\n if (channelValues.length === 3) {\n channelValue = ` ${channelValues.join(' ')})`;\n } else {\n const [v1, v2, v3, v4] = channelValues;\n channelValue = ` ${v1} ${v2} ${v3} / ${v4})`;\n }\n value = value.replace(restValue, channelValue);\n }\n // nested relative color\n } else {\n const [, restValue] = value.split(REG_START_REL);\n if (REG_START_REL.test(restValue)) {\n const tokens = tokenize({ css: restValue });\n let originColor = [];\n let nest = 0;\n while (tokens.length) {\n const token = tokens.shift();\n const [type, tokenValue] = token;\n switch (type) {\n case FUNC:\n case PAREN_OPEN: {\n originColor.push(tokenValue);\n nest++;\n break;\n }\n case PAREN_CLOSE: {\n const lastValue = originColor[originColor.length - 1];\n if (lastValue === ' ') {\n originColor.splice(-1, 1, tokenValue);\n } else {\n originColor.push(tokenValue);\n }\n nest--;\n break;\n }\n case W_SPACE: {\n const lastValue = originColor[originColor.length - 1];\n if (!lastValue.endsWith('(') && lastValue !== ' ') {\n originColor.push(tokenValue);\n }\n break;\n }\n default: {\n if (type !== COMMENT && type !== EOF) {\n originColor.push(tokenValue);\n }\n }\n }\n if (nest === 0) {\n break;\n }\n }\n originColor = resolveRelativeColor(originColor.join('').trim(), opt);\n if (!originColor) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n const channelValues = resolveColorChannels(tokens, opt);\n if (!Array.isArray(channelValues)) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n let channelValue;\n if (channelValues.length === 3) {\n channelValue = ` ${channelValues.join(' ')})`;\n } else {\n const [v1, v2, v3, v4] = channelValues;\n channelValue = ` ${v1} ${v2} ${v3} / ${v4})`;\n }\n value = value.replace(restValue, `${originColor}${channelValue}`);\n }\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, value);\n }\n return value;\n}\n\n/**\n * resolve relative color\n * @param {string} value - relative color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {?string} - value\n */\nexport function resolveRelativeColor(value, opt = {}) {\n const { format } = opt;\n if (isString(value)) {\n if (REG_FN_VAR.test(value)) {\n if (format === VAL_SPEC) {\n return value;\n // var() must be resolved before resolveRelativeColor()\n } else {\n throw new SyntaxError(`Unexpected token ${FN_VAR} found.`);\n }\n } else if (!REG_REL.test(value)) {\n return value;\n }\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string`);\n }\n const cacheKey = `{relativeColor:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n value = extractOriginColor(value, opt);\n if (!value) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n if (format === VAL_SPEC) {\n if (value.startsWith('rgba(')) {\n value = value.replace(/^rgba\\(/, 'rgb(');\n } else if (value.startsWith('hsla(')) {\n value = value.replace(/^hsla\\(/, 'hsl(');\n }\n return value;\n }\n const tokens = tokenize({ css: value });\n const components = parseComponentValue(tokens);\n const parsedComponents = colorParser(components);\n if (!parsedComponents) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n let {\n alpha, channels: [v1, v2, v3], colorNotation, syntaxFlags\n } = parsedComponents;\n if (Number.isNaN(alpha)) {\n if (syntaxFlags.has(NONE_KEY)) {\n alpha = NONE;\n } else {\n alpha = 0;\n }\n } else {\n alpha = roundToPrecision(alpha, OCT);\n }\n let resolvedValue;\n if (REG_CS_CIE.test(colorNotation)) {\n if (Number.isNaN(v1)) {\n if (syntaxFlags.has(NONE_KEY)) {\n v1 = NONE;\n } else {\n v1 = 0;\n }\n } else {\n v1 = roundToPrecision(v1, HEX);\n }\n if (Number.isNaN(v2)) {\n if (syntaxFlags.has(NONE_KEY)) {\n v2 = NONE;\n } else {\n v2 = 0;\n }\n } else {\n v2 = roundToPrecision(v2, HEX);\n }\n if (Number.isNaN(v3)) {\n if (syntaxFlags.has(NONE_KEY)) {\n v3 = NONE;\n } else {\n v3 = 0;\n }\n } else {\n v3 = roundToPrecision(v3, HEX);\n }\n if (alpha === 1) {\n resolvedValue = `${colorNotation}(${v1} ${v2} ${v3})`;\n } else {\n resolvedValue = `${colorNotation}(${v1} ${v2} ${v3} / ${alpha})`;\n }\n } else if (REG_CS_HSL.test(colorNotation)) {\n if (Number.isNaN(v1)) {\n v1 = 0;\n }\n if (Number.isNaN(v2)) {\n v2 = 0;\n }\n if (Number.isNaN(v3)) {\n v3 = 0;\n }\n let [r, g, b] =\n colorToRgb(`${colorNotation}(${v1} ${v2} ${v3} / ${alpha})`);\n r = roundToPrecision(r / MAX_RGB, DEC);\n g = roundToPrecision(g / MAX_RGB, DEC);\n b = roundToPrecision(b / MAX_RGB, DEC);\n if (alpha === 1) {\n resolvedValue = `color(srgb ${r} ${g} ${b})`;\n } else {\n resolvedValue = `color(srgb ${r} ${g} ${b} / ${alpha})`;\n }\n } else {\n const cs = colorNotation === 'rgb' ? 'srgb' : colorNotation;\n if (Number.isNaN(v1)) {\n if (syntaxFlags.has(NONE_KEY)) {\n v1 = NONE;\n } else {\n v1 = 0;\n }\n } else {\n v1 = roundToPrecision(v1, DEC);\n }\n if (Number.isNaN(v2)) {\n if (syntaxFlags.has(NONE_KEY)) {\n v2 = NONE;\n } else {\n v2 = 0;\n }\n } else {\n v2 = roundToPrecision(v2, DEC);\n }\n if (Number.isNaN(v3)) {\n if (syntaxFlags.has(NONE_KEY)) {\n v3 = NONE;\n } else {\n v3 = 0;\n }\n } else {\n v3 = roundToPrecision(v3, DEC);\n }\n if (alpha === 1) {\n resolvedValue = `color(${cs} ${v1} ${v2} ${v3})`;\n } else {\n resolvedValue = `color(${cs} ${v1} ${v2} ${v3} / ${alpha})`;\n }\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, resolvedValue);\n }\n return resolvedValue;\n}\n", "/**\n * resolve.js\n */\n\nimport { LRUCache } from 'lru-cache';\nimport {\n convertRgbToHex, resolveColorFunc, resolveColorMix, resolveColorValue\n} from './color.js';\nimport { isString } from './common.js';\nimport { cssCalc } from './css-calc.js';\nimport { cssVar } from './css-var.js';\nimport { resolveRelativeColor } from './relative-color.js';\nimport { valueToJsonString } from './util.js';\n\n/* constants */\nimport {\n FN_COLOR, FN_MIX, SYN_FN_MATH_CALC, SYN_FN_REL, SYN_FN_VAR, VAL_COMP, VAL_SPEC\n} from './constant.js';\nconst RGB_TRANSPARENT = 'rgba(0, 0, 0, 0)';\n\n/* regexp */\nconst REG_FN_MATH_CALC = new RegExp(SYN_FN_MATH_CALC);\nconst REG_FN_REL = new RegExp(SYN_FN_REL);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\n\n/* cached results */\nexport const cachedResults = new LRUCache({\n max: 4096\n});\n\n/**\n * resolve CSS color\n * @param {string} color - color value\n * - system colors are not supported\n * @param {object} [opt] - options\n * @param {string} [opt.currentColor]\n * - color to use for `currentcolor` keyword\n * - if omitted, it will be treated as a missing color\n * i.e. `rgb(none none none / none)`\n * @param {object} [opt.customProperty]\n * - custom properties\n * - pair of `--` prefixed property name and value,\n * e.g. `customProperty: { '--some-color': '#0000ff' }`\n * - and/or `callback` function to get the value of the custom property,\n * e.g. `customProperty: { callback: someDeclaration.getPropertyValue }`\n * @param {object} [opt.dimension]\n * - dimension, convert relative length to pixels\n * - pair of unit and it's value as a number in pixels,\n * e.g. `dimension: { em: 12, rem: 16, vw: 10.26 }`\n * - and/or `callback` function to get the value as a number in pixels,\n * e.g. `dimension: { callback: convertUnitToPixel }`\n * @param {string} [opt.format]\n * - output format, one of below\n * - `computedValue` (default), [computed value][139] of the color\n * - `specifiedValue`, [specified value][140] of the color\n * - `hex`, hex color notation, i.e. `rrggbb`\n * - `hexAlpha`, hex color notation with alpha channel, i.e. `#rrggbbaa`\n * @param {*} [opt.key] - key e.g. CSS property `background-color`\n * @returns {?string|Array}\n * - one of rgba?(), #rrggbb(aa)?, color-name, '(empty-string)',\n * color(color-space r g b / alpha), color(color-space x y z / alpha),\n * lab(l a b / alpha), lch(l c h / alpha), oklab(l a b / alpha),\n * oklch(l c h / alpha), null or [key, rgba?()] etc. if `key` is specified\n * - in `computedValue`, values are numbers, however `rgb()` values are\n * integers\n * - in `specifiedValue`, returns `empty string` for unknown and/or invalid\n * color\n * - in `hex`, returns `null` for `transparent`, and also returns `null` if\n * any of `r`, `g`, `b`, `alpha` is not a number\n * - in `hexAlpha`, returns `#00000000` for `transparent`,\n * however returns `null` if any of `r`, `g`, `b`, `alpha` is not a number\n */\nexport const resolve = (color, opt = {}) => {\n if (isString(color)) {\n color = color.trim();\n } else {\n throw new TypeError(`${color} is not a string.`);\n }\n const { currentColor, customProperty, format = VAL_COMP, key } = opt;\n let cacheKey;\n if (!REG_FN_VAR.test(color) ||\n typeof customProperty?.callback !== 'function') {\n cacheKey = `{resolve:${color},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n let res, cs, r, g, b, alpha;\n if (REG_FN_VAR.test(color)) {\n if (format === VAL_SPEC) {\n if (cacheKey) {\n cachedResults.set(cacheKey, color);\n }\n return color;\n }\n color = cssVar(color, opt);\n if (!color) {\n switch (format) {\n case 'hex':\n case 'hexAlpha': {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n default: {\n res = RGB_TRANSPARENT;\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n }\n }\n }\n if (opt.format !== format) {\n opt.format = format;\n }\n color = color.toLowerCase();\n if (REG_FN_REL.test(color)) {\n color = resolveRelativeColor(color, opt);\n if (format === VAL_COMP) {\n res = color || RGB_TRANSPARENT;\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n if (format === VAL_SPEC) {\n res = color || '';\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n if (!color) {\n color = '';\n }\n }\n if (REG_FN_MATH_CALC.test(color)) {\n color = cssCalc(color, opt);\n }\n if (color === 'transparent') {\n switch (format) {\n case VAL_SPEC: {\n if (cacheKey) {\n cachedResults.set(cacheKey, color);\n }\n return color;\n }\n case 'hex': {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n case 'hexAlpha': {\n res = '#00000000';\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n case VAL_COMP:\n default: {\n res = RGB_TRANSPARENT;\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n }\n } else if (color === 'currentcolor') {\n if (format === VAL_SPEC) {\n if (cacheKey) {\n cachedResults.set(cacheKey, color);\n }\n return color;\n }\n if (currentColor) {\n if (currentColor.startsWith(FN_MIX)) {\n [cs, r, g, b, alpha] = resolveColorMix(currentColor, opt);\n } else if (currentColor.startsWith(FN_COLOR)) {\n [cs, r, g, b, alpha] = resolveColorFunc(currentColor, opt);\n } else {\n [cs, r, g, b, alpha] = resolveColorValue(currentColor, opt);\n }\n } else if (format === VAL_COMP) {\n res = RGB_TRANSPARENT;\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n } else if (format === VAL_SPEC) {\n if (color.startsWith(FN_MIX)) {\n res = resolveColorMix(color, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n } else if (color.startsWith(FN_COLOR)) {\n [cs, r, g, b, alpha] = resolveColorFunc(color, opt);\n if (alpha === 1) {\n res = `color(${cs} ${r} ${g} ${b})`;\n } else {\n res = `color(${cs} ${r} ${g} ${b} / ${alpha})`;\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n } else {\n const rgb = resolveColorValue(color, opt);\n if (!rgb) {\n res = '';\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n [cs, r, g, b, alpha] = rgb;\n if (cs === 'rgb') {\n if (alpha === 1) {\n res = `${cs}(${r}, ${g}, ${b})`;\n } else {\n res = `${cs}a(${r}, ${g}, ${b}, ${alpha})`;\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n if (alpha === 1) {\n res = `${cs}(${r} ${g} ${b})`;\n } else {\n res = `${cs}(${r} ${g} ${b} / ${alpha})`;\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n } else if (/currentcolor/.test(color)) {\n if (currentColor) {\n color = color.replace(/currentcolor/g, currentColor);\n }\n if (/transparent/.test(color)) {\n color = color.replace(/transparent/g, RGB_TRANSPARENT);\n }\n if (color.startsWith(FN_MIX)) {\n [cs, r, g, b, alpha] = resolveColorMix(color, opt);\n }\n } else if (/transparent/.test(color)) {\n color = color.replace(/transparent/g, RGB_TRANSPARENT);\n if (color.startsWith(FN_MIX)) {\n [cs, r, g, b, alpha] = resolveColorMix(color, opt);\n }\n } else if (color.startsWith(FN_MIX)) {\n [cs, r, g, b, alpha] = resolveColorMix(color, opt);\n } else if (color.startsWith(FN_COLOR)) {\n [cs, r, g, b, alpha] = resolveColorFunc(color, opt);\n } else if (color) {\n [cs, r, g, b, alpha] = resolveColorValue(color, opt);\n }\n switch (format) {\n case 'hex': {\n let hex;\n if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(alpha) || alpha === 0) {\n hex = null;\n } else {\n hex = convertRgbToHex([r, g, b]);\n }\n if (key) {\n res = [key, hex];\n } else {\n res = hex;\n }\n break;\n }\n case 'hexAlpha': {\n let hex;\n if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(alpha)) {\n hex = null;\n } else {\n hex = convertRgbToHex([r, g, b, alpha]);\n }\n if (key) {\n res = [key, hex];\n } else {\n res = hex;\n }\n break;\n }\n case VAL_COMP:\n default: {\n let value;\n switch (cs) {\n case 'rgb': {\n if (alpha === 1) {\n value = `${cs}(${r}, ${g}, ${b})`;\n } else {\n value = `${cs}a(${r}, ${g}, ${b}, ${alpha})`;\n }\n break;\n }\n case 'lab':\n case 'lch':\n case 'oklab':\n case 'oklch': {\n if (alpha === 1) {\n value = `${cs}(${r} ${g} ${b})`;\n } else {\n value = `${cs}(${r} ${g} ${b} / ${alpha})`;\n }\n break;\n }\n // color()\n default: {\n if (alpha === 1) {\n value = `color(${cs} ${r} ${g} ${b})`;\n } else {\n value = `color(${cs} ${r} ${g} ${b} / ${alpha})`;\n }\n }\n }\n if (key) {\n res = [key, value];\n } else {\n res = value;\n }\n }\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n};\n", "/**\n * util.js\n */\n\nimport { isString } from './common.js';\nimport { resolve } from './resolve.js';\n\n/* constants */\nimport { NAMED_COLORS } from './color.js';\nimport { SYN_COLOR_TYPE, SYN_MIX, VAL_SPEC } from './constant.js';\nconst DEC = 10;\nconst HEX = 16;\nconst DEG = 360;\nconst DEG_HALF = 180;\n\n/* regexp */\nconst REG_COLOR = new RegExp(`^(?:${SYN_COLOR_TYPE})$`);\nconst REG_MIX = new RegExp(`${SYN_MIX}`);\n\n/**\n * is color\n * @param {string} value - value\n * @returns {boolean} - result\n */\nexport const isColor = value => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n if (value) {\n if (/^[a-z]+$/.test(value)) {\n if (/^(?:currentcolor|transparent)$/.test(value) ||\n Object.prototype.hasOwnProperty.call(NAMED_COLORS, value)) {\n return true;\n }\n } else if (REG_COLOR.test(value) || REG_MIX.test(value)) {\n return true;\n } else {\n value = resolve(value, {\n format: VAL_SPEC\n });\n if (value) {\n return true;\n }\n return false;\n }\n }\n }\n return false;\n};\n\n/**\n * value to JSON string\n * @param {*} value - value\n * @param {boolean} func - stringify function\n * @returns {string} - stringified value in JSON notation\n */\nexport const valueToJsonString = (value, func = false) => {\n if (typeof value === 'undefined') {\n return '';\n }\n const res = JSON.stringify(value, (key, val) => {\n let replacedValue;\n if (typeof val === 'undefined') {\n replacedValue = null;\n } else if (typeof val === 'function') {\n if (func) {\n replacedValue = val.toString();\n } else {\n replacedValue = val.name;\n }\n } else if (val instanceof Map || val instanceof Set) {\n replacedValue = [...val];\n } else if (typeof val === 'bigint') {\n replacedValue = val.toString();\n } else {\n replacedValue = val;\n }\n return replacedValue;\n });\n return res;\n};\n\n/**\n * round to specified precision\n * @param {number} value - value\n * @param {number} bit - minimum bits\n * @returns {number} - rounded value\n */\nexport const roundToPrecision = (value, bit = 0) => {\n if (!Number.isFinite(value)) {\n throw new TypeError(`${value} is not a number.`);\n }\n if (!Number.isFinite(bit)) {\n throw new TypeError(`${bit} is not a number.`);\n } else if (bit < 0 || bit > HEX) {\n throw new RangeError(`${bit} is not between 0 and ${HEX}.`);\n }\n if (bit === 0) {\n return Math.round(value);\n }\n let val;\n if (bit === HEX) {\n val = value.toPrecision(6);\n } else if (bit < DEC) {\n val = value.toPrecision(4);\n } else {\n val = value.toPrecision(5);\n }\n return parseFloat(val);\n};\n\n/**\n * interpolate hue\n * @param {number} hueA - hue\n * @param {number} hueB - hue\n * @param {string} arc - arc\n * @returns {Array} - [hueA, hueB]\n */\nexport const interpolateHue = (hueA, hueB, arc = 'shorter') => {\n if (!Number.isFinite(hueA)) {\n throw new TypeError(`${hueA} is not a number.`);\n }\n if (!Number.isFinite(hueB)) {\n throw new TypeError(`${hueB} is not a number.`);\n }\n switch (arc) {\n case 'decreasing': {\n if (hueB > hueA) {\n hueA += DEG;\n }\n break;\n }\n case 'increasing': {\n if (hueB < hueA) {\n hueB += DEG;\n }\n break;\n }\n case 'longer': {\n if (hueB > hueA && hueB < hueA + DEG_HALF) {\n hueA += DEG;\n } else if (hueB > hueA + DEG_HALF * -1 && hueB <= hueA) {\n hueB += DEG;\n }\n break;\n }\n case 'shorter':\n default: {\n if (hueB > hueA + DEG_HALF) {\n hueA += DEG;\n } else if (hueB < hueA + DEG_HALF * -1) {\n hueB += DEG;\n }\n }\n }\n return [hueA, hueB];\n};\n", "/**\n * color.js\n *\n * Ref: CSS Color Module Level 4\n * Sample code for Color Conversions\n * https://w3c.github.io/csswg-drafts/css-color-4/#color-conversion-code\n */\n\nimport { isString } from './common.js';\nimport { interpolateHue, roundToPrecision } from './util.js';\n\n/* constants */\nimport {\n ANGLE, CS_HUE_CAPT, CS_MIX, CS_RGB, CS_XYZ, FN_COLOR, FN_MIX, NONE, NUM, PCT,\n SYN_COLOR_TYPE, SYN_FN_COLOR, SYN_HSL, SYN_HSL_LV3, SYN_LCH, SYN_MIX,\n SYN_MIX_CAPT, SYN_MOD, SYN_RGB_LV3, VAL_COMP, VAL_SPEC\n} from './constant.js';\nconst VAL_MIX = 'mixValue';\n\n/* numeric constants */\nconst PPTH = 0.001;\nconst HALF = 0.5;\nconst DUO = 2;\nconst TRIA = 3;\nconst QUAT = 4;\nconst OCT = 8;\nconst DEC = 10;\nconst DOZ = 12;\nconst HEX = 16;\nconst SEXA = 60;\nconst DEG = 360;\nconst MAX_PCT = 100;\nconst MAX_RGB = 255;\nconst POW_SQR = 2;\nconst POW_CUBE = 3;\nconst POW_LINEAR = 2.4;\nconst LINEAR_COEF = 12.92;\nconst LINEAR_OFFSET = 0.055;\nconst LAB_L = 116;\nconst LAB_A = 500;\nconst LAB_B = 200;\nconst LAB_EPSILON = 216 / 24389;\nconst LAB_KAPPA = 24389 / 27;\n\n/* white point */\nconst D50 = [0.3457 / 0.3585, 1.00000, (1.0 - 0.3457 - 0.3585) / 0.3585];\nconst MATRIX_D50_TO_D65 = [\n [0.955473421488075, -0.02309845494876471, 0.06325924320057072],\n [-0.0283697093338637, 1.0099953980813041, 0.021041441191917323],\n [0.012314014864481998, -0.020507649298898964, 1.330365926242124]\n];\nconst MATRIX_D65_TO_D50 = [\n [1.0479297925449969, 0.022946870601609652, -0.05019226628920524],\n [0.02962780877005599, 0.9904344267538799, -0.017073799063418826],\n [-0.009243040646204504, 0.015055191490298152, 0.7518742814281371]\n];\n\n/* color space */\nconst MATRIX_L_RGB_TO_XYZ = [\n [506752 / 1228815, 87881 / 245763, 12673 / 70218],\n [87098 / 409605, 175762 / 245763, 12673 / 175545],\n [7918 / 409605, 87881 / 737289, 1001167 / 1053270]\n];\nconst MATRIX_XYZ_TO_L_RGB = [\n [12831 / 3959, -329 / 214, -1974 / 3959],\n [-851781 / 878810, 1648619 / 878810, 36519 / 878810],\n [705 / 12673, -2585 / 12673, 705 / 667]\n];\nconst MATRIX_XYZ_TO_LMS = [\n [0.8190224379967030, 0.3619062600528904, -0.1288737815209879],\n [0.0329836539323885, 0.9292868615863434, 0.0361446663506424],\n [0.0481771893596242, 0.2642395317527308, 0.6335478284694309]\n];\nconst MATRIX_LMS_TO_XYZ = [\n [1.2268798758459243, -0.5578149944602171, 0.2813910456659647],\n [-0.0405757452148008, 1.1122868032803170, -0.0717110580655164],\n [-0.0763729366746601, -0.4214933324022432, 1.5869240198367816]\n];\nconst MATRIX_OKLAB_TO_LMS = [\n [1.0000000000000000, 0.3963377773761749, 0.2158037573099136],\n [1.0000000000000000, -0.1055613458156586, -0.0638541728258133],\n [1.0000000000000000, -0.0894841775298119, -1.2914855480194092]\n];\nconst MATRIX_LMS_TO_OKLAB = [\n [0.2104542683093140, 0.7936177747023054, -0.0040720430116193],\n [1.9779985324311684, -2.4285922420485799, 0.4505937096174110],\n [0.0259040424655478, 0.7827717124575296, -0.8086757549230774]\n];\nconst MATRIX_P3_TO_XYZ = [\n [608311 / 1250200, 189793 / 714400, 198249 / 1000160],\n [35783 / 156275, 247089 / 357200, 198249 / 2500400],\n [0 / 1, 32229 / 714400, 5220557 / 5000800]\n];\nconst MATRIX_REC2020_TO_XYZ = [\n [63426534 / 99577255, 20160776 / 139408157, 47086771 / 278816314],\n [26158966 / 99577255, 472592308 / 697040785, 8267143 / 139408157],\n [0 / 1, 19567812 / 697040785, 295819943 / 278816314]\n];\nconst MATRIX_A98_TO_XYZ = [\n [573536 / 994567, 263643 / 1420810, 187206 / 994567],\n [591459 / 1989134, 6239551 / 9945670, 374412 / 4972835],\n [53769 / 1989134, 351524 / 4972835, 4929758 / 4972835]\n];\nconst MATRIX_PROPHOTO_TO_XYZ_D50 = [\n [0.79776664490064230, 0.13518129740053308, 0.03134773412839220],\n [0.28807482881940130, 0.71183523424187300, 0.00008993693872564],\n [0.00000000000000000, 0.00000000000000000, 0.82510460251046020]\n];\n\n/* regexp */\nconst REG_COLOR = new RegExp(`^(?:${SYN_COLOR_TYPE})$`);\nconst REG_CS_HUE = new RegExp(`^${CS_HUE_CAPT}$`);\nconst REG_CS_XYZ = /^xyz(?:-d(?:50|65))?$/;\nconst REG_CURRENT = /^currentColor$/i;\nconst REG_FN_COLOR = new RegExp(`^color\\\\(\\\\s*(${SYN_FN_COLOR})\\\\s*\\\\)$`);\nconst REG_HSL = new RegExp(`^hsla?\\\\(\\\\s*(${SYN_HSL}|${SYN_HSL_LV3})\\\\s*\\\\)$`);\nconst REG_HWB = new RegExp(`^hwb\\\\(\\\\s*(${SYN_HSL})\\\\s*\\\\)$`);\nconst REG_LAB = new RegExp(`^lab\\\\(\\\\s*(${SYN_MOD})\\\\s*\\\\)$`);\nconst REG_LCH = new RegExp(`^lch\\\\(\\\\s*(${SYN_LCH})\\\\s*\\\\)$`);\nconst REG_MIX = new RegExp(`^${SYN_MIX}$`);\nconst REG_MIX_CAPT = new RegExp(`^${SYN_MIX_CAPT}$`);\nconst REG_MIX_NEST = new RegExp(`${SYN_MIX}`, 'g');\nconst REG_OKLAB = new RegExp(`^oklab\\\\(\\\\s*(${SYN_MOD})\\\\s*\\\\)$`);\nconst REG_OKLCH = new RegExp(`^oklch\\\\(\\\\s*(${SYN_LCH})\\\\s*\\\\)$`);\nconst REG_SPEC = /^(?:specifi|comput)edValue$/;\n\n/* named colors */\nexport const NAMED_COLORS = {\n aliceblue: [0xF0, 0xF8, 0xFF],\n antiquewhite: [0xFA, 0xEB, 0xD7],\n aqua: [0x00, 0xFF, 0xFF],\n aquamarine: [0x7F, 0xFF, 0xD4],\n azure: [0xF0, 0xFF, 0xFF],\n beige: [0xF5, 0xF5, 0xDC],\n bisque: [0xFF, 0xE4, 0xC4],\n black: [0x00, 0x00, 0x00],\n blanchedalmond: [0xFF, 0xEB, 0xCD],\n blue: [0x00, 0x00, 0xFF],\n blueviolet: [0x8A, 0x2B, 0xE2],\n brown: [0xA5, 0x2A, 0x2A],\n burlywood: [0xDE, 0xB8, 0x87],\n cadetblue: [0x5F, 0x9E, 0xA0],\n chartreuse: [0x7F, 0xFF, 0x00],\n chocolate: [0xD2, 0x69, 0x1E],\n coral: [0xFF, 0x7F, 0x50],\n cornflowerblue: [0x64, 0x95, 0xED],\n cornsilk: [0xFF, 0xF8, 0xDC],\n crimson: [0xDC, 0x14, 0x3C],\n cyan: [0x00, 0xFF, 0xFF],\n darkblue: [0x00, 0x00, 0x8B],\n darkcyan: [0x00, 0x8B, 0x8B],\n darkgoldenrod: [0xB8, 0x86, 0x0B],\n darkgray: [0xA9, 0xA9, 0xA9],\n darkgreen: [0x00, 0x64, 0x00],\n darkgrey: [0xA9, 0xA9, 0xA9],\n darkkhaki: [0xBD, 0xB7, 0x6B],\n darkmagenta: [0x8B, 0x00, 0x8B],\n darkolivegreen: [0x55, 0x6B, 0x2F],\n darkorange: [0xFF, 0x8C, 0x00],\n darkorchid: [0x99, 0x32, 0xCC],\n darkred: [0x8B, 0x00, 0x00],\n darksalmon: [0xE9, 0x96, 0x7A],\n darkseagreen: [0x8F, 0xBC, 0x8F],\n darkslateblue: [0x48, 0x3D, 0x8B],\n darkslategray: [0x2F, 0x4F, 0x4F],\n darkslategrey: [0x2F, 0x4F, 0x4F],\n darkturquoise: [0x00, 0xCE, 0xD1],\n darkviolet: [0x94, 0x00, 0xD3],\n deeppink: [0xFF, 0x14, 0x93],\n deepskyblue: [0x00, 0xBF, 0xFF],\n dimgray: [0x69, 0x69, 0x69],\n dimgrey: [0x69, 0x69, 0x69],\n dodgerblue: [0x1E, 0x90, 0xFF],\n firebrick: [0xB2, 0x22, 0x22],\n floralwhite: [0xFF, 0xFA, 0xF0],\n forestgreen: [0x22, 0x8B, 0x22],\n fuchsia: [0xFF, 0x00, 0xFF],\n gainsboro: [0xDC, 0xDC, 0xDC],\n ghostwhite: [0xF8, 0xF8, 0xFF],\n gold: [0xFF, 0xD7, 0x00],\n goldenrod: [0xDA, 0xA5, 0x20],\n gray: [0x80, 0x80, 0x80],\n green: [0x00, 0x80, 0x00],\n greenyellow: [0xAD, 0xFF, 0x2F],\n grey: [0x80, 0x80, 0x80],\n honeydew: [0xF0, 0xFF, 0xF0],\n hotpink: [0xFF, 0x69, 0xB4],\n indianred: [0xCD, 0x5C, 0x5C],\n indigo: [0x4B, 0x00, 0x82],\n ivory: [0xFF, 0xFF, 0xF0],\n khaki: [0xF0, 0xE6, 0x8C],\n lavender: [0xE6, 0xE6, 0xFA],\n lavenderblush: [0xFF, 0xF0, 0xF5],\n lawngreen: [0x7C, 0xFC, 0x00],\n lemonchiffon: [0xFF, 0xFA, 0xCD],\n lightblue: [0xAD, 0xD8, 0xE6],\n lightcoral: [0xF0, 0x80, 0x80],\n lightcyan: [0xE0, 0xFF, 0xFF],\n lightgoldenrodyellow: [0xFA, 0xFA, 0xD2],\n lightgray: [0xD3, 0xD3, 0xD3],\n lightgreen: [0x90, 0xEE, 0x90],\n lightgrey: [0xD3, 0xD3, 0xD3],\n lightpink: [0xFF, 0xB6, 0xC1],\n lightsalmon: [0xFF, 0xA0, 0x7A],\n lightseagreen: [0x20, 0xB2, 0xAA],\n lightskyblue: [0x87, 0xCE, 0xFA],\n lightslategray: [0x77, 0x88, 0x99],\n lightslategrey: [0x77, 0x88, 0x99],\n lightsteelblue: [0xB0, 0xC4, 0xDE],\n lightyellow: [0xFF, 0xFF, 0xE0],\n lime: [0x00, 0xFF, 0x00],\n limegreen: [0x32, 0xCD, 0x32],\n linen: [0xFA, 0xF0, 0xE6],\n magenta: [0xFF, 0x00, 0xFF],\n maroon: [0x80, 0x00, 0x00],\n mediumaquamarine: [0x66, 0xCD, 0xAA],\n mediumblue: [0x00, 0x00, 0xCD],\n mediumorchid: [0xBA, 0x55, 0xD3],\n mediumpurple: [0x93, 0x70, 0xDB],\n mediumseagreen: [0x3C, 0xB3, 0x71],\n mediumslateblue: [0x7B, 0x68, 0xEE],\n mediumspringgreen: [0x00, 0xFA, 0x9A],\n mediumturquoise: [0x48, 0xD1, 0xCC],\n mediumvioletred: [0xC7, 0x15, 0x85],\n midnightblue: [0x19, 0x19, 0x70],\n mintcream: [0xF5, 0xFF, 0xFA],\n mistyrose: [0xFF, 0xE4, 0xE1],\n moccasin: [0xFF, 0xE4, 0xB5],\n navajowhite: [0xFF, 0xDE, 0xAD],\n navy: [0x00, 0x00, 0x80],\n oldlace: [0xFD, 0xF5, 0xE6],\n olive: [0x80, 0x80, 0x00],\n olivedrab: [0x6B, 0x8E, 0x23],\n orange: [0xFF, 0xA5, 0x00],\n orangered: [0xFF, 0x45, 0x00],\n orchid: [0xDA, 0x70, 0xD6],\n palegoldenrod: [0xEE, 0xE8, 0xAA],\n palegreen: [0x98, 0xFB, 0x98],\n paleturquoise: [0xAF, 0xEE, 0xEE],\n palevioletred: [0xDB, 0x70, 0x93],\n papayawhip: [0xFF, 0xEF, 0xD5],\n peachpuff: [0xFF, 0xDA, 0xB9],\n peru: [0xCD, 0x85, 0x3F],\n pink: [0xFF, 0xC0, 0xCB],\n plum: [0xDD, 0xA0, 0xDD],\n powderblue: [0xB0, 0xE0, 0xE6],\n purple: [0x80, 0x00, 0x80],\n rebeccapurple: [0x66, 0x33, 0x99],\n red: [0xFF, 0x00, 0x00],\n rosybrown: [0xBC, 0x8F, 0x8F],\n royalblue: [0x41, 0x69, 0xE1],\n saddlebrown: [0x8B, 0x45, 0x13],\n salmon: [0xFA, 0x80, 0x72],\n sandybrown: [0xF4, 0xA4, 0x60],\n seagreen: [0x2E, 0x8B, 0x57],\n seashell: [0xFF, 0xF5, 0xEE],\n sienna: [0xA0, 0x52, 0x2D],\n silver: [0xC0, 0xC0, 0xC0],\n skyblue: [0x87, 0xCE, 0xEB],\n slateblue: [0x6A, 0x5A, 0xCD],\n slategray: [0x70, 0x80, 0x90],\n slategrey: [0x70, 0x80, 0x90],\n snow: [0xFF, 0xFA, 0xFA],\n springgreen: [0x00, 0xFF, 0x7F],\n steelblue: [0x46, 0x82, 0xB4],\n tan: [0xD2, 0xB4, 0x8C],\n teal: [0x00, 0x80, 0x80],\n thistle: [0xD8, 0xBF, 0xD8],\n tomato: [0xFF, 0x63, 0x47],\n turquoise: [0x40, 0xE0, 0xD0],\n violet: [0xEE, 0x82, 0xEE],\n wheat: [0xF5, 0xDE, 0xB3],\n white: [0xFF, 0xFF, 0xFF],\n whitesmoke: [0xF5, 0xF5, 0xF5],\n yellow: [0xFF, 0xFF, 0x00],\n yellowgreen: [0x9A, 0xCD, 0x32]\n};\n\n/**\n * validate color components\n * @param {Array} arr - array of color components\n * @param {object} [opt] - options\n * @param {boolean} [opt.alpha] - alpha channel\n * @param {number} [opt.minLength] - min length\n * @param {number} [opt.maxLength] - max length\n * @param {number} [opt.minRange] - min range\n * @param {number} [opt.maxRange] - max range\n * @param {boolean} [opt.validateRange] - validate range\n * @returns {Array} - validated color components\n */\nexport const validateColorComponents = (arr, opt = {}) => {\n if (!Array.isArray(arr)) {\n throw new TypeError(`${arr} is not an array.`);\n }\n const {\n alpha = false,\n minLength = TRIA,\n maxLength = QUAT,\n minRange = 0,\n maxRange = 1,\n validateRange = true\n } = opt;\n if (!Number.isFinite(minLength)) {\n throw new TypeError(`${minLength} is not a number.`);\n }\n if (!Number.isFinite(maxLength)) {\n throw new TypeError(`${maxLength} is not a number.`);\n }\n if (!Number.isFinite(minRange)) {\n throw new TypeError(`${minRange} is not a number.`);\n }\n if (!Number.isFinite(maxRange)) {\n throw new TypeError(`${maxRange} is not a number.`);\n }\n const l = arr.length;\n if (l < minLength || l > maxLength) {\n throw new Error(`Unexpected array length ${l}.`);\n }\n let i = 0;\n while (i < l) {\n const v = arr[i];\n if (!Number.isFinite(v)) {\n throw new TypeError(`${v} is not a number.`);\n } else if (i < TRIA && validateRange && (v < minRange || v > maxRange)) {\n throw new RangeError(`${v} is not between ${minRange} and ${maxRange}.`);\n } else if (i === TRIA && (v < 0 || v > 1)) {\n throw new RangeError(`${v} is not between 0 and 1.`);\n }\n i++;\n }\n if (alpha && l === TRIA) {\n arr.push(1);\n }\n return arr;\n};\n\n/**\n * transform matrix\n * @param {Array.>} mtx - 3 * 3 matrix\n * @param {Array.} vct - vector\n * @param {boolean} skip - skip alidate\n * @returns {Array.} - [p1, p2, p3]\n */\nexport const transformMatrix = (mtx, vct, skip = false) => {\n if (!Array.isArray(mtx)) {\n throw new TypeError(`${mtx} is not an array.`);\n } else if (mtx.length !== TRIA) {\n throw new Error(`Unexpected array length ${mtx.length}.`);\n } else if (!skip) {\n for (let i of mtx) {\n i = validateColorComponents(i, {\n maxLength: TRIA,\n validateRange: false\n });\n }\n }\n const [\n [r1c1, r1c2, r1c3],\n [r2c1, r2c2, r2c3],\n [r3c1, r3c2, r3c3]\n ] = mtx;\n let v1, v2, v3;\n if (skip) {\n [v1, v2, v3] = vct;\n } else {\n [v1, v2, v3] = validateColorComponents(vct, {\n maxLength: TRIA,\n validateRange: false\n });\n }\n const p1 = r1c1 * v1 + r1c2 * v2 + r1c3 * v3;\n const p2 = r2c1 * v1 + r2c2 * v2 + r2c3 * v3;\n const p3 = r3c1 * v1 + r3c2 * v2 + r3c3 * v3;\n return [p1, p2, p3];\n};\n\n/**\n * normalize color components\n * @param {Array} colorA - array of color components [v1, v2, v3, v4]\n * @param {Array} colorB - array of color components [v1, v2, v3, v4]\n * @param {boolean} skip - skip validate\n * @returns {Array.>} - [colorA, colorB]\n */\nexport const normalizeColorComponents = (colorA, colorB, skip = false) => {\n if (!Array.isArray(colorA)) {\n throw new TypeError(`${colorA} is not an array.`);\n } else if (colorA.length !== QUAT) {\n throw new Error(`Unexpected array length ${colorA.length}.`);\n }\n if (!Array.isArray(colorB)) {\n throw new TypeError(`${colorB} is not an array.`);\n } else if (colorB.length !== QUAT) {\n throw new Error(`Unexpected array length ${colorB.length}.`);\n }\n let i = 0;\n while (i < QUAT) {\n if (colorA[i] === NONE && colorB[i] === NONE) {\n colorA[i] = 0;\n colorB[i] = 0;\n } else if (colorA[i] === NONE) {\n colorA[i] = colorB[i];\n } else if (colorB[i] === NONE) {\n colorB[i] = colorA[i];\n }\n i++;\n }\n if (!skip) {\n colorA = validateColorComponents(colorA, {\n minLength: QUAT,\n validateRange: false\n });\n colorB = validateColorComponents(colorB, {\n minLength: QUAT,\n validateRange: false\n });\n }\n return [colorA, colorB];\n};\n\n/**\n * number to hex string\n * @param {number} value - color value\n * @returns {string} - hex string\n */\nexport const numberToHexString = value => {\n if (!Number.isFinite(value)) {\n throw new TypeError(`${value} is not a number.`);\n } else {\n value = Math.round(value);\n if (value < 0 || value > MAX_RGB) {\n throw new RangeError(`${value} is not between 0 and ${MAX_RGB}.`);\n }\n }\n let hex = value.toString(HEX);\n if (hex.length === 1) {\n hex = `0${hex}`;\n }\n return hex;\n};\n\n/**\n * angle to deg\n * @param {string} angle - angle\n * @returns {number} - deg: 0..360\n */\nexport const angleToDeg = angle => {\n if (isString(angle)) {\n angle = angle.trim();\n } else {\n throw new TypeError(`${angle} is not a string.`);\n }\n const GRAD = DEG / 400;\n const RAD = DEG / (Math.PI * DUO);\n const reg = new RegExp(`^(${NUM})(${ANGLE})?$`);\n if (!reg.test(angle)) {\n throw new SyntaxError(`Invalid property value: ${angle}`);\n }\n const [, val, unit] = angle.match(reg);\n const value = val[0] === '.' ? `0${val}` : val;\n let deg;\n switch (unit) {\n case 'grad':\n deg = parseFloat(value) * GRAD;\n break;\n case 'rad':\n deg = parseFloat(value) * RAD;\n break;\n case 'turn':\n deg = parseFloat(value) * DEG;\n break;\n default:\n deg = parseFloat(value);\n }\n deg %= DEG;\n if (deg < 0) {\n deg += DEG;\n } else if (Object.is(deg, -0)) {\n deg = 0;\n }\n return deg;\n};\n\n/**\n * parse alpha\n * @param {?string} [alpha] - alpha value\n * @returns {number} - alpha: 0..1\n */\nexport const parseAlpha = alpha => {\n if (isString(alpha)) {\n alpha = alpha.trim();\n if (!alpha) {\n alpha = 1;\n } else if (alpha === NONE) {\n alpha = 0;\n } else {\n if (alpha[0] === '.') {\n alpha = `0${alpha}`;\n }\n if (alpha.endsWith('%')) {\n alpha = parseFloat(alpha) / MAX_PCT;\n } else {\n alpha = parseFloat(alpha);\n }\n if (!Number.isFinite(alpha)) {\n throw new TypeError(`${alpha} is not a number.`);\n }\n if (alpha < PPTH) {\n alpha = 0;\n } else if (alpha > 1) {\n alpha = 1;\n } else {\n alpha = parseFloat(alpha.toFixed(3));\n }\n }\n } else {\n alpha = 1;\n }\n return alpha;\n};\n\n/**\n * parse hex alpha\n * @param {string} value - alpha value in hex string\n * @returns {number} - alpha: 0..1\n */\nexport const parseHexAlpha = value => {\n if (isString(value)) {\n if (value === '') {\n throw new SyntaxError('Invalid property value: (empty string)');\n }\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n let alpha = parseInt(value, HEX);\n if (alpha <= 0) {\n return 0;\n }\n if (alpha >= MAX_RGB) {\n return 1;\n }\n const alphaMap = new Map();\n for (let i = 1; i < MAX_PCT; i++) {\n alphaMap.set(Math.round(i * MAX_RGB / MAX_PCT), i);\n }\n if (alphaMap.has(alpha)) {\n alpha = alphaMap.get(alpha) / MAX_PCT;\n } else {\n alpha = Math.round(alpha / MAX_RGB / PPTH) * PPTH;\n }\n return parseFloat(alpha.toFixed(3));\n};\n\n/**\n * convert rgb to linear rgb\n * @param {Array.} rgb - [r, g, b] r|g|b: 0..255\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [r, g, b] r|g|b: 0..1\n */\nexport const convertRgbToLinearRgb = (rgb, skip = false) => {\n let rr, gg, bb;\n if (skip) {\n [rr, gg, bb] = rgb;\n } else {\n [rr, gg, bb] = validateColorComponents(rgb, {\n maxLength: TRIA,\n maxRange: MAX_RGB\n });\n }\n let r = rr / MAX_RGB;\n let g = gg / MAX_RGB;\n let b = bb / MAX_RGB;\n const COND_POW = 0.04045;\n if (r > COND_POW) {\n r = Math.pow((r + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n r /= LINEAR_COEF;\n }\n if (g > COND_POW) {\n g = Math.pow((g + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n g /= LINEAR_COEF;\n }\n if (b > COND_POW) {\n b = Math.pow((b + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n b /= LINEAR_COEF;\n }\n return [r, g, b];\n};\n\n/**\n * convert rgb to xyz\n * @param {Array.} rgb - [r, g, b, ?alpha] r|g|b: 0..255 alpha: 0..1\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const convertRgbToXyz = (rgb, skip = false) => {\n let r, g, b, alpha;\n if (skip) {\n [r, g, b, alpha] = rgb;\n } else {\n [r, g, b, alpha] = validateColorComponents(rgb, {\n alpha: true,\n maxRange: MAX_RGB\n });\n }\n const [rr, gg, bb] = convertRgbToLinearRgb([r, g, b], true);\n const [x, y, z] = transformMatrix(MATRIX_L_RGB_TO_XYZ, [rr, gg, bb], true);\n return [x, y, z, alpha];\n};\n\n/**\n * convert rgb to xyz-d50\n * @param {Array.} rgb - [r, g, b, ?alpha] r|g|b: 0..255 alpha: 0..1\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const convertRgbToXyzD50 = rgb => {\n const [xx, yy, zz, alpha] = convertRgbToXyz(rgb);\n const [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [xx, yy, zz], true);\n return [x, y, z, alpha];\n};\n\n/**\n * convert rgb to hex color\n * @param {Array.} rgb - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1\n * @returns {string} - hex color\n */\nexport const convertRgbToHex = rgb => {\n const [r, g, b, alpha] = validateColorComponents(rgb, {\n alpha: true,\n maxRange: MAX_RGB\n });\n const rr = numberToHexString(r);\n const gg = numberToHexString(g);\n const bb = numberToHexString(b);\n const aa = numberToHexString(alpha * MAX_RGB);\n let hex;\n if (aa === 'ff') {\n hex = `#${rr}${gg}${bb}`;\n } else {\n hex = `#${rr}${gg}${bb}${aa}`;\n }\n return hex;\n};\n\n/**\n * convert linear rgb to rgb\n * @param {Array.} rgb - [r, g, b] r|g|b: 0..1\n * @param {boolean} round - round result\n * @returns {Array.} - [r, g, b] r|g|b: 0..255\n */\nexport const convertLinearRgbToRgb = (rgb, round = false) => {\n let [r, g, b] = validateColorComponents(rgb, {\n maxLength: TRIA\n });\n const COND_POW = 809 / 258400;\n if (r > COND_POW) {\n r = Math.pow(r, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n r *= LINEAR_COEF;\n }\n r *= MAX_RGB;\n if (g > COND_POW) {\n g = Math.pow(g, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n g *= LINEAR_COEF;\n }\n g *= MAX_RGB;\n if (b > COND_POW) {\n b = Math.pow(b, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n b *= LINEAR_COEF;\n }\n b *= MAX_RGB;\n return [\n round ? Math.round(r) : r,\n round ? Math.round(g) : g,\n round ? Math.round(b) : b\n ];\n};\n\n/**\n * convert linear rgb to hex color\n * @param {Array.} rgb - [r, g, b, alpha] r|g|b|alpha: 0..1\n * @param {boolean} skip - skip validate\n * @returns {string} - hex color\n */\nexport const convertLinearRgbToHex = (rgb, skip = false) => {\n let r, g, b, alpha;\n if (skip) {\n [r, g, b, alpha] = rgb;\n } else {\n [r, g, b, alpha] = validateColorComponents(rgb, {\n minLength: QUAT\n });\n }\n [r, g, b] = convertLinearRgbToRgb([r, g, b], true);\n const rr = numberToHexString(r);\n const gg = numberToHexString(g);\n const bb = numberToHexString(b);\n const aa = numberToHexString(alpha * MAX_RGB);\n let hex;\n if (aa === 'ff') {\n hex = `#${rr}${gg}${bb}`;\n } else {\n hex = `#${rr}${gg}${bb}${aa}`;\n }\n return hex;\n};\n\n/**\n * convert xyz to hex color\n * @param {Array.} xyz - [x, y, z, alpha]\n * @returns {string} - hex color\n */\nexport const convertXyzToHex = xyz => {\n const [x, y, z, alpha] = validateColorComponents(xyz, {\n minLength: QUAT,\n validateRange: false\n });\n const [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n const hex = convertLinearRgbToHex([\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1),\n alpha\n ], true);\n return hex;\n};\n\n/**\n * convert xyz D50 to hex color\n * @param {Array.} xyz - [x, y, z, alpha]\n * @returns {string} - hex color\n */\nexport const convertXyzD50ToHex = xyz => {\n const [x, y, z, alpha] = validateColorComponents(xyz, {\n minLength: QUAT,\n validateRange: false\n });\n const xyzD65 = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n const [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, xyzD65, true);\n const hex = convertLinearRgbToHex([\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1),\n alpha\n ]);\n return hex;\n};\n\n/**\n * convert xyz to rgb\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1\n */\nexport const convertXyzToRgb = (xyz, skip = false) => {\n let x, y, z, alpha;\n if (skip) {\n [x, y, z, alpha] = xyz;\n } else {\n [x, y, z, alpha] = validateColorComponents(xyz, {\n validateRange: false\n });\n }\n let [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n [r, g, b] = convertLinearRgbToRgb([\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1)\n ], true);\n return [r, g, b, alpha];\n};\n\n/**\n * convert xyz to xyz-d50\n * @param {Array.} xyz - [x, y, z, alpha]\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const convertXyzToXyzD50 = xyz => {\n const [xx, yy, zz, alpha] = validateColorComponents(xyz, {\n validateRange: false\n });\n const [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [xx, yy, zz], true);\n return [x, y, z, alpha];\n};\n\n/**\n * convert xyz to hsl\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [h, s, l, alpha]\n */\nexport const convertXyzToHsl = (xyz, skip = false) => {\n const [rr, gg, bb, alpha] = convertXyzToRgb(xyz, skip);\n const r = rr / MAX_RGB;\n const g = gg / MAX_RGB;\n const b = bb / MAX_RGB;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n const l = (max + min) * HALF * MAX_PCT;\n let h, s;\n if (Math.round(l) === 0 || Math.round(l) === MAX_PCT) {\n h = NONE;\n s = NONE;\n } else {\n s = d / (1 - Math.abs(max + min - 1)) * MAX_PCT;\n if (s === 0) {\n h = NONE;\n } else {\n switch (max) {\n case r:\n h = (g - b) / d;\n break;\n case g:\n h = (b - r) / d + DUO;\n break;\n case b:\n default:\n h = (r - g) / d + QUAT;\n break;\n }\n h = h * SEXA % DEG;\n if (h < 0) {\n h += DEG;\n }\n }\n }\n return [h, s, l, alpha];\n};\n\n/**\n * convert xyz to hwb\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [h, w, b, alpha]\n */\nexport const convertXyzToHwb = (xyz, skip = false) => {\n const [r, g, b, alpha] = convertXyzToRgb(xyz, skip);\n const w = Math.min(r, g, b) / MAX_RGB;\n const bk = 1 - Math.max(r, g, b) / MAX_RGB;\n let h;\n if (w + bk === 1) {\n h = NONE;\n } else {\n [h] = convertXyzToHsl(xyz);\n }\n return [\n h,\n w * MAX_PCT,\n bk * MAX_PCT,\n alpha\n ];\n};\n\n/**\n * convert xyz to oklab\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [l, a, b, alpha]\n */\nexport const convertXyzToOklab = (xyz, skip = false) => {\n let x, y, z, alpha;\n if (skip) {\n [x, y, z, alpha] = xyz;\n } else {\n [x, y, z, alpha] = validateColorComponents(xyz, {\n validateRange: false\n });\n }\n const lms = transformMatrix(MATRIX_XYZ_TO_LMS, [x, y, z], true);\n const xyzLms = lms.map(c => Math.cbrt(c));\n let [l, a, b] = transformMatrix(MATRIX_LMS_TO_OKLAB, xyzLms, true);\n l = Math.min(Math.max(l, 0), 1);\n const lPct = Math.round(parseFloat(l.toFixed(QUAT)) * MAX_PCT);\n if (lPct === 0 || lPct === MAX_PCT) {\n a = NONE;\n b = NONE;\n }\n return [l, a, b, alpha];\n};\n\n/**\n * convert xyz to oklch\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [l, c, h, alpha]\n */\nexport const convertXyzToOklch = (xyz, skip = false) => {\n const [l, a, b, aa] = convertXyzToOklab(xyz, skip);\n let c, h;\n const lPct = Math.round(parseFloat(l.toFixed(QUAT)) * MAX_PCT);\n if (lPct === 0 || lPct === MAX_PCT) {\n c = NONE;\n h = NONE;\n } else {\n c =\n Math.max(Math.sqrt(Math.pow(a, POW_SQR) + Math.pow(b, POW_SQR)), 0);\n if (parseFloat(c.toFixed(QUAT)) === 0) {\n h = NONE;\n } else {\n h = Math.atan2(b, a) * DEG * HALF / Math.PI;\n if (h < 0) {\n h += DEG;\n }\n }\n }\n return [l, c, h, aa];\n};\n\n/**\n * convert xyz D50 to rgb\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1\n */\nexport const convertXyzD50ToRgb = (xyz, skip = false) => {\n let x, y, z, alpha;\n if (skip) {\n [x, y, z, alpha] = xyz;\n } else {\n [x, y, z, alpha] = validateColorComponents(xyz, {\n minLength: QUAT,\n validateRange: false\n });\n }\n const xyzD65 = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n const [r, g, b] = convertXyzToRgb(xyzD65, true);\n return [r, g, b, alpha];\n};\n\n/**\n * convert xyz-d50 to lab\n * @param {Array.} xyz - [x, y, z, a]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [l, a, b, alpha]\n */\nexport const convertXyzD50ToLab = (xyz, skip = false) => {\n let x, y, z, alpha;\n if (skip) {\n [x, y, z, alpha] = xyz;\n } else {\n [x, y, z, alpha] = validateColorComponents(xyz, {\n validateRange: false\n });\n }\n const xyzD50 = [x, y, z].map((val, i) => val / D50[i]);\n const [f0, f1, f2] = xyzD50.map(val => val > LAB_EPSILON\n ? Math.cbrt(val)\n : (val * LAB_KAPPA + HEX) / LAB_L\n );\n const l = Math.min(Math.max((LAB_L * f1) - HEX, 0), MAX_PCT);\n let a, b;\n if (l === 0 || l === MAX_PCT) {\n a = NONE;\n b = NONE;\n } else {\n a = (f0 - f1) * LAB_A;\n b = (f1 - f2) * LAB_B;\n }\n return [l, a, b, alpha];\n};\n\n/**\n * convert xyz-d50 to lch\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [l, c, h, alpha]\n */\nexport const convertXyzD50ToLch = (xyz, skip = false) => {\n const [l, a, b, alpha] = convertXyzD50ToLab(xyz, skip);\n let c, h;\n if (l === 0 || l === MAX_PCT) {\n c = NONE;\n h = NONE;\n } else {\n c = Math.max(Math.sqrt(Math.pow(a, POW_SQR) + Math.pow(b, POW_SQR)), 0);\n h = Math.atan2(b, a) * DEG * HALF / Math.PI;\n if (h < 0) {\n h += DEG;\n }\n }\n return [l, c, h, alpha];\n};\n\n/**\n * convert hex color to rgb\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1\n */\nexport const convertHexToRgb = value => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n if (!(/^#[\\da-f]{6}$/.test(value) || /^#[\\da-f]{3}$/.test(value) ||\n /^#[\\da-f]{8}$/.test(value) || /^#[\\da-f]{4}$/.test(value))) {\n throw new SyntaxError(`Invalid property value: ${value}`);\n }\n const arr = [];\n if (/^#[\\da-f]{6}$/.test(value)) {\n const [, r, g, b] = value.match(/^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/);\n arr.push(\n parseInt(r, HEX),\n parseInt(g, HEX),\n parseInt(b, HEX),\n 1\n );\n } else if (/^#[\\da-f]{3}$/.test(value)) {\n const [, r, g, b] = value.match(/^#([\\da-f])([\\da-f])([\\da-f])$/);\n arr.push(\n parseInt(`${r}${r}`, HEX),\n parseInt(`${g}${g}`, HEX),\n parseInt(`${b}${b}`, HEX),\n 1\n );\n } else if (/^#[\\da-f]{8}$/.test(value)) {\n const [, r, g, b, alpha] =\n value.match(/^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/);\n arr.push(\n parseInt(r, HEX),\n parseInt(g, HEX),\n parseInt(b, HEX),\n parseHexAlpha(alpha)\n );\n } else if (/^#[\\da-f]{4}$/.test(value)) {\n const [, r, g, b, alpha] =\n value.match(/^#([\\da-f])([\\da-f])([\\da-f])([\\da-f])$/);\n arr.push(\n parseInt(`${r}${r}`, HEX),\n parseInt(`${g}${g}`, HEX),\n parseInt(`${b}${b}`, HEX),\n parseHexAlpha(`${alpha}${alpha}`)\n );\n }\n return arr;\n};\n\n/**\n * convert hex color to linear rgb\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, alpha] r|g|b|alpha: 0..1\n */\nexport const convertHexToLinearRgb = value => {\n const [rr, gg, bb, alpha] = convertHexToRgb(value);\n const [r, g, b] = convertRgbToLinearRgb([rr, gg, bb], true);\n return [r, g, b, alpha];\n};\n\n/**\n * convert hex color to xyz\n * @param {string} value - color value\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const convertHexToXyz = value => {\n const [r, g, b, alpha] = convertHexToLinearRgb(value);\n const [x, y, z] = transformMatrix(MATRIX_L_RGB_TO_XYZ, [r, g, b], true);\n return [x, y, z, alpha];\n};\n\n/**\n * parse rgb()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|string} - ['rgb', r, g, b, alpha], '(empty)'\n */\nexport const parseRgb = (value, opt = {}) => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n const reg = new RegExp(`^rgba?\\\\(\\\\s*(${SYN_MOD}|${SYN_RGB_LV3})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const [, val] = value.match(reg);\n let [v1, v2, v3, v4] = val.replace(/[,/]/g, ' ').split(/\\s+/);\n let r, g, b;\n if (v1 === NONE) {\n r = 0;\n } else {\n if (v1[0] === '.') {\n v1 = `0${v1}`;\n }\n if (v1.endsWith('%')) {\n r = parseFloat(v1) * MAX_RGB / MAX_PCT;\n } else {\n r = parseFloat(v1);\n }\n r = Math.min(Math.max(roundToPrecision(r, OCT), 0), MAX_RGB);\n }\n if (v2 === NONE) {\n g = 0;\n } else {\n if (v2[0] === '.') {\n v2 = `0${v2}`;\n }\n if (v2.endsWith('%')) {\n g = parseFloat(v2) * MAX_RGB / MAX_PCT;\n } else {\n g = parseFloat(v2);\n }\n g = Math.min(Math.max(roundToPrecision(g, OCT), 0), MAX_RGB);\n }\n if (v3 === NONE) {\n b = 0;\n } else {\n if (v3[0] === '.') {\n v3 = `0${v3}`;\n }\n if (v3.endsWith('%')) {\n b = parseFloat(v3) * MAX_RGB / MAX_PCT;\n } else {\n b = parseFloat(v3);\n }\n b = Math.min(Math.max(roundToPrecision(b, OCT), 0), MAX_RGB);\n }\n const alpha = parseAlpha(v4);\n return [\n 'rgb',\n r,\n g,\n b,\n format === VAL_MIX && v4 === NONE ? NONE : alpha\n ];\n};\n\n/**\n * parse hsl()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['rgb', r, g, b, alpha], '(empty)', null\n */\nexport const parseHsl = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n if (!REG_HSL.test(value)) {\n switch (format) {\n case 'hsl':\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const [, val] = value.match(REG_HSL);\n let [h, s, l, alpha] = val.replace(/[,/]/g, ' ').split(/\\s+/);\n if (h === NONE) {\n if (format !== 'hsl') {\n h = 0;\n }\n } else {\n h = angleToDeg(h);\n }\n if (s === NONE) {\n if (format !== 'hsl') {\n s = 0;\n }\n } else {\n if (s[0] === '.') {\n s = `0${s}`;\n }\n s = Math.min(Math.max(parseFloat(s), 0), MAX_PCT);\n }\n if (l === NONE) {\n if (format !== 'hsl') {\n l = 0;\n }\n } else {\n if (l[0] === '.') {\n l = `0${l}`;\n }\n l = Math.min(Math.max(parseFloat(l), 0), MAX_PCT);\n }\n if (alpha !== NONE || format !== 'hsl') {\n alpha = parseAlpha(alpha);\n }\n if (format === 'hsl') {\n return [format, h, s, l, alpha];\n }\n const ll = l / MAX_PCT;\n const sa = s / MAX_PCT * Math.min(ll, 1 - ll);\n const rk = (h / DEG * DOZ) % DOZ;\n const gk = (8 + h / DEG * DOZ) % DOZ;\n const bk = (4 + h / DEG * DOZ) % DOZ;\n const r =\n ll - sa * Math.max(-1, Math.min(rk - TRIA, TRIA ** POW_SQR - rk, 1));\n const g =\n ll - sa * Math.max(-1, Math.min(gk - TRIA, TRIA ** POW_SQR - gk, 1));\n const b =\n ll - sa * Math.max(-1, Math.min(bk - TRIA, TRIA ** POW_SQR - bk, 1));\n return [\n 'rgb',\n Math.min(Math.max(roundToPrecision(r * MAX_RGB, OCT), 0), MAX_RGB),\n Math.min(Math.max(roundToPrecision(g * MAX_RGB, OCT), 0), MAX_RGB),\n Math.min(Math.max(roundToPrecision(b * MAX_RGB, OCT), 0), MAX_RGB),\n alpha\n ];\n};\n\n/**\n * parse hwb()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['rgb', r, g, b, alpha], '(empty)', null\n */\nexport const parseHwb = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n if (!REG_HWB.test(value)) {\n switch (format) {\n case 'hwb':\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const [, val] = value.match(REG_HWB);\n let [h, w, b, alpha] = val.replace('/', ' ').split(/\\s+/);\n if (h === NONE) {\n if (format !== 'hwb') {\n h = 0;\n }\n } else {\n h = angleToDeg(h);\n }\n if (w === NONE) {\n if (format !== 'hwb') {\n w = 0;\n }\n } else {\n if (w[0] === '.') {\n w = `0${w}`;\n }\n w = Math.min(Math.max(parseFloat(w), 0), MAX_PCT) / MAX_PCT;\n }\n if (b === NONE) {\n if (format !== 'hwb') {\n b = 0;\n }\n } else {\n if (b[0] === '.') {\n b = `0${b}`;\n }\n b = Math.min(Math.max(parseFloat(b), 0), MAX_PCT) / MAX_PCT;\n }\n if (alpha !== NONE || format !== 'hwb') {\n alpha = parseAlpha(alpha);\n }\n if (format === 'hwb') {\n return [\n format,\n h,\n w === NONE ? w : w * MAX_PCT,\n b === NONE ? b : b * MAX_PCT,\n alpha\n ];\n }\n if (w + b >= 1) {\n const v = roundToPrecision(w / (w + b) * MAX_RGB, OCT);\n return ['rgb', v, v, v, alpha];\n }\n const factor = (1 - w - b) / MAX_RGB;\n let [, rr, gg, bb] = parseHsl(`hsl(${h} 100 50)`);\n rr = roundToPrecision((rr * factor + w) * MAX_RGB, OCT);\n gg = roundToPrecision((gg * factor + w) * MAX_RGB, OCT);\n bb = roundToPrecision((bb * factor + w) * MAX_RGB, OCT);\n return [\n 'rgb',\n Math.min(Math.max(rr, 0), MAX_RGB),\n Math.min(Math.max(gg, 0), MAX_RGB),\n Math.min(Math.max(bb, 0), MAX_RGB),\n alpha\n ];\n};\n\n/**\n + parse lab()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - [xyz-d50, x, y, z, alpha], ['lab', l, a, b, alpha], '(empty)', null\n */\nexport const parseLab = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n if (!REG_LAB.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const COEF_PCT = 1.25;\n const COND_POW = 8;\n const [, val] = value.match(REG_LAB);\n let [l, a, b, alpha] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n if (!REG_SPEC.test(format)) {\n l = 0;\n }\n } else {\n if (l[0] === '.') {\n l = `0${l}`;\n }\n if (l.endsWith('%')) {\n l = parseFloat(l);\n if (l > MAX_PCT) {\n l = MAX_PCT;\n }\n } else {\n l = parseFloat(l);\n }\n if (l < 0) {\n l = 0;\n }\n }\n if (a === NONE) {\n if (!REG_SPEC.test(format)) {\n a = 0;\n }\n } else {\n if (a[0] === '.') {\n a = `0${a}`;\n }\n if (a.endsWith('%')) {\n a = parseFloat(a) * COEF_PCT;\n } else {\n a = parseFloat(a);\n }\n }\n if (b === NONE) {\n if (!REG_SPEC.test(format)) {\n b = 0;\n }\n } else {\n if (b.endsWith('%')) {\n b = parseFloat(b) * COEF_PCT;\n } else {\n b = parseFloat(b);\n }\n }\n if (alpha !== NONE || !REG_SPEC.test(format)) {\n alpha = parseAlpha(alpha);\n }\n if (REG_SPEC.test(format)) {\n return [\n 'lab',\n l === NONE ? l : roundToPrecision(l, HEX),\n a === NONE ? a : roundToPrecision(a, HEX),\n b === NONE ? b : roundToPrecision(b, HEX),\n alpha\n ];\n }\n const fl = (l + HEX) / LAB_L;\n const fa = (a / LAB_A + fl);\n const fb = (fl - b / LAB_B);\n const powFl = Math.pow(fl, POW_CUBE);\n const powFa = Math.pow(fa, POW_CUBE);\n const powFb = Math.pow(fb, POW_CUBE);\n const xyz = [\n powFa > LAB_EPSILON ? powFa : (fa * LAB_L - HEX) / LAB_KAPPA,\n l > COND_POW ? powFl : l / LAB_KAPPA,\n powFb > LAB_EPSILON ? powFb : (fb * LAB_L - HEX) / LAB_KAPPA\n ];\n const [x, y, z] = xyz.map((val, i) => val * D50[i]);\n return ['xyz-d50',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha\n ];\n};\n\n/**\n + parse lch()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['xyz-d50', x, y, z, alpha], ['lch', l, c, h, alpha], '(empty)', null\n */\nexport const parseLch = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n if (!REG_LCH.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const COEF_PCT = 1.5;\n const [, val] = value.match(REG_LCH);\n let [l, c, h, alpha] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n if (!REG_SPEC.test(format)) {\n l = 0;\n }\n } else {\n if (l[0] === '.') {\n l = `0${l}`;\n }\n l = parseFloat(l);\n if (l < 0) {\n l = 0;\n }\n }\n if (c === NONE) {\n if (!REG_SPEC.test(format)) {\n c = 0;\n }\n } else {\n if (c[0] === '.') {\n c = `0${c}`;\n }\n if (c.endsWith('%')) {\n c = parseFloat(c) * COEF_PCT;\n } else {\n c = parseFloat(c);\n }\n }\n if (h === NONE) {\n if (!REG_SPEC.test(format)) {\n h = 0;\n }\n } else {\n h = angleToDeg(h);\n }\n if (alpha !== NONE || !REG_SPEC.test(format)) {\n alpha = parseAlpha(alpha);\n }\n if (REG_SPEC.test(format)) {\n return [\n 'lch',\n l === NONE ? l : roundToPrecision(l, HEX),\n c === NONE ? c : roundToPrecision(c, HEX),\n h === NONE ? h : roundToPrecision(h, HEX),\n alpha\n ];\n }\n const a = c * Math.cos(h * Math.PI / (DEG * HALF));\n const b = c * Math.sin(h * Math.PI / (DEG * HALF));\n const [, x, y, z] = parseLab(`lab(${l} ${a} ${b})`);\n return [\n 'xyz-d50',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha\n ];\n};\n\n/**\n * parse oklab()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['xyz-d65', x, y, z, alpha], ['oklab', l, a, b, alpha], '(empty)', null\n */\nexport const parseOklab = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n if (!REG_OKLAB.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const COEF_PCT = 0.4;\n const [, val] = value.match(REG_OKLAB);\n let [l, a, b, alpha] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n if (!REG_SPEC.test(format)) {\n l = 0;\n }\n } else {\n if (l[0] === '.') {\n l = `0${l}`;\n }\n if (l.endsWith('%')) {\n l = parseFloat(l) / MAX_PCT;\n } else {\n l = parseFloat(l);\n }\n if (l < 0) {\n l = 0;\n }\n }\n if (a === NONE) {\n if (!REG_SPEC.test(format)) {\n a = 0;\n }\n } else {\n if (a[0] === '.') {\n a = `0${a}`;\n }\n if (a.endsWith('%')) {\n a = parseFloat(a) * COEF_PCT / MAX_PCT;\n } else {\n a = parseFloat(a);\n }\n }\n if (b === NONE) {\n if (!REG_SPEC.test(format)) {\n b = 0;\n }\n } else {\n if (b.endsWith('%')) {\n b = parseFloat(b) * COEF_PCT / MAX_PCT;\n } else {\n b = parseFloat(b);\n }\n }\n if (alpha !== NONE || !REG_SPEC.test(format)) {\n alpha = parseAlpha(alpha);\n }\n if (REG_SPEC.test(format)) {\n return [\n 'oklab',\n l === NONE ? l : roundToPrecision(l, HEX),\n a === NONE ? a : roundToPrecision(a, HEX),\n b === NONE ? b : roundToPrecision(b, HEX),\n alpha\n ];\n }\n const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);\n const xyzLms = lms.map(c => Math.pow(c, POW_CUBE));\n const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms, true);\n return [\n 'xyz-d65',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha\n ];\n};\n\n/**\n * parse oklch()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['xyz-d65', x, y, z, alpha], ['oklch', l, c, h, alpha], '(empty)', null\n */\nexport const parseOklch = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n if (!REG_OKLCH.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const COEF_PCT = 0.4;\n const [, val] = value.match(REG_OKLCH);\n let [l, c, h, alpha] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n if (!REG_SPEC.test(format)) {\n l = 0;\n }\n } else {\n if (l[0] === '.') {\n l = `0${l}`;\n }\n if (l.endsWith('%')) {\n l = parseFloat(l) / MAX_PCT;\n } else {\n l = parseFloat(l);\n }\n if (l < 0) {\n l = 0;\n }\n }\n if (c === NONE) {\n if (!REG_SPEC.test(format)) {\n c = 0;\n }\n } else {\n if (c[0] === '.') {\n c = `0${c}`;\n }\n if (c.endsWith('%')) {\n c = parseFloat(c) * COEF_PCT / MAX_PCT;\n } else {\n c = parseFloat(c);\n }\n if (c < 0) {\n c = 0;\n }\n }\n if (h === NONE) {\n if (!REG_SPEC.test(format)) {\n h = 0;\n }\n } else {\n h = angleToDeg(h);\n }\n if (alpha !== NONE || !REG_SPEC.test(format)) {\n alpha = parseAlpha(alpha);\n }\n if (REG_SPEC.test(format)) {\n return [\n 'oklch',\n l === NONE ? l : roundToPrecision(l, HEX),\n c === NONE ? c : roundToPrecision(c, HEX),\n h === NONE ? h : roundToPrecision(h, HEX),\n alpha\n ];\n }\n const a = c * Math.cos(h * Math.PI / (DEG * HALF));\n const b = c * Math.sin(h * Math.PI / (DEG * HALF));\n const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);\n const xyzLms = lms.map(cl => Math.pow(cl, POW_CUBE));\n const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms, true);\n return [\n 'xyz-d65',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha\n ];\n};\n\n/**\n * parse color()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.colorSpace] - color space\n * @param {boolean} [opt.d50] - xyz in d50 white point\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['xyz-(d50|d65)', x, y, z, alpha], [cs, r, g, b, alpha], '(empty)', null\n */\nexport const parseColorFunc = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { colorSpace, d50, format } = opt;\n if (!REG_FN_COLOR.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const [, val] = value.match(REG_FN_COLOR);\n let [cs, v1, v2, v3, v4] = val.replace('/', ' ').split(/\\s+/);\n let r, g, b;\n if (cs === 'xyz') {\n cs = 'xyz-d65';\n }\n if (v1 === NONE) {\n r = 0;\n } else {\n if (v1[0] === '.') {\n v1 = `0${v1}`;\n }\n r = v1.endsWith('%') ? parseFloat(v1) / MAX_PCT : parseFloat(v1);\n }\n if (v2 === NONE) {\n g = 0;\n } else {\n if (v2[0] === '.') {\n v2 = `0${v2}`;\n }\n g = v2.endsWith('%') ? parseFloat(v2) / MAX_PCT : parseFloat(v2);\n }\n if (v3 === NONE) {\n b = 0;\n } else {\n if (v3[0] === '.') {\n v3 = `0${v3}`;\n }\n b = v3.endsWith('%') ? parseFloat(v3) / MAX_PCT : parseFloat(v3);\n }\n const alpha = parseAlpha(v4);\n if (REG_SPEC.test(format) || (format === VAL_MIX && cs === colorSpace)) {\n return [\n cs,\n v1 === NONE ? NONE : roundToPrecision(r, DEC),\n v2 === NONE ? NONE : roundToPrecision(g, DEC),\n v3 === NONE ? NONE : roundToPrecision(b, DEC),\n v4 === NONE ? NONE : alpha\n ];\n }\n let x, y, z;\n // srgb\n if (cs === 'srgb') {\n [x, y, z] = convertRgbToXyz([r * MAX_RGB, g * MAX_RGB, b * MAX_RGB]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // srgb-linear\n } else if (cs === 'srgb-linear') {\n [x, y, z] = transformMatrix(MATRIX_L_RGB_TO_XYZ, [r, g, b]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // display-p3\n } else if (cs === 'display-p3') {\n const linearRgb = convertRgbToLinearRgb([\n r * MAX_RGB,\n g * MAX_RGB,\n b * MAX_RGB\n ]);\n [x, y, z] = transformMatrix(MATRIX_P3_TO_XYZ, linearRgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // rec2020\n } else if (cs === 'rec2020') {\n const ALPHA = 1.09929682680944;\n const BETA = 0.018053968510807;\n const REC_COEF = 0.45;\n const rgb = [r, g, b].map(c => {\n let cl;\n if (c < BETA * REC_COEF * DEC) {\n cl = c / (REC_COEF * DEC);\n } else {\n cl = Math.pow((c + ALPHA - 1) / ALPHA, 1 / REC_COEF);\n }\n return cl;\n });\n [x, y, z] = transformMatrix(MATRIX_REC2020_TO_XYZ, rgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // a98-rgb\n } else if (cs === 'a98-rgb') {\n const POW_A98 = 563 / 256;\n const rgb = [r, g, b].map(c => {\n const cl = Math.pow(c, POW_A98);\n return cl;\n });\n [x, y, z] = transformMatrix(MATRIX_A98_TO_XYZ, rgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // prophoto-rgb\n } else if (cs === 'prophoto-rgb') {\n const POW_PROPHOTO = 1.8;\n const rgb = [r, g, b].map(c => {\n let cl;\n if (c > 1 / (HEX * DUO)) {\n cl = Math.pow(c, POW_PROPHOTO);\n } else {\n cl = c / HEX;\n }\n return cl;\n });\n [x, y, z] = transformMatrix(MATRIX_PROPHOTO_TO_XYZ_D50, rgb);\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n }\n // xyz, xyz-d50, xyz-d65\n } else if (/^xyz(?:-d(?:50|65))?$/.test(cs)) {\n [x, y, z] = [r, g, b];\n if (cs === 'xyz-d50') {\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n }\n } else if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n }\n return [\n d50 ? 'xyz-d50' : 'xyz-d65',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n format === VAL_MIX && v4 === NONE ? NONE : alpha\n ];\n};\n\n/**\n * parse color value\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {boolean} [opt.d50] - xyz in d50 white point\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['xyz-(d50|d65)', x, y, z, alpha], ['rgb', r, g, b, alpha]\n * - value, '(empty)', null\n */\nexport const parseColorValue = (value, opt = {}) => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { d50, format } = opt;\n // unknown color and/or invalid color\n if (!REG_COLOR.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n let x, y, z, alpha;\n // complement currentcolor as a missing color\n if (REG_CURRENT.test(value)) {\n if (format === VAL_COMP) {\n return ['rgb', 0, 0, 0, 0];\n }\n if (format === VAL_SPEC) {\n return value;\n }\n x = 0;\n y = 0;\n z = 0;\n alpha = 0;\n // named-color\n } else if (/^[a-z]+$/.test(value)) {\n if (Object.prototype.hasOwnProperty.call(NAMED_COLORS, value)) {\n if (format === VAL_SPEC) {\n return value;\n }\n const [r, g, b] = NAMED_COLORS[value];\n alpha = 1;\n if (format === VAL_COMP) {\n return ['rgb', r, g, b, alpha];\n }\n [x, y, z] = convertRgbToXyz([r, g, b], true);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n } else {\n if (format === VAL_COMP) {\n return ['rgb', 0, 0, 0, 0];\n }\n if (format === VAL_SPEC) {\n if (value === 'transparent') {\n return value;\n }\n return '';\n }\n if (format === VAL_MIX) {\n if (value === 'transparent') {\n return ['rgb', 0, 0, 0, 0];\n }\n return null;\n }\n x = 0;\n y = 0;\n z = 0;\n alpha = 0;\n }\n // hex-color\n } else if (value[0] === '#') {\n if (REG_SPEC.test(format)) {\n const rgb = convertHexToRgb(value);\n return ['rgb', ...rgb];\n }\n [x, y, z, alpha] = convertHexToXyz(value);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // lab()\n } else if (value.startsWith('lab')) {\n if (REG_SPEC.test(format)) {\n return parseLab(value, opt);\n }\n [, x, y, z, alpha] = parseLab(value);\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n }\n // lch()\n } else if (value.startsWith('lch')) {\n if (REG_SPEC.test(format)) {\n return parseLch(value, opt);\n }\n [, x, y, z, alpha] = parseLch(value);\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n }\n // oklab()\n } else if (value.startsWith('oklab')) {\n if (REG_SPEC.test(format)) {\n return parseOklab(value, opt);\n }\n [, x, y, z, alpha] = parseOklab(value);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // oklch()\n } else if (value.startsWith('oklch')) {\n if (REG_SPEC.test(format)) {\n return parseOklch(value, opt);\n }\n [, x, y, z, alpha] = parseOklch(value);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n } else {\n let r, g, b;\n // hsl()\n if (value.startsWith('hsl')) {\n [, r, g, b, alpha] = parseHsl(value);\n // hwb()\n } else if (value.startsWith('hwb')) {\n [, r, g, b, alpha] = parseHwb(value);\n // rgb()\n } else {\n [, r, g, b, alpha] = parseRgb(value, opt);\n }\n if (REG_SPEC.test(format)) {\n return [\n 'rgb',\n Math.round(r),\n Math.round(g),\n Math.round(b),\n alpha\n ];\n }\n [x, y, z] = convertRgbToXyz([r, g, b]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n }\n return [\n d50 ? 'xyz-d50' : 'xyz-d65',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha\n ];\n};\n\n/**\n * resolve color value\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.colorSpace] - color space\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - [cs, v1, v2, v3, alpha], value, '(empty)', null\n */\nexport const resolveColorValue = (value, opt = {}) => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { colorSpace, format } = opt;\n // unknown color and/or invalid color\n if (!REG_COLOR.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n let cs, r, g, b, alpha;\n // complement currentcolor as a missing color\n if (REG_CURRENT.test(value)) {\n if (format === VAL_SPEC) {\n return value;\n }\n r = 0;\n g = 0;\n b = 0;\n alpha = 0;\n // named-color\n } else if (/^[a-z]+$/.test(value)) {\n if (Object.prototype.hasOwnProperty.call(NAMED_COLORS, value)) {\n if (format === VAL_SPEC) {\n return value;\n }\n [r, g, b] = NAMED_COLORS[value];\n alpha = 1;\n } else {\n if (format === VAL_SPEC) {\n if (value === 'transparent') {\n return value;\n }\n return '';\n }\n if (format === VAL_MIX) {\n if (value === 'transparent') {\n return ['rgb', 0, 0, 0, 0];\n }\n return null;\n }\n r = 0;\n g = 0;\n b = 0;\n alpha = 0;\n }\n // hex-color\n } else if (value[0] === '#') {\n [r, g, b, alpha] = convertHexToRgb(value);\n // rgb()\n } else if (value.startsWith('rgb')) {\n [, r, g, b, alpha] = parseRgb(value, opt);\n // hsl()\n } else if (value.startsWith('hsl')) {\n [, r, g, b, alpha] = parseHsl(value, opt);\n // hwb()\n } else if (value.startsWith('hwb')) {\n [, r, g, b, alpha] = parseHwb(value, opt);\n // lab(), lch()\n } else if (/^l(?:ab|ch)/.test(value)) {\n let x, y, z;\n if (value.startsWith('lab')) {\n [cs, x, y, z, alpha] = parseLab(value, opt);\n } else {\n [cs, x, y, z, alpha] = parseLch(value, opt);\n }\n if (REG_SPEC.test(format)) {\n return [cs, x, y, z, alpha];\n }\n [r, g, b, alpha] = convertXyzD50ToRgb([x, y, z, alpha]);\n // oklab(), oklch()\n } else if (/^okl(?:ab|ch)/.test(value)) {\n let x, y, z;\n if (value.startsWith('oklab')) {\n [cs, x, y, z, alpha] = parseOklab(value, opt);\n } else {\n [cs, x, y, z, alpha] = parseOklch(value, opt);\n }\n if (REG_SPEC.test(format)) {\n return [cs, x, y, z, alpha];\n }\n [r, g, b, alpha] = convertXyzToRgb([x, y, z, alpha]);\n }\n if (format === VAL_MIX && colorSpace === 'srgb') {\n return [\n 'srgb',\n r / MAX_RGB,\n g / MAX_RGB,\n b / MAX_RGB,\n alpha\n ];\n }\n return [\n 'rgb',\n Math.round(r),\n Math.round(g),\n Math.round(b),\n alpha\n ];\n};\n\n/**\n * resolve color()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.colorSpace] - color space\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - [cs, v1, v2, v3, alpha], '(empty)', null\n */\nexport const resolveColorFunc = (value, opt = {}) => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { colorSpace, format } = opt;\n if (!REG_FN_COLOR.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const [cs, x, y, z, alpha] = parseColorFunc(value, opt);\n if (REG_SPEC.test(format)) {\n return [cs, x, y, z, alpha];\n }\n let r, g, b;\n if (format === VAL_MIX) {\n if (cs === colorSpace) {\n return [\n cs,\n x === NONE ? x : x,\n y === NONE ? y : y,\n z === NONE ? z : z,\n alpha\n ];\n }\n [r, g, b] = convertXyzToRgb([x, y, z], true);\n } else {\n [r, g, b] = convertXyzToRgb([x, y, z], true);\n }\n return ['rgb', r, g, b, alpha];\n};\n\n/**\n * convert color value to linear rgb\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.colorSpace] - color space\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [r, g, b, alpha] r|g|b|alpha: 0..1\n */\nexport const convertColorToLinearRgb = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { colorSpace, format } = opt;\n let cs, r, g, b, alpha, x, y, z;\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [cs, x, y, z, alpha] = xyz;\n if (cs === colorSpace) {\n return [x, y, z, alpha];\n }\n [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n } else if (value.startsWith(FN_COLOR)) {\n const [, val] = value.match(REG_FN_COLOR);\n const [cs] = val.replace('/', ' ').split(/\\s+/);\n if (cs === 'srgb-linear') {\n [, r, g, b, alpha] = resolveColorFunc(value, {\n format: VAL_COMP\n });\n } else {\n [, x, y, z, alpha] = parseColorFunc(value);\n [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n }\n } else {\n [, x, y, z, alpha] = parseColorValue(value);\n [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n }\n return [\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1),\n alpha\n ];\n};\n\n/**\n * convert color value to rgb\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1\n */\nexport const convertColorToRgb = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let r, g, b, alpha;\n if (format === VAL_MIX) {\n let rgb;\n if (value.startsWith(FN_COLOR)) {\n rgb = resolveColorFunc(value, opt);\n } else {\n rgb = resolveColorValue(value, opt);\n }\n if (rgb === null) {\n return rgb;\n }\n [, r, g, b, alpha] = rgb;\n } else if (value.startsWith(FN_COLOR)) {\n const [, val] = value.match(REG_FN_COLOR);\n const [cs] = val.replace('/', ' ').split(/\\s+/);\n if (cs === 'srgb') {\n [, r, g, b, alpha] = resolveColorFunc(value, {\n format: VAL_COMP\n });\n r *= MAX_RGB;\n g *= MAX_RGB;\n b *= MAX_RGB;\n } else {\n [, r, g, b, alpha] = resolveColorFunc(value);\n }\n } else if (/^(?:ok)?l(?:ab|ch)/.test(value)) {\n [r, g, b, alpha] = convertColorToLinearRgb(value);\n [r, g, b] = convertLinearRgbToRgb([r, g, b]);\n } else {\n [, r, g, b, alpha] = resolveColorValue(value, {\n format: VAL_COMP\n });\n }\n return [r, g, b, alpha];\n};\n\n/**\n * convert color value to xyz\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {boolean} [opt.d50] - xyz in d50 white point\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const convertColorToXyz = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { d50, format } = opt;\n let x, y, z, alpha;\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n const [, val] = value.match(REG_FN_COLOR);\n const [cs] = val.replace('/', ' ').split(/\\s+/);\n if (d50) {\n if (cs === 'xyz-d50') {\n [, x, y, z, alpha] = resolveColorFunc(value, {\n format: VAL_COMP\n });\n } else {\n [, x, y, z, alpha] = parseColorFunc(value, opt);\n }\n } else if (/^xyz(?:-d65)?$/.test(cs)) {\n [, x, y, z, alpha] = resolveColorFunc(value, {\n format: VAL_COMP\n });\n } else {\n [, x, y, z, alpha] = parseColorFunc(value);\n }\n } else {\n [, x, y, z, alpha] = parseColorValue(value, opt);\n }\n return [x, y, z, alpha];\n};\n\n/**\n * convert color value to hsl\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [h, s, l, alpha]\n */\nexport const convertColorToHsl = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let h, s, l, alpha, x, y, z;\n if (REG_HSL.test(value)) {\n [, h, s, l, alpha] = parseHsl(value, {\n format: 'hsl'\n });\n if (format === 'hsl') {\n return [\n Math.round(h),\n Math.round(s),\n Math.round(l),\n alpha\n ];\n }\n return [h, s, l, alpha];\n }\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value);\n } else {\n [, x, y, z, alpha] = parseColorValue(value);\n }\n [h, s, l] = convertXyzToHsl([x, y, z], true);\n if (format === 'hsl') {\n return [\n Math.round(h),\n Math.round(s),\n Math.round(l),\n alpha\n ];\n }\n return [h, s, l, alpha];\n};\n\n/**\n * convert color value to hwb\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [h, w, b, alpha]\n */\nexport const convertColorToHwb = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let h, w, b, alpha, x, y, z;\n if (REG_HWB.test(value)) {\n [, h, w, b, alpha] = parseHwb(value, {\n format: 'hwb'\n });\n if (format === 'hwb') {\n return [\n Math.round(h),\n Math.round(w),\n Math.round(b),\n alpha\n ];\n }\n return [h, w, b, alpha];\n }\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value);\n } else {\n [, x, y, z, alpha] = parseColorValue(value);\n }\n [h, w, b] = convertXyzToHwb([x, y, z], true);\n if (format === 'hwb') {\n return [\n Math.round(h),\n Math.round(w),\n Math.round(b),\n alpha\n ];\n }\n return [h, w, b, alpha];\n};\n\n/**\n * convert color value to lab\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [l, a, b, alpha]\n */\nexport const convertColorToLab = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let l, a, b, alpha, x, y, z;\n if (REG_LAB.test(value)) {\n [, l, a, b, alpha] = parseLab(value, {\n format: VAL_COMP\n });\n return [l, a, b, alpha];\n }\n if (format === VAL_MIX) {\n let xyz;\n opt.d50 = true;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value, {\n d50: true\n });\n } else {\n [, x, y, z, alpha] = parseColorValue(value, {\n d50: true\n });\n }\n [l, a, b] = convertXyzD50ToLab([x, y, z], true);\n return [l, a, b, alpha];\n};\n\n/**\n * convert color value to lch\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [l, c, h, alpha]\n */\nexport const convertColorToLch = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let l, c, h, alpha, x, y, z;\n if (REG_LCH.test(value)) {\n [, l, c, h, alpha] = parseLch(value, {\n format: VAL_COMP\n });\n return [l, c, h, alpha];\n }\n if (format === VAL_MIX) {\n let xyz;\n opt.d50 = true;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value, {\n d50: true\n });\n } else {\n [, x, y, z, alpha] = parseColorValue(value, {\n d50: true\n });\n }\n [l, c, h] = convertXyzD50ToLch([x, y, z], true);\n return [l, c, h, alpha];\n};\n\n/**\n * convert color value to oklab\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [l, a, b, alpha]\n */\nexport const convertColorToOklab = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let l, a, b, alpha, x, y, z;\n if (REG_OKLAB.test(value)) {\n [, l, a, b, alpha] = parseOklab(value, {\n format: VAL_COMP\n });\n return [l, a, b, alpha];\n }\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value);\n } else {\n [, x, y, z, alpha] = parseColorValue(value);\n }\n [l, a, b] = convertXyzToOklab([x, y, z], true);\n return [l, a, b, alpha];\n};\n\n/**\n * convert color value to oklch\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [l, c, h, alpha]\n */\nexport const convertColorToOklch = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let l, c, h, alpha, x, y, z;\n if (REG_OKLCH.test(value)) {\n [, l, c, h, alpha] = parseOklch(value, {\n format: VAL_COMP\n });\n return [l, c, h, alpha];\n }\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value);\n } else {\n [, x, y, z, alpha] = parseColorValue(value);\n }\n [l, c, h] = convertXyzToOklch([x, y, z], true);\n return [l, c, h, alpha];\n};\n\n/**\n * resolve color-mix()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] format - output format\n * @returns {Array.|?string}\n * - [cs, v1, v2, v3, alpha], '(empty)', null\n */\nexport const resolveColorMix = (value, opt = {}) => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n const nestedItems = [];\n if (!REG_MIX.test(value)) {\n if (value.startsWith(FN_MIX) && REG_MIX_NEST.test(value)) {\n const regColorSpace = new RegExp(`^(?:${CS_RGB}|${CS_XYZ})$`);\n const items = value.match(REG_MIX_NEST);\n for (const item of items) {\n let val = resolveColorMix(item, {\n format: format === VAL_SPEC ? format : VAL_COMP\n });\n // computed value\n if (Array.isArray(val)) {\n const [v1, v2, v3, v4, v5] = val;\n if (v2 === 0 && v3 === 0 && v4 === 0 && v5 === 0) {\n value = '';\n break;\n }\n if (regColorSpace.test(v1)) {\n if (v5 === 1) {\n val = `color(${v1} ${v2} ${v3} ${v4})`;\n } else {\n val = `color(${v1} ${v2} ${v3} ${v4} / ${v5})`;\n }\n } else if (v5 === 1) {\n val = `${v1}(${v2} ${v3} ${v4})`;\n } else {\n val = `${v1}(${v2} ${v3} ${v4} / ${v5})`;\n }\n } else if (!REG_MIX.test(val)) {\n value = '';\n break;\n }\n nestedItems.push(val);\n value = value.replace(item, val);\n }\n if (!value) {\n if (format === VAL_SPEC) {\n return '';\n }\n return ['rgb', 0, 0, 0, 0];\n }\n } else if (format === VAL_SPEC) {\n return '';\n } else {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n let colorSpace, hueArc, colorA, pctA, colorB, pctB;\n if (nestedItems.length && format === VAL_SPEC) {\n const regColorSpace = new RegExp(`^color-mix\\\\(\\\\s*in\\\\s+(${CS_MIX})\\\\s*,`);\n const [, cs] = value.match(regColorSpace);\n if (REG_CS_HUE.test(cs)) {\n [, colorSpace, hueArc] = REG_CS_HUE.exec(cs);\n } else {\n colorSpace = cs;\n }\n if (nestedItems.length === 2) {\n const itemA = nestedItems[0].replace(/(?=[()])/g, '\\\\');\n const regA = new RegExp(`(${itemA})(?:\\\\s+(${PCT}))?`);\n if (regA.test(value)) {\n [, colorA, pctA] = value.match(regA);\n }\n const itemB = nestedItems[1].replace(/(?=[()])/g, '\\\\');\n const regB = new RegExp(`(${itemB})(?:\\\\s+(${PCT}))?`);\n if (regB.test(value)) {\n [, colorB, pctB] = value.match(regB);\n }\n } else {\n const colorPart = `(?:${SYN_COLOR_TYPE})(?:\\\\s+${PCT})?`;\n const item = nestedItems[0].replace(/(?=[()])/g, '\\\\');\n const itemPart = `${item}(?:\\\\s+${PCT})?`;\n const itemPartCapt = `(${item})(?:\\\\s+(${PCT}))?`;\n const regColorPart = new RegExp(`^(${SYN_COLOR_TYPE})(?:\\\\s+(${PCT}))?$`);\n const regItemPart = new RegExp(`^${itemPartCapt}$`);\n const regPosition = new RegExp(`${itemPartCapt}\\\\s*\\\\)$`);\n // item is at the end\n if (regPosition.test(value)) {\n const reg = new RegExp(`(${colorPart})\\\\s*,\\\\s*(${itemPart})\\\\s*\\\\)$`);\n const [, colorPartA, colorPartB] = value.match(reg);\n [, colorA, pctA] = colorPartA.match(regColorPart);\n [, colorB, pctB] = colorPartB.match(regItemPart);\n } else {\n const reg = new RegExp(`(${itemPart})\\\\s*,\\\\s*(${colorPart})\\\\s*\\\\)$`);\n const [, colorPartA, colorPartB] = value.match(reg);\n [, colorA, pctA] = colorPartA.match(regItemPart);\n [, colorB, pctB] = colorPartB.match(regColorPart);\n }\n }\n } else {\n const [, cs, colorPartA, colorPartB] = value.match(REG_MIX_CAPT);\n const reg = new RegExp(`^(${SYN_COLOR_TYPE})(?:\\\\s+(${PCT}))?$`);\n [, colorA, pctA] = colorPartA.match(reg);\n [, colorB, pctB] = colorPartB.match(reg);\n if (REG_CS_HUE.test(cs)) {\n [, colorSpace, hueArc] = REG_CS_HUE.exec(cs);\n } else {\n colorSpace = cs;\n }\n }\n // normalize percentages and set multipler\n let pA, pB, m;\n if (pctA && pctB) {\n const p1 = parseFloat(pctA) / MAX_PCT;\n const p2 = parseFloat(pctB) / MAX_PCT;\n if (p1 < 0 || p1 > 1 || p2 < 0 || p2 > 1) {\n if (format === VAL_SPEC) {\n return '';\n }\n return ['rgb', 0, 0, 0, 0];\n }\n const factor = p1 + p2;\n if (factor === 0) {\n if (format === VAL_SPEC) {\n return '';\n }\n return ['rgb', 0, 0, 0, 0];\n }\n pA = p1 / factor;\n pB = p2 / factor;\n m = factor < 1 ? factor : 1;\n } else {\n if (pctA) {\n pA = parseFloat(pctA) / MAX_PCT;\n if (pA < 0 || pA > 1) {\n if (format === VAL_SPEC) {\n return '';\n }\n return ['rgb', 0, 0, 0, 0];\n }\n pB = 1 - pA;\n } else if (pctB) {\n pB = parseFloat(pctB) / MAX_PCT;\n if (pB < 0 || pB > 1) {\n if (format === VAL_SPEC) {\n return '';\n }\n return ['rgb', 0, 0, 0, 0];\n }\n pA = 1 - pB;\n } else {\n pA = HALF;\n pB = HALF;\n }\n m = 1;\n }\n if (colorSpace === 'xyz') {\n colorSpace = 'xyz-d65';\n }\n // specified value\n if (format === VAL_SPEC) {\n let valueA, valueB;\n if (colorA.startsWith(FN_MIX)) {\n valueA = colorA;\n } else if (colorA.startsWith(FN_COLOR)) {\n valueA = parseColorFunc(colorA, opt);\n if (Array.isArray(valueA)) {\n const [v1, v2, v3, v4, v5] = [...valueA];\n if (v5 === 1) {\n valueA = `color(${v1} ${v2} ${v3} ${v4})`;\n } else {\n valueA = `color(${v1} ${v2} ${v3} ${v4} / ${v5})`;\n }\n }\n } else {\n valueA = parseColorValue(colorA, opt);\n if (valueA === '') {\n return valueA;\n }\n if (Array.isArray(valueA)) {\n const [v1, v2, v3, v4, v5] = [...valueA];\n if (v5 === 1) {\n if (v1 === 'rgb') {\n valueA = `${v1}(${v2}, ${v3}, ${v4})`;\n } else {\n valueA = `${v1}(${v2} ${v3} ${v4})`;\n }\n } else if (v1 === 'rgb') {\n valueA = `${v1}a(${v2}, ${v3}, ${v4}, ${v5})`;\n } else {\n valueA = `${v1}(${v2} ${v3} ${v4} / ${v5})`;\n }\n }\n }\n if (colorB.startsWith(FN_MIX)) {\n valueB = colorB;\n } else if (colorB.startsWith(FN_COLOR)) {\n valueB = parseColorFunc(colorB, opt);\n if (Array.isArray(valueB)) {\n const [v1, v2, v3, v4, v5] = [...valueB];\n if (v5 === 1) {\n valueB = `color(${v1} ${v2} ${v3} ${v4})`;\n } else {\n valueB = `color(${v1} ${v2} ${v3} ${v4} / ${v5})`;\n }\n }\n } else {\n valueB = parseColorValue(colorB, opt);\n if (valueB === '') {\n return valueB;\n }\n if (Array.isArray(valueB)) {\n const [v1, v2, v3, v4, v5] = [...valueB];\n if (v5 === 1) {\n if (v1 === 'rgb') {\n valueB = `${v1}(${v2}, ${v3}, ${v4})`;\n } else {\n valueB = `${v1}(${v2} ${v3} ${v4})`;\n }\n } else if (v1 === 'rgb') {\n valueB = `${v1}a(${v2}, ${v3}, ${v4}, ${v5})`;\n } else {\n valueB = `${v1}(${v2} ${v3} ${v4} / ${v5})`;\n }\n }\n }\n if (pctA && pctB) {\n valueA += ` ${parseFloat(pctA)}%`;\n valueB += ` ${parseFloat(pctB)}%`;\n } else if (pctA) {\n const pA = parseFloat(pctA);\n if (pA !== MAX_PCT * HALF) {\n valueA += ` ${pA}%`;\n }\n } else if (pctB) {\n const pA = MAX_PCT - parseFloat(pctB);\n if (pA !== MAX_PCT * HALF) {\n valueA += ` ${pA}%`;\n }\n }\n if (hueArc) {\n return `color-mix(in ${colorSpace} ${hueArc} hue, ${valueA}, ${valueB})`;\n } else {\n return `color-mix(in ${colorSpace}, ${valueA}, ${valueB})`;\n }\n }\n let r, g, b, alpha;\n // in srgb, srgb-linear\n if (/^srgb(?:-linear)?$/.test(colorSpace)) {\n let rgbA, rgbB;\n if (colorSpace === 'srgb') {\n if (REG_CURRENT.test(colorA)) {\n rgbA = [NONE, NONE, NONE, NONE];\n } else {\n rgbA = convertColorToRgb(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n rgbB = [NONE, NONE, NONE, NONE];\n } else {\n rgbB = convertColorToRgb(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n } else {\n if (REG_CURRENT.test(colorA)) {\n rgbA = [NONE, NONE, NONE, NONE];\n } else {\n rgbA = convertColorToLinearRgb(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n rgbB = [NONE, NONE, NONE, NONE];\n } else {\n rgbB = convertColorToLinearRgb(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n }\n if (rgbA === null || rgbB === null) {\n return ['rgb', 0, 0, 0, 0];\n }\n let [rA, gA, bA, alphaA] = rgbA;\n let [rB, gB, bB, alphaB] = rgbB;\n const rNone = rA === NONE && rB === NONE;\n const gNone = gA === NONE && gB === NONE;\n const bNone = bA === NONE && bB === NONE;\n const alphaNone = alphaA === NONE && alphaB === NONE;\n [[rA, gA, bA, alphaA], [rB, gB, bB, alphaB]] =\n normalizeColorComponents([rA, gA, bA, alphaA], [rB, gB, bB, alphaB],\n true);\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = (factorA + factorB);\n if (alpha === 0) {\n r = rA * pA + rB * pB;\n g = gA * pA + gB * pB;\n b = bA * pA + bB * pB;\n } else {\n r = (rA * factorA + rB * factorB) / alpha;\n g = (gA * factorA + gB * factorB) / alpha;\n b = (bA * factorA + bB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n if (format === VAL_COMP) {\n return [\n colorSpace,\n rNone ? NONE : roundToPrecision(r, HEX),\n gNone ? NONE : roundToPrecision(g, HEX),\n bNone ? NONE : roundToPrecision(b, HEX),\n alphaNone ? NONE : alpha * m\n ];\n }\n r *= MAX_RGB;\n g *= MAX_RGB;\n b *= MAX_RGB;\n // in xyz, xyz-d65, xyz-d50\n } else if (REG_CS_XYZ.test(colorSpace)) {\n let xyzA, xyzB;\n if (REG_CURRENT.test(colorA)) {\n xyzA = [NONE, NONE, NONE, NONE];\n } else {\n xyzA = convertColorToXyz(colorA, {\n colorSpace,\n d50: colorSpace === 'xyz-d50',\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n xyzB = [NONE, NONE, NONE, NONE];\n } else {\n xyzB = convertColorToXyz(colorB, {\n colorSpace,\n d50: colorSpace === 'xyz-d50',\n format: VAL_MIX\n });\n }\n if (xyzA === null || xyzB === null) {\n return ['rgb', 0, 0, 0, 0];\n }\n let [xA, yA, zA, alphaA] = xyzA;\n let [xB, yB, zB, alphaB] = xyzB;\n const xNone = xA === NONE && xB === NONE;\n const yNone = yA === NONE && yB === NONE;\n const zNone = zA === NONE && zB === NONE;\n const alphaNone = alphaA === NONE && alphaB === NONE;\n [[xA, yA, zA, alphaA], [xB, yB, zB, alphaB]] =\n normalizeColorComponents([xA, yA, zA, alphaA], [xB, yB, zB, alphaB],\n true);\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = (factorA + factorB);\n let x, y, z;\n if (alpha === 0) {\n x = xA * pA + xB * pB;\n y = yA * pA + yB * pB;\n z = zA * pA + zB * pB;\n } else {\n x = (xA * factorA + xB * factorB) / alpha;\n y = (yA * factorA + yB * factorB) / alpha;\n z = (zA * factorA + zB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n if (format === VAL_COMP) {\n return [\n colorSpace,\n xNone ? NONE : roundToPrecision(x, HEX),\n yNone ? NONE : roundToPrecision(y, HEX),\n zNone ? NONE : roundToPrecision(z, HEX),\n alphaNone ? NONE : alpha * m\n ];\n }\n if (colorSpace === 'xyz-d50') {\n [r, g, b] = convertXyzD50ToRgb([x, y, z], true);\n } else {\n [r, g, b] = convertXyzToRgb([x, y, z], true);\n }\n // in hsl, hwb\n } else if (/^h(?:sl|wb)$/.test(colorSpace)) {\n let hslA, hslB;\n if (colorSpace === 'hsl') {\n if (REG_CURRENT.test(colorA)) {\n hslA = [NONE, NONE, NONE, NONE];\n } else {\n hslA = convertColorToHsl(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n hslB = [NONE, NONE, NONE, NONE];\n } else {\n hslB = convertColorToHsl(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n } else {\n if (REG_CURRENT.test(colorA)) {\n hslA = [NONE, NONE, NONE, NONE];\n } else {\n hslA = convertColorToHwb(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n hslB = [NONE, NONE, NONE, NONE];\n } else {\n hslB = convertColorToHwb(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n }\n if (hslA === null || hslB === null) {\n return ['rgb', 0, 0, 0, 0];\n }\n let [hA, sA, lA, alphaA] = hslA;\n let [hB, sB, lB, alphaB] = hslB;\n const alphaNone = alphaA === NONE && alphaB === NONE;\n [[hA, sA, lA, alphaA], [hB, sB, lB, alphaB]] =\n normalizeColorComponents([hA, sA, lA, alphaA], [hB, sB, lB, alphaB],\n true);\n if (hueArc) {\n [hA, hB] = interpolateHue(hA, hB, hueArc);\n }\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = (factorA + factorB);\n const h = (hA * pA + hB * pB) % DEG;\n let s, l;\n if (alpha === 0) {\n s = sA * pA + sB * pB;\n l = lA * pA + lB * pB;\n } else {\n s = (sA * factorA + sB * factorB) / alpha;\n l = (lA * factorA + lB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n [r, g, b] = convertColorToRgb(`${colorSpace}(${h} ${s} ${l})`);\n if (format === VAL_COMP) {\n return [\n 'srgb',\n roundToPrecision(r / MAX_RGB, HEX),\n roundToPrecision(g / MAX_RGB, HEX),\n roundToPrecision(b / MAX_RGB, HEX),\n alphaNone ? NONE : alpha * m\n ];\n }\n // in lab, oklab\n } else if (/^(?:ok)?lab$/.test(colorSpace)) {\n let labA, labB;\n if (colorSpace === 'lab') {\n if (REG_CURRENT.test(colorA)) {\n labA = [NONE, NONE, NONE, NONE];\n } else {\n labA = convertColorToLab(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n labB = [NONE, NONE, NONE, NONE];\n } else {\n labB = convertColorToLab(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n } else {\n if (REG_CURRENT.test(colorA)) {\n labA = [NONE, NONE, NONE, NONE];\n } else {\n labA = convertColorToOklab(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n labB = [NONE, NONE, NONE, NONE];\n } else {\n labB = convertColorToOklab(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n }\n if (labA === null || labB === null) {\n return ['rgb', 0, 0, 0, 0];\n }\n let [lA, aA, bA, alphaA] = labA;\n let [lB, aB, bB, alphaB] = labB;\n const lNone = lA === NONE && lB === NONE;\n const aNone = aA === NONE && aB === NONE;\n const bNone = bA === NONE && bB === NONE;\n const alphaNone = alphaA === NONE && alphaB === NONE;\n [[lA, aA, bA, alphaA], [lB, aB, bB, alphaB]] =\n normalizeColorComponents([lA, aA, bA, alphaA], [lB, aB, bB, alphaB],\n true);\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = (factorA + factorB);\n let l, aO, bO;\n if (alpha === 0) {\n l = lA * pA + lB * pB;\n aO = aA * pA + aB * pB;\n bO = bA * pA + bB * pB;\n } else {\n l = (lA * factorA + lB * factorB) / alpha;\n aO = (aA * factorA + aB * factorB) / alpha;\n bO = (bA * factorA + bB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n if (format === VAL_COMP) {\n return [\n colorSpace,\n lNone ? NONE : roundToPrecision(l, HEX),\n aNone ? NONE : roundToPrecision(aO, HEX),\n bNone ? NONE : roundToPrecision(bO, HEX),\n alphaNone ? NONE : alpha * m\n ];\n }\n [, r, g, b] = resolveColorValue(`${colorSpace}(${l} ${aO} ${bO})`);\n // in lch, oklch\n } else if (/^(?:ok)?lch$/.test(colorSpace)) {\n let lchA, lchB;\n if (colorSpace === 'lch') {\n if (REG_CURRENT.test(colorA)) {\n lchA = [NONE, NONE, NONE, NONE];\n } else {\n lchA = convertColorToLch(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n lchB = [NONE, NONE, NONE, NONE];\n } else {\n lchB = convertColorToLch(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n } else {\n if (REG_CURRENT.test(colorA)) {\n lchA = [NONE, NONE, NONE, NONE];\n } else {\n lchA = convertColorToOklch(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n lchB = [NONE, NONE, NONE, NONE];\n } else {\n lchB = convertColorToOklch(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n }\n if (lchA === null || lchB === null) {\n return ['rgb', 0, 0, 0, 0];\n }\n let [lA, cA, hA, alphaA] = lchA;\n let [lB, cB, hB, alphaB] = lchB;\n const lNone = lA === NONE && lB === NONE;\n const cNone = cA === NONE && cB === NONE;\n const hNone = hA === NONE && hB === NONE;\n const alphaNone = alphaA === NONE && alphaB === NONE;\n [[lA, cA, hA, alphaA], [lB, cB, hB, alphaB]] =\n normalizeColorComponents([lA, cA, hA, alphaA], [lB, cB, hB, alphaB],\n true);\n if (hueArc) {\n [hA, hB] = interpolateHue(hA, hB, hueArc);\n }\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = (factorA + factorB);\n const h = (hA * pA + hB * pB) % DEG;\n let l, c;\n if (alpha === 0) {\n l = lA * pA + lB * pB;\n c = cA * pA + cB * pB;\n } else {\n l = (lA * factorA + lB * factorB) / alpha;\n c = (cA * factorA + cB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n if (format === VAL_COMP) {\n return [\n colorSpace,\n lNone ? NONE : roundToPrecision(l, HEX),\n cNone ? NONE : roundToPrecision(c, HEX),\n hNone ? NONE : roundToPrecision(h, HEX),\n alphaNone ? NONE : alpha * m\n ];\n }\n [, r, g, b] = resolveColorValue(`${colorSpace}(${l} ${c} ${h})`);\n }\n return [\n 'rgb',\n Math.round(r),\n Math.round(g),\n Math.round(b),\n parseFloat((alpha * m).toFixed(3))\n ];\n};\n", "/**\n * convert.js\n */\n\nimport { LRUCache } from 'lru-cache';\nimport {\n convertColorToHsl, convertColorToHwb, convertColorToLab, convertColorToLch,\n convertColorToOklab, convertColorToOklch, convertColorToRgb,\n numberToHexString, parseColorFunc, parseColorValue\n} from './color.js';\nimport { isString } from './common.js';\nimport { cssCalc } from './css-calc.js';\nimport { cssVar } from './css-var.js';\nimport { resolveRelativeColor } from './relative-color.js';\nimport { resolve } from './resolve.js';\nimport { valueToJsonString } from './util.js';\n\n/* constants */\nimport {\n SYN_FN_MATH_CALC, SYN_FN_REL, SYN_FN_VAR, VAL_COMP\n} from './constant.js';\n\n/* regexp */\nconst REG_FN_MATH_CALC = new RegExp(SYN_FN_MATH_CALC);\nconst REG_FN_REL = new RegExp(SYN_FN_REL);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\n\n/* cached results */\nexport const cachedResults = new LRUCache({\n max: 4096\n});\n\n/**\n * pre process\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {?string} - value\n */\nexport const preProcess = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n if (!value) {\n return null;\n }\n } else {\n return null;\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{preProcess:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n if (REG_FN_VAR.test(value)) {\n value = cssVar(value, opt);\n if (!value) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n }\n if (REG_FN_REL.test(value)) {\n value = resolveRelativeColor(value, opt);\n } else if (REG_FN_MATH_CALC.test(value)) {\n value = cssCalc(value, opt);\n }\n if (value && value.startsWith('color-mix')) {\n value = resolve(value, {\n format: VAL_COMP\n });\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, value);\n }\n return value;\n};\n\n/**\n * convert number to hex string\n * @param {number} value - color value\n * @returns {string} - hex string: 00..ff\n */\nexport const numberToHex = value => {\n const cacheKey = typeof value === 'number' && `{numberToHex:${value}}`;\n if (cacheKey && cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n const hex = numberToHexString(value);\n if (cacheKey) {\n cachedResults.set(cacheKey, hex);\n }\n return hex;\n};\n\n/**\n * convert color to hex\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {boolean} [opt.alpha] - return in #rrggbbaa notation\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {?string} - #rrggbb | #rrggbbaa | null\n */\nexport const colorToHex = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return null;\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { alpha, customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToHex:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n let hex;\n if (alpha) {\n opt.format = 'hexAlpha';\n hex = resolve(value, opt);\n } else {\n opt.format = 'hex';\n hex = resolve(value, opt);\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, hex);\n }\n return hex;\n};\n\n/**\n * convert color to hsl\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [h, s, l, alpha]\n */\nexport const colorToHsl = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToHsl:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n opt.format = 'hsl';\n const hsl = convertColorToHsl(value, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, hsl);\n }\n return hsl;\n};\n\n/**\n * convert color to hwb\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [h, w, b, alpha]\n */\nexport const colorToHwb = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToHwb:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n opt.format = 'hwb';\n const hwb = convertColorToHwb(value, opt);\n cachedResults.set(cacheKey, hwb);\n return hwb;\n};\n\n/**\n * convert color to lab\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [l, a, b, alpha]\n */\nexport const colorToLab = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToLab:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n const lab = convertColorToLab(value, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, lab);\n }\n return lab;\n};\n\n/**\n * convert color to lch\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [l, c, h, alpha]\n */\nexport const colorToLch = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToLch:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n const lch = convertColorToLch(value, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, lch);\n }\n return lch;\n};\n\n/**\n * convert color to oklab\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [l, a, b, alpha]\n */\nexport const colorToOklab = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToOklab:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n const lab = convertColorToOklab(value, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, lab);\n }\n return lab;\n};\n\n/**\n * convert color to oklch\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [l, c, h, alpha]\n */\nexport const colorToOklch = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToOklch:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n const lch = convertColorToOklch(value, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, lch);\n }\n return lch;\n};\n\n/**\n * convert color to rgb\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [r, g, b, alpha]\n */\nexport const colorToRgb = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToRgb:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n const rgb = convertColorToRgb(value, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, rgb);\n }\n return rgb;\n};\n\n/**\n * convert color to xyz\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.d50] - white poin in d50\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const colorToXyz = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToXyz:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n let xyz;\n if (value.startsWith('color(')) {\n [, ...xyz] = parseColorFunc(value, opt);\n } else {\n [, ...xyz] = parseColorValue(value, opt);\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, xyz);\n }\n return xyz;\n};\n\n/**\n * convert color to xyz-d50\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const colorToXyzD50 = (value, opt = {}) => {\n opt.d50 = true;\n return colorToXyz(value, opt);\n};\n\n/* convert */\nexport const convert = {\n colorToHex,\n colorToHsl,\n colorToHwb,\n colorToLab,\n colorToLch,\n colorToOklab,\n colorToOklch,\n colorToRgb,\n colorToXyz,\n colorToXyzD50,\n numberToHex\n};\n"], - "mappings": "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AE,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,EAAEC,GAAE,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAEC,GAAE,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAEC,GAAE,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAEC,GAAE,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAEC,GAAE,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEC,GAAE,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,GAAG,C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", + "sourcesContent": ["/*!\n * CSS color - Resolve, parse, convert CSS color.\n * @license MIT\n * @copyright asamuzaK (Kazz)\n * @see {@link https://github.com/asamuzaK/cssColor/blob/main/LICENSE}\n */\n\nexport { convert } from './js/convert.js';\nexport { cssCalc } from './js/css-calc.js';\nexport { resolve } from './js/resolve.js';\nexport { isColor } from './js/util.js';\n", "/**\n * @module LRUCache\n */\n\n// module-private names and types\ntype Perf = { now: () => number }\nconst perf: Perf =\n typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date\n\nconst warned = new Set()\n\n// either a function or a class\ntype ForC = ((...a: any[]) => any) | { new (...a: any[]): any }\n\n/* c8 ignore start */\nconst PROCESS = (\n typeof process === 'object' && !!process ? process : {}\n) as { [k: string]: any }\n/* c8 ignore start */\n\nconst emitWarning = (\n msg: string,\n type: string,\n code: string,\n fn: ForC\n) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`)\n}\n\nlet AC = globalThis.AbortController\nlet AS = globalThis.AbortSignal\n\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort?: (...a: any[]) => any\n _onabort: ((...a: any[]) => any)[] = []\n reason?: any\n aborted: boolean = false\n addEventListener(_: string, fn: (...a: any[]) => any) {\n this._onabort.push(fn)\n }\n }\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill()\n }\n signal = new AS()\n abort(reason: any) {\n if (this.signal.aborted) return\n //@ts-ignore\n this.signal.reason = reason\n //@ts-ignore\n this.signal.aborted = true\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason)\n }\n this.signal.onabort?.(reason)\n }\n }\n let printACPolyfillWarning =\n PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1'\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning) return\n printACPolyfillWarning = false\n emitWarning(\n 'AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.',\n 'NO_ABORT_CONTROLLER',\n 'ENOTSUP',\n warnACPolyfill\n )\n }\n}\n/* c8 ignore stop */\n\nconst shouldWarn = (code: string) => !warned.has(code)\n\nconst TYPE = Symbol('type')\nexport type PosInt = number & { [TYPE]: 'Positive Integer' }\nexport type Index = number & { [TYPE]: 'LRUCache Index' }\n\nconst isPosInt = (n: any): n is PosInt =>\n n && n === Math.floor(n) && n > 0 && isFinite(n)\n\nexport type UintArray = Uint8Array | Uint16Array | Uint32Array\nexport type NumberArray = UintArray | number[]\n\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max: number) =>\n !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null\n/* c8 ignore stop */\n\nclass ZeroArray extends Array {\n constructor(size: number) {\n super(size)\n this.fill(0)\n }\n}\nexport type { ZeroArray }\nexport type { Stack }\n\nexport type StackLike = Stack | Index[]\nclass Stack {\n heap: NumberArray\n length: number\n // private constructor\n static #constructing: boolean = false\n static create(max: number): StackLike {\n const HeapCls = getUintArray(max)\n if (!HeapCls) return []\n Stack.#constructing = true\n const s = new Stack(max, HeapCls)\n Stack.#constructing = false\n return s\n }\n constructor(\n max: number,\n HeapCls: { new (n: number): NumberArray }\n ) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)')\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max)\n this.length = 0\n }\n push(n: Index) {\n this.heap[this.length++] = n\n }\n pop(): Index {\n return this.heap[--this.length] as Index\n }\n}\n\n/**\n * Promise representing an in-progress {@link LRUCache#fetch} call\n */\nexport type BackgroundFetch = Promise & {\n __returned: BackgroundFetch | undefined\n __abortController: AbortController\n __staleWhileFetching: V | undefined\n}\n\nexport type DisposeTask = [\n value: V,\n key: K,\n reason: LRUCache.DisposeReason\n]\n\nexport namespace LRUCache {\n /**\n * An integer greater than 0, reflecting the calculated size of items\n */\n export type Size = number\n\n /**\n * Integer greater than 0, representing some number of milliseconds, or the\n * time at which a TTL started counting from.\n */\n export type Milliseconds = number\n\n /**\n * An integer greater than 0, reflecting a number of items\n */\n export type Count = number\n\n /**\n * The reason why an item was removed from the cache, passed\n * to the {@link Disposer} methods.\n *\n * - `evict`: The item was evicted because it is the least recently used,\n * and the cache is full.\n * - `set`: A new value was set, overwriting the old value being disposed.\n * - `delete`: The item was explicitly deleted, either by calling\n * {@link LRUCache#delete}, {@link LRUCache#clear}, or\n * {@link LRUCache#set} with an undefined value.\n * - `expire`: The item was removed due to exceeding its TTL.\n * - `fetch`: A {@link OptionsBase#fetchMethod} operation returned\n * `undefined` or was aborted, causing the item to be deleted.\n */\n export type DisposeReason =\n | 'evict'\n | 'set'\n | 'delete'\n | 'expire'\n | 'fetch'\n /**\n * A method called upon item removal, passed as the\n * {@link OptionsBase.dispose} and/or\n * {@link OptionsBase.disposeAfter} options.\n */\n export type Disposer = (\n value: V,\n key: K,\n reason: DisposeReason\n ) => void\n\n /**\n * A function that returns the effective calculated size\n * of an entry in the cache.\n */\n export type SizeCalculator = (value: V, key: K) => Size\n\n /**\n * Options provided to the\n * {@link OptionsBase.fetchMethod} function.\n */\n export interface FetcherOptions {\n signal: AbortSignal\n options: FetcherFetchOptions\n /**\n * Object provided in the {@link FetchOptions.context} option to\n * {@link LRUCache#fetch}\n */\n context: FC\n }\n\n /**\n * Occasionally, it may be useful to track the internal behavior of the\n * cache, particularly for logging, debugging, or for behavior within the\n * `fetchMethod`. To do this, you can pass a `status` object to the\n * {@link LRUCache#fetch}, {@link LRUCache#get}, {@link LRUCache#set},\n * {@link LRUCache#memo}, and {@link LRUCache#has} methods.\n *\n * The `status` option should be a plain JavaScript object. The following\n * fields will be set on it appropriately, depending on the situation.\n */\n export interface Status {\n /**\n * The status of a set() operation.\n *\n * - add: the item was not found in the cache, and was added\n * - update: the item was in the cache, with the same value provided\n * - replace: the item was in the cache, and replaced\n * - miss: the item was not added to the cache for some reason\n */\n set?: 'add' | 'update' | 'replace' | 'miss'\n\n /**\n * the ttl stored for the item, or undefined if ttls are not used.\n */\n ttl?: Milliseconds\n\n /**\n * the start time for the item, or undefined if ttls are not used.\n */\n start?: Milliseconds\n\n /**\n * The timestamp used for TTL calculation\n */\n now?: Milliseconds\n\n /**\n * the remaining ttl for the item, or undefined if ttls are not used.\n */\n remainingTTL?: Milliseconds\n\n /**\n * The calculated size for the item, if sizes are used.\n */\n entrySize?: Size\n\n /**\n * The total calculated size of the cache, if sizes are used.\n */\n totalCalculatedSize?: Size\n\n /**\n * A flag indicating that the item was not stored, due to exceeding the\n * {@link OptionsBase.maxEntrySize}\n */\n maxEntrySizeExceeded?: true\n\n /**\n * The old value, specified in the case of `set:'update'` or\n * `set:'replace'`\n */\n oldValue?: V\n\n /**\n * The results of a {@link LRUCache#has} operation\n *\n * - hit: the item was found in the cache\n * - stale: the item was found in the cache, but is stale\n * - miss: the item was not found in the cache\n */\n has?: 'hit' | 'stale' | 'miss'\n\n /**\n * The status of a {@link LRUCache#fetch} operation.\n * Note that this can change as the underlying fetch() moves through\n * various states.\n *\n * - inflight: there is another fetch() for this key which is in process\n * - get: there is no {@link OptionsBase.fetchMethod}, so\n * {@link LRUCache#get} was called.\n * - miss: the item is not in cache, and will be fetched.\n * - hit: the item is in the cache, and was resolved immediately.\n * - stale: the item is in the cache, but stale.\n * - refresh: the item is in the cache, and not stale, but\n * {@link FetchOptions.forceRefresh} was specified.\n */\n fetch?: 'get' | 'inflight' | 'miss' | 'hit' | 'stale' | 'refresh'\n\n /**\n * The {@link OptionsBase.fetchMethod} was called\n */\n fetchDispatched?: true\n\n /**\n * The cached value was updated after a successful call to\n * {@link OptionsBase.fetchMethod}\n */\n fetchUpdated?: true\n\n /**\n * The reason for a fetch() rejection. Either the error raised by the\n * {@link OptionsBase.fetchMethod}, or the reason for an\n * AbortSignal.\n */\n fetchError?: Error\n\n /**\n * The fetch received an abort signal\n */\n fetchAborted?: true\n\n /**\n * The abort signal received was ignored, and the fetch was allowed to\n * continue.\n */\n fetchAbortIgnored?: true\n\n /**\n * The fetchMethod promise resolved successfully\n */\n fetchResolved?: true\n\n /**\n * The fetchMethod promise was rejected\n */\n fetchRejected?: true\n\n /**\n * The status of a {@link LRUCache#get} operation.\n *\n * - fetching: The item is currently being fetched. If a previous value\n * is present and allowed, that will be returned.\n * - stale: The item is in the cache, and is stale.\n * - hit: the item is in the cache\n * - miss: the item is not in the cache\n */\n get?: 'stale' | 'hit' | 'miss'\n\n /**\n * A fetch or get operation returned a stale value.\n */\n returnedStale?: true\n }\n\n /**\n * options which override the options set in the LRUCache constructor\n * when calling {@link LRUCache#fetch}.\n *\n * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n * {@link OptionsBase.noDeleteOnFetchRejection},\n * {@link OptionsBase.allowStaleOnFetchRejection},\n * {@link FetchOptions.forceRefresh}, and\n * {@link FetcherOptions.context}\n *\n * Any of these may be modified in the {@link OptionsBase.fetchMethod}\n * function, but the {@link GetOptions} fields will of course have no\n * effect, as the {@link LRUCache#get} call already happened by the time\n * the fetchMethod is called.\n */\n export interface FetcherFetchOptions\n extends Pick<\n OptionsBase,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n | 'noDeleteOnFetchRejection'\n | 'allowStaleOnFetchRejection'\n | 'ignoreFetchAbort'\n | 'allowStaleOnFetchAbort'\n > {\n status?: Status\n size?: Size\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#fetch} method.\n */\n export interface FetchOptions\n extends FetcherFetchOptions {\n /**\n * Set to true to force a re-load of the existing data, even if it\n * is not yet stale.\n */\n forceRefresh?: boolean\n /**\n * Context provided to the {@link OptionsBase.fetchMethod} as\n * the {@link FetcherOptions.context} param.\n *\n * If the FC type is specified as unknown (the default),\n * undefined or void, then this is optional. Otherwise, it will\n * be required.\n */\n context?: FC\n signal?: AbortSignal\n status?: Status\n }\n /**\n * Options provided to {@link LRUCache#fetch} when the FC type is something\n * other than `unknown`, `undefined`, or `void`\n */\n export interface FetchOptionsWithContext\n extends FetchOptions {\n context: FC\n }\n /**\n * Options provided to {@link LRUCache#fetch} when the FC type is\n * `undefined` or `void`\n */\n export interface FetchOptionsNoContext\n extends FetchOptions {\n context?: undefined\n }\n\n export interface MemoOptions\n extends Pick<\n OptionsBase,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n | 'noDeleteOnFetchRejection'\n | 'allowStaleOnFetchRejection'\n | 'ignoreFetchAbort'\n | 'allowStaleOnFetchAbort'\n > {\n /**\n * Set to true to force a re-load of the existing data, even if it\n * is not yet stale.\n */\n forceRefresh?: boolean\n /**\n * Context provided to the {@link OptionsBase.memoMethod} as\n * the {@link MemoizerOptions.context} param.\n *\n * If the FC type is specified as unknown (the default),\n * undefined or void, then this is optional. Otherwise, it will\n * be required.\n */\n context?: FC\n status?: Status\n }\n /**\n * Options provided to {@link LRUCache#memo} when the FC type is something\n * other than `unknown`, `undefined`, or `void`\n */\n export interface MemoOptionsWithContext\n extends MemoOptions {\n context: FC\n }\n /**\n * Options provided to {@link LRUCache#memo} when the FC type is\n * `undefined` or `void`\n */\n export interface MemoOptionsNoContext\n extends MemoOptions {\n context?: undefined\n }\n\n /**\n * Options provided to the\n * {@link OptionsBase.memoMethod} function.\n */\n export interface MemoizerOptions {\n options: MemoizerMemoOptions\n /**\n * Object provided in the {@link MemoOptions.context} option to\n * {@link LRUCache#memo}\n */\n context: FC\n }\n\n /**\n * options which override the options set in the LRUCache constructor\n * when calling {@link LRUCache#memo}.\n *\n * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n * {@link MemoOptions.forceRefresh}, and\n * {@link MemoerOptions.context}\n *\n * Any of these may be modified in the {@link OptionsBase.memoMethod}\n * function, but the {@link GetOptions} fields will of course have no\n * effect, as the {@link LRUCache#get} call already happened by the time\n * the memoMethod is called.\n */\n export interface MemoizerMemoOptions\n extends Pick<\n OptionsBase,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n > {\n status?: Status\n size?: Size\n start?: Milliseconds\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#has} method.\n */\n export interface HasOptions\n extends Pick, 'updateAgeOnHas'> {\n status?: Status\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#get} method.\n */\n export interface GetOptions\n extends Pick<\n OptionsBase,\n 'allowStale' | 'updateAgeOnGet' | 'noDeleteOnStaleGet'\n > {\n status?: Status\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#peek} method.\n */\n export interface PeekOptions\n extends Pick, 'allowStale'> {}\n\n /**\n * Options that may be passed to the {@link LRUCache#set} method.\n */\n export interface SetOptions\n extends Pick<\n OptionsBase,\n 'sizeCalculation' | 'ttl' | 'noDisposeOnSet' | 'noUpdateTTL'\n > {\n /**\n * If size tracking is enabled, then setting an explicit size\n * in the {@link LRUCache#set} call will prevent calling the\n * {@link OptionsBase.sizeCalculation} function.\n */\n size?: Size\n /**\n * If TTL tracking is enabled, then setting an explicit start\n * time in the {@link LRUCache#set} call will override the\n * default time from `performance.now()` or `Date.now()`.\n *\n * Note that it must be a valid value for whichever time-tracking\n * method is in use.\n */\n start?: Milliseconds\n status?: Status\n }\n\n /**\n * The type signature for the {@link OptionsBase.fetchMethod} option.\n */\n export type Fetcher = (\n key: K,\n staleValue: V | undefined,\n options: FetcherOptions\n ) => Promise | V | undefined | void\n\n /**\n * the type signature for the {@link OptionsBase.memoMethod} option.\n */\n export type Memoizer = (\n key: K,\n staleValue: V | undefined,\n options: MemoizerOptions\n ) => V\n\n /**\n * Options which may be passed to the {@link LRUCache} constructor.\n *\n * Most of these may be overridden in the various options that use\n * them.\n *\n * Despite all being technically optional, the constructor requires that\n * a cache is at minimum limited by one or more of {@link OptionsBase.max},\n * {@link OptionsBase.ttl}, or {@link OptionsBase.maxSize}.\n *\n * If {@link OptionsBase.ttl} is used alone, then it is strongly advised\n * (and in fact required by the type definitions here) that the cache\n * also set {@link OptionsBase.ttlAutopurge}, to prevent potentially\n * unbounded storage.\n *\n * All options are also available on the {@link LRUCache} instance, making\n * it safe to pass an LRUCache instance as the options argumemnt to\n * make another empty cache of the same type.\n *\n * Some options are marked as read-only, because changing them after\n * instantiation is not safe. Changing any of the other options will of\n * course only have an effect on subsequent method calls.\n */\n export interface OptionsBase {\n /**\n * The maximum number of items to store in the cache before evicting\n * old entries. This is read-only on the {@link LRUCache} instance,\n * and may not be overridden.\n *\n * If set, then storage space will be pre-allocated at construction\n * time, and the cache will perform significantly faster.\n *\n * Note that significantly fewer items may be stored, if\n * {@link OptionsBase.maxSize} and/or {@link OptionsBase.ttl} are also\n * set.\n *\n * **It is strongly recommended to set a `max` to prevent unbounded growth\n * of the cache.**\n */\n max?: Count\n\n /**\n * Max time in milliseconds for items to live in cache before they are\n * considered stale. Note that stale items are NOT preemptively removed by\n * default, and MAY live in the cache, contributing to its LRU max, long\n * after they have expired, unless {@link OptionsBase.ttlAutopurge} is\n * set.\n *\n * If set to `0` (the default value), then that means \"do not track\n * TTL\", not \"expire immediately\".\n *\n * Also, as this cache is optimized for LRU/MRU operations, some of\n * the staleness/TTL checks will reduce performance, as they will incur\n * overhead by deleting items.\n *\n * This is not primarily a TTL cache, and does not make strong TTL\n * guarantees. There is no pre-emptive pruning of expired items, but you\n * _may_ set a TTL on the cache, and it will treat expired items as missing\n * when they are fetched, and delete them.\n *\n * Optional, but must be a non-negative integer in ms if specified.\n *\n * This may be overridden by passing an options object to `cache.set()`.\n *\n * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n * positive integer if set.\n *\n * Even if ttl tracking is enabled, **it is strongly recommended to set a\n * `max` to prevent unbounded growth of the cache.**\n *\n * If ttl tracking is enabled, and `max` and `maxSize` are not set,\n * and `ttlAutopurge` is not set, then a warning will be emitted\n * cautioning about the potential for unbounded memory consumption.\n * (The TypeScript definitions will also discourage this.)\n */\n ttl?: Milliseconds\n\n /**\n * Minimum amount of time in ms in which to check for staleness.\n * Defaults to 1, which means that the current time is checked\n * at most once per millisecond.\n *\n * Set to 0 to check the current time every time staleness is tested.\n * (This reduces performance, and is theoretically unnecessary.)\n *\n * Setting this to a higher value will improve performance somewhat\n * while using ttl tracking, albeit at the expense of keeping stale\n * items around a bit longer than their TTLs would indicate.\n *\n * @default 1\n */\n ttlResolution?: Milliseconds\n\n /**\n * Preemptively remove stale items from the cache.\n *\n * Note that this may *significantly* degrade performance, especially if\n * the cache is storing a large number of items. It is almost always best\n * to just leave the stale items in the cache, and let them fall out as new\n * items are added.\n *\n * Note that this means that {@link OptionsBase.allowStale} is a bit\n * pointless, as stale items will be deleted almost as soon as they\n * expire.\n *\n * Use with caution!\n */\n ttlAutopurge?: boolean\n\n /**\n * When using time-expiring entries with `ttl`, setting this to `true` will\n * make each item's age reset to 0 whenever it is retrieved from cache with\n * {@link LRUCache#get}, causing it to not expire. (It can still fall out\n * of cache based on recency of use, of course.)\n *\n * Has no effect if {@link OptionsBase.ttl} is not set.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n */\n updateAgeOnGet?: boolean\n\n /**\n * When using time-expiring entries with `ttl`, setting this to `true` will\n * make each item's age reset to 0 whenever its presence in the cache is\n * checked with {@link LRUCache#has}, causing it to not expire. (It can\n * still fall out of cache based on recency of use, of course.)\n *\n * Has no effect if {@link OptionsBase.ttl} is not set.\n */\n updateAgeOnHas?: boolean\n\n /**\n * Allow {@link LRUCache#get} and {@link LRUCache#fetch} calls to return\n * stale data, if available.\n *\n * By default, if you set `ttl`, stale items will only be deleted from the\n * cache when you `get(key)`. That is, it's not preemptively pruning items,\n * unless {@link OptionsBase.ttlAutopurge} is set.\n *\n * If you set `allowStale:true`, it'll return the stale value *as well as*\n * deleting it. If you don't set this, then it'll return `undefined` when\n * you try to get a stale entry.\n *\n * Note that when a stale entry is fetched, _even if it is returned due to\n * `allowStale` being set_, it is removed from the cache immediately. You\n * can suppress this behavior by setting\n * {@link OptionsBase.noDeleteOnStaleGet}, either in the constructor, or in\n * the options provided to {@link LRUCache#get}.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n * The `cache.has()` method will always return `false` for stale items.\n *\n * Only relevant if a ttl is set.\n */\n allowStale?: boolean\n\n /**\n * Function that is called on items when they are dropped from the\n * cache, as `dispose(value, key, reason)`.\n *\n * This can be handy if you want to close file descriptors or do\n * other cleanup tasks when items are no longer stored in the cache.\n *\n * **NOTE**: It is called _before_ the item has been fully removed\n * from the cache, so if you want to put it right back in, you need\n * to wait until the next tick. If you try to add it back in during\n * the `dispose()` function call, it will break things in subtle and\n * weird ways.\n *\n * Unlike several other options, this may _not_ be overridden by\n * passing an option to `set()`, for performance reasons.\n *\n * The `reason` will be one of the following strings, corresponding\n * to the reason for the item's deletion:\n *\n * - `evict` Item was evicted to make space for a new addition\n * - `set` Item was overwritten by a new value\n * - `expire` Item expired its TTL\n * - `fetch` Item was deleted due to a failed or aborted fetch, or a\n * fetchMethod returning `undefined.\n * - `delete` Item was removed by explicit `cache.delete(key)`,\n * `cache.clear()`, or `cache.set(key, undefined)`.\n */\n dispose?: Disposer\n\n /**\n * The same as {@link OptionsBase.dispose}, but called *after* the entry\n * is completely removed and the cache is once again in a clean state.\n *\n * It is safe to add an item right back into the cache at this point.\n * However, note that it is *very* easy to inadvertently create infinite\n * recursion this way.\n */\n disposeAfter?: Disposer\n\n /**\n * Set to true to suppress calling the\n * {@link OptionsBase.dispose} function if the entry key is\n * still accessible within the cache.\n *\n * This may be overridden by passing an options object to\n * {@link LRUCache#set}.\n *\n * Only relevant if `dispose` or `disposeAfter` are set.\n */\n noDisposeOnSet?: boolean\n\n /**\n * Boolean flag to tell the cache to not update the TTL when setting a new\n * value for an existing key (ie, when updating a value rather than\n * inserting a new value). Note that the TTL value is _always_ set (if\n * provided) when adding a new entry into the cache.\n *\n * Has no effect if a {@link OptionsBase.ttl} is not set.\n *\n * May be passed as an option to {@link LRUCache#set}.\n */\n noUpdateTTL?: boolean\n\n /**\n * Set to a positive integer to track the sizes of items added to the\n * cache, and automatically evict items in order to stay below this size.\n * Note that this may result in fewer than `max` items being stored.\n *\n * Attempting to add an item to the cache whose calculated size is greater\n * that this amount will be a no-op. The item will not be cached, and no\n * other items will be evicted.\n *\n * Optional, must be a positive integer if provided.\n *\n * Sets `maxEntrySize` to the same value, unless a different value is\n * provided for `maxEntrySize`.\n *\n * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n * positive integer if set.\n *\n * Even if size tracking is enabled, **it is strongly recommended to set a\n * `max` to prevent unbounded growth of the cache.**\n *\n * Note also that size tracking can negatively impact performance,\n * though for most cases, only minimally.\n */\n maxSize?: Size\n\n /**\n * The maximum allowed size for any single item in the cache.\n *\n * If a larger item is passed to {@link LRUCache#set} or returned by a\n * {@link OptionsBase.fetchMethod} or {@link OptionsBase.memoMethod}, then\n * it will not be stored in the cache.\n *\n * Attempting to add an item whose calculated size is greater than\n * this amount will not cache the item or evict any old items, but\n * WILL delete an existing value if one is already present.\n *\n * Optional, must be a positive integer if provided. Defaults to\n * the value of `maxSize` if provided.\n */\n maxEntrySize?: Size\n\n /**\n * A function that returns a number indicating the item's size.\n *\n * Requires {@link OptionsBase.maxSize} to be set.\n *\n * If not provided, and {@link OptionsBase.maxSize} or\n * {@link OptionsBase.maxEntrySize} are set, then all\n * {@link LRUCache#set} calls **must** provide an explicit\n * {@link SetOptions.size} or sizeCalculation param.\n */\n sizeCalculation?: SizeCalculator\n\n /**\n * Method that provides the implementation for {@link LRUCache#fetch}\n *\n * ```ts\n * fetchMethod(key, staleValue, { signal, options, context })\n * ```\n *\n * If `fetchMethod` is not provided, then `cache.fetch(key)` is equivalent\n * to `Promise.resolve(cache.get(key))`.\n *\n * If at any time, `signal.aborted` is set to `true`, or if the\n * `signal.onabort` method is called, or if it emits an `'abort'` event\n * which you can listen to with `addEventListener`, then that means that\n * the fetch should be abandoned. This may be passed along to async\n * functions aware of AbortController/AbortSignal behavior.\n *\n * The `fetchMethod` should **only** return `undefined` or a Promise\n * resolving to `undefined` if the AbortController signaled an `abort`\n * event. In all other cases, it should return or resolve to a value\n * suitable for adding to the cache.\n *\n * The `options` object is a union of the options that may be provided to\n * `set()` and `get()`. If they are modified, then that will result in\n * modifying the settings to `cache.set()` when the value is resolved, and\n * in the case of\n * {@link OptionsBase.noDeleteOnFetchRejection} and\n * {@link OptionsBase.allowStaleOnFetchRejection}, the handling of\n * `fetchMethod` failures.\n *\n * For example, a DNS cache may update the TTL based on the value returned\n * from a remote DNS server by changing `options.ttl` in the `fetchMethod`.\n */\n fetchMethod?: Fetcher\n\n /**\n * Method that provides the implementation for {@link LRUCache#memo}\n */\n memoMethod?: Memoizer\n\n /**\n * Set to true to suppress the deletion of stale data when a\n * {@link OptionsBase.fetchMethod} returns a rejected promise.\n */\n noDeleteOnFetchRejection?: boolean\n\n /**\n * Do not delete stale items when they are retrieved with\n * {@link LRUCache#get}.\n *\n * Note that the `get` return value will still be `undefined`\n * unless {@link OptionsBase.allowStale} is true.\n *\n * When using time-expiring entries with `ttl`, by default stale\n * items will be removed from the cache when the key is accessed\n * with `cache.get()`.\n *\n * Setting this option will cause stale items to remain in the cache, until\n * they are explicitly deleted with `cache.delete(key)`, or retrieved with\n * `noDeleteOnStaleGet` set to `false`.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n *\n * Only relevant if a ttl is used.\n */\n noDeleteOnStaleGet?: boolean\n\n /**\n * Set to true to allow returning stale data when a\n * {@link OptionsBase.fetchMethod} throws an error or returns a rejected\n * promise.\n *\n * This differs from using {@link OptionsBase.allowStale} in that stale\n * data will ONLY be returned in the case that the {@link LRUCache#fetch}\n * fails, not any other times.\n *\n * If a `fetchMethod` fails, and there is no stale value available, the\n * `fetch()` will resolve to `undefined`. Ie, all `fetchMethod` errors are\n * suppressed.\n *\n * Implies `noDeleteOnFetchRejection`.\n *\n * This may be set in calls to `fetch()`, or defaulted on the constructor,\n * or overridden by modifying the options object in the `fetchMethod`.\n */\n allowStaleOnFetchRejection?: boolean\n\n /**\n * Set to true to return a stale value from the cache when the\n * `AbortSignal` passed to the {@link OptionsBase.fetchMethod} dispatches\n * an `'abort'` event, whether user-triggered, or due to internal cache\n * behavior.\n *\n * Unless {@link OptionsBase.ignoreFetchAbort} is also set, the underlying\n * {@link OptionsBase.fetchMethod} will still be considered canceled, and\n * any value it returns will be ignored and not cached.\n *\n * Caveat: since fetches are aborted when a new value is explicitly\n * set in the cache, this can lead to fetch returning a stale value,\n * since that was the fallback value _at the moment the `fetch()` was\n * initiated_, even though the new updated value is now present in\n * the cache.\n *\n * For example:\n *\n * ```ts\n * const cache = new LRUCache({\n * ttl: 100,\n * fetchMethod: async (url, oldValue, { signal }) => {\n * const res = await fetch(url, { signal })\n * return await res.json()\n * }\n * })\n * cache.set('https://example.com/', { some: 'data' })\n * // 100ms go by...\n * const result = cache.fetch('https://example.com/')\n * cache.set('https://example.com/', { other: 'thing' })\n * console.log(await result) // { some: 'data' }\n * console.log(cache.get('https://example.com/')) // { other: 'thing' }\n * ```\n */\n allowStaleOnFetchAbort?: boolean\n\n /**\n * Set to true to ignore the `abort` event emitted by the `AbortSignal`\n * object passed to {@link OptionsBase.fetchMethod}, and still cache the\n * resulting resolution value, as long as it is not `undefined`.\n *\n * When used on its own, this means aborted {@link LRUCache#fetch} calls\n * are not immediately resolved or rejected when they are aborted, and\n * instead take the full time to await.\n *\n * When used with {@link OptionsBase.allowStaleOnFetchAbort}, aborted\n * {@link LRUCache#fetch} calls will resolve immediately to their stale\n * cached value or `undefined`, and will continue to process and eventually\n * update the cache when they resolve, as long as the resulting value is\n * not `undefined`, thus supporting a \"return stale on timeout while\n * refreshing\" mechanism by passing `AbortSignal.timeout(n)` as the signal.\n *\n * For example:\n *\n * ```ts\n * const c = new LRUCache({\n * ttl: 100,\n * ignoreFetchAbort: true,\n * allowStaleOnFetchAbort: true,\n * fetchMethod: async (key, oldValue, { signal }) => {\n * // note: do NOT pass the signal to fetch()!\n * // let's say this fetch can take a long time.\n * const res = await fetch(`https://slow-backend-server/${key}`)\n * return await res.json()\n * },\n * })\n *\n * // this will return the stale value after 100ms, while still\n * // updating in the background for next time.\n * const val = await c.fetch('key', { signal: AbortSignal.timeout(100) })\n * ```\n *\n * **Note**: regardless of this setting, an `abort` event _is still\n * emitted on the `AbortSignal` object_, so may result in invalid results\n * when passed to other underlying APIs that use AbortSignals.\n *\n * This may be overridden in the {@link OptionsBase.fetchMethod} or the\n * call to {@link LRUCache#fetch}.\n */\n ignoreFetchAbort?: boolean\n }\n\n export interface OptionsMaxLimit\n extends OptionsBase {\n max: Count\n }\n export interface OptionsTTLLimit\n extends OptionsBase {\n ttl: Milliseconds\n ttlAutopurge: boolean\n }\n export interface OptionsSizeLimit\n extends OptionsBase {\n maxSize: Size\n }\n\n /**\n * The valid safe options for the {@link LRUCache} constructor\n */\n export type Options =\n | OptionsMaxLimit\n | OptionsSizeLimit\n | OptionsTTLLimit\n\n /**\n * Entry objects used by {@link LRUCache#load} and {@link LRUCache#dump},\n * and returned by {@link LRUCache#info}.\n */\n export interface Entry {\n value: V\n ttl?: Milliseconds\n size?: Size\n start?: Milliseconds\n }\n}\n\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache\n implements Map\n{\n // options that cannot be changed without disaster\n readonly #max: LRUCache.Count\n readonly #maxSize: LRUCache.Size\n readonly #dispose?: LRUCache.Disposer\n readonly #disposeAfter?: LRUCache.Disposer\n readonly #fetchMethod?: LRUCache.Fetcher\n readonly #memoMethod?: LRUCache.Memoizer\n\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl: LRUCache.Milliseconds\n\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution: LRUCache.Milliseconds\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge: boolean\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet: boolean\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale: boolean\n\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet: boolean\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL: boolean\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize: LRUCache.Size\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation?: LRUCache.SizeCalculator\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection: boolean\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection: boolean\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort: boolean\n\n // computed properties\n #size: LRUCache.Count\n #calculatedSize: LRUCache.Size\n #keyMap: Map\n #keyList: (K | undefined)[]\n #valList: (V | BackgroundFetch | undefined)[]\n #next: NumberArray\n #prev: NumberArray\n #head: Index\n #tail: Index\n #free: StackLike\n #disposed?: DisposeTask[]\n #sizes?: ZeroArray\n #starts?: ZeroArray\n #ttls?: ZeroArray\n\n #hasDispose: boolean\n #hasFetchMethod: boolean\n #hasDisposeAfter: boolean\n\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals<\n K extends {},\n V extends {},\n FC extends unknown = unknown\n >(c: LRUCache) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap as Map,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head\n },\n get tail() {\n return c.#tail\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p: any) => c.#isBackgroundFetch(p),\n backgroundFetch: (\n k: K,\n index: number | undefined,\n options: LRUCache.FetchOptions,\n context: any\n ): BackgroundFetch =>\n c.#backgroundFetch(\n k,\n index as Index | undefined,\n options,\n context\n ),\n moveToTail: (index: number): void =>\n c.#moveToTail(index as Index),\n indexes: (options?: { allowStale: boolean }) =>\n c.#indexes(options),\n rindexes: (options?: { allowStale: boolean }) =>\n c.#rindexes(options),\n isStale: (index: number | undefined) =>\n c.#isStale(index as Index),\n }\n }\n\n // Protected read-only members\n\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max(): LRUCache.Count {\n return this.#max\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize(): LRUCache.Count {\n return this.#maxSize\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize(): LRUCache.Size {\n return this.#calculatedSize\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size(): LRUCache.Count {\n return this.#size\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod(): LRUCache.Fetcher | undefined {\n return this.#fetchMethod\n }\n get memoMethod(): LRUCache.Memoizer | undefined {\n return this.#memoMethod\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter\n }\n\n constructor(\n options: LRUCache.Options | LRUCache\n ) {\n const {\n max = 0,\n ttl,\n ttlResolution = 1,\n ttlAutopurge,\n updateAgeOnGet,\n updateAgeOnHas,\n allowStale,\n dispose,\n disposeAfter,\n noDisposeOnSet,\n noUpdateTTL,\n maxSize = 0,\n maxEntrySize = 0,\n sizeCalculation,\n fetchMethod,\n memoMethod,\n noDeleteOnFetchRejection,\n noDeleteOnStaleGet,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n } = options\n\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer')\n }\n\n const UintArray = max ? getUintArray(max) : Array\n if (!UintArray) {\n throw new Error('invalid max value: ' + max)\n }\n\n this.#max = max\n this.#maxSize = maxSize\n this.maxEntrySize = maxEntrySize || this.#maxSize\n this.sizeCalculation = sizeCalculation\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError(\n 'cannot set sizeCalculation without setting maxSize or maxEntrySize'\n )\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function')\n }\n }\n\n if (\n memoMethod !== undefined &&\n typeof memoMethod !== 'function'\n ) {\n throw new TypeError('memoMethod must be a function if defined')\n }\n this.#memoMethod = memoMethod\n\n if (\n fetchMethod !== undefined &&\n typeof fetchMethod !== 'function'\n ) {\n throw new TypeError(\n 'fetchMethod must be a function if specified'\n )\n }\n this.#fetchMethod = fetchMethod\n this.#hasFetchMethod = !!fetchMethod\n\n this.#keyMap = new Map()\n this.#keyList = new Array(max).fill(undefined)\n this.#valList = new Array(max).fill(undefined)\n this.#next = new UintArray(max)\n this.#prev = new UintArray(max)\n this.#head = 0 as Index\n this.#tail = 0 as Index\n this.#free = Stack.create(max)\n this.#size = 0\n this.#calculatedSize = 0\n\n if (typeof dispose === 'function') {\n this.#dispose = dispose\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter\n this.#disposed = []\n } else {\n this.#disposeAfter = undefined\n this.#disposed = undefined\n }\n this.#hasDispose = !!this.#dispose\n this.#hasDisposeAfter = !!this.#disposeAfter\n\n this.noDisposeOnSet = !!noDisposeOnSet\n this.noUpdateTTL = !!noUpdateTTL\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort\n this.ignoreFetchAbort = !!ignoreFetchAbort\n\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError(\n 'maxSize must be a positive integer if specified'\n )\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError(\n 'maxEntrySize must be a positive integer if specified'\n )\n }\n this.#initializeSizeTracking()\n }\n\n this.allowStale = !!allowStale\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n this.updateAgeOnGet = !!updateAgeOnGet\n this.updateAgeOnHas = !!updateAgeOnHas\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1\n this.ttlAutopurge = !!ttlAutopurge\n this.ttl = ttl || 0\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError(\n 'ttl must be a positive integer if specified'\n )\n }\n this.#initializeTTLTracking()\n }\n\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError(\n 'At least one of max, maxSize, or ttl is required'\n )\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED'\n if (shouldWarn(code)) {\n warned.add(code)\n const msg =\n 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.'\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n }\n }\n }\n\n /**\n * Return the number of ms left in the item's TTL. If item is not in cache,\n * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n */\n getRemainingTTL(key: K) {\n return this.#keyMap.has(key) ? Infinity : 0\n }\n\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max)\n const starts = new ZeroArray(this.#max)\n this.#ttls = ttls\n this.#starts = starts\n\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0\n ttls[index] = ttl\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.#delete(this.#keyList[index] as K, 'expire')\n }\n }, ttl + 1)\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref()\n }\n /* c8 ignore stop */\n }\n }\n\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0\n }\n\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index]\n const start = starts[index]\n /* c8 ignore next */\n if (!ttl || !start) return\n status.ttl = ttl\n status.start = start\n status.now = cachedNow || getNow()\n const age = status.now - start\n status.remainingTTL = ttl - age\n }\n }\n\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0\n const getNow = () => {\n const n = perf.now()\n if (this.ttlResolution > 0) {\n cachedNow = n\n const t = setTimeout(\n () => (cachedNow = 0),\n this.ttlResolution\n )\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref()\n }\n /* c8 ignore stop */\n }\n return n\n }\n\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key)\n if (index === undefined) {\n return 0\n }\n const ttl = ttls[index]\n const start = starts[index]\n if (!ttl || !start) {\n return Infinity\n }\n const age = (cachedNow || getNow()) - start\n return ttl - age\n }\n\n this.#isStale = index => {\n const s = starts[index]\n const t = ttls[index]\n return !!t && !!s && (cachedNow || getNow()) - s > t\n }\n }\n\n // conditionally set private methods related to TTL\n #updateItemAge: (index: Index) => void = () => {}\n #statusTTL: (status: LRUCache.Status, index: Index) => void =\n () => {}\n #setItemTTL: (\n index: Index,\n ttl: LRUCache.Milliseconds,\n start?: LRUCache.Milliseconds\n // ignore because we never call this if we're not already in TTL mode\n /* c8 ignore start */\n ) => void = () => {}\n /* c8 ignore stop */\n\n #isStale: (index: Index) => boolean = () => false\n\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max)\n this.#calculatedSize = 0\n this.#sizes = sizes\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index] as number\n sizes[index] = 0\n }\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function')\n }\n size = sizeCalculation(v, k)\n if (!isPosInt(size)) {\n throw new TypeError(\n 'sizeCalculation return invalid (expect positive integer)'\n )\n }\n } else {\n throw new TypeError(\n 'invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.'\n )\n }\n }\n return size\n }\n this.#addItemSize = (\n index: Index,\n size: LRUCache.Size,\n status?: LRUCache.Status\n ) => {\n sizes[index] = size\n if (this.#maxSize) {\n const maxSize = this.#maxSize - (sizes[index] as number)\n while (this.#calculatedSize > maxSize) {\n this.#evict(true)\n }\n }\n this.#calculatedSize += sizes[index] as number\n if (status) {\n status.entrySize = size\n status.totalCalculatedSize = this.#calculatedSize\n }\n }\n }\n\n #removeItemSize: (index: Index) => void = _i => {}\n #addItemSize: (\n index: Index,\n size: LRUCache.Size,\n status?: LRUCache.Status\n ) => void = (_i, _s, _st) => {}\n #requireSize: (\n k: K,\n v: V | BackgroundFetch,\n size?: LRUCache.Size,\n sizeCalculation?: LRUCache.SizeCalculator\n ) => LRUCache.Size = (\n _k: K,\n _v: V | BackgroundFetch,\n size?: LRUCache.Size,\n sizeCalculation?: LRUCache.SizeCalculator\n ) => {\n if (size || sizeCalculation) {\n throw new TypeError(\n 'cannot set size without setting maxSize or maxEntrySize on cache'\n )\n }\n return 0\n };\n\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true; ) {\n if (!this.#isValidIndex(i)) {\n break\n }\n if (allowStale || !this.#isStale(i)) {\n yield i\n }\n if (i === this.#head) {\n break\n } else {\n i = this.#prev[i] as Index\n }\n }\n }\n }\n\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true; ) {\n if (!this.#isValidIndex(i)) {\n break\n }\n if (allowStale || !this.#isStale(i)) {\n yield i\n }\n if (i === this.#tail) {\n break\n } else {\n i = this.#next[i] as Index\n }\n }\n }\n }\n\n #isValidIndex(index: Index) {\n return (\n index !== undefined &&\n this.#keyMap.get(this.#keyList[index] as K) === index\n )\n }\n\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (\n this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield [this.#keyList[i], this.#valList[i]] as [K, V]\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (\n this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield [this.#keyList[i], this.#valList[i]]\n }\n }\n }\n\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i]\n if (\n k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield k\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i]\n if (\n k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield k\n }\n }\n }\n\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n if (\n v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield this.#valList[i] as V\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i]\n if (\n v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield this.#valList[i]\n }\n }\n }\n\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries()\n }\n\n /**\n * A String value that is used in the creation of the default string\n * description of an object. Called by the built-in method\n * `Object.prototype.toString`.\n */\n [Symbol.toStringTag] = 'LRUCache'\n\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n */\n find(\n fn: (v: V, k: K, self: LRUCache) => boolean,\n getOptions: LRUCache.GetOptions = {}\n ) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n if (fn(value, this.#keyList[i] as K, this)) {\n return this.get(this.#keyList[i] as K, getOptions)\n }\n }\n }\n\n /**\n * Call the supplied function on each item in the cache, in order from most\n * recently used to least recently used.\n *\n * `fn` is called as `fn(value, key, cache)`.\n *\n * If `thisp` is provided, function will be called in the `this`-context of\n * the provided object, or the cache if no `thisp` object is provided.\n *\n * Does not update age or recenty of use, or iterate over stale values.\n */\n forEach(\n fn: (v: V, k: K, self: LRUCache) => any,\n thisp: any = this\n ) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n fn.call(thisp, value, this.#keyList[i] as K, this)\n }\n }\n\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(\n fn: (v: V, k: K, self: LRUCache) => any,\n thisp: any = this\n ) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n fn.call(thisp, value, this.#keyList[i] as K, this)\n }\n }\n\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.#delete(this.#keyList[i] as K, 'expire')\n deleted = true\n }\n }\n return deleted\n }\n\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Returns `undefined` if the key is not present.\n *\n * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n * serialization, the `start` value is always the current timestamp, and the\n * `ttl` is a calculated remaining time to live (negative if expired).\n *\n * Always returns stale values, if their info is found in the cache, so be\n * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n * if relevant.\n */\n info(key: K): LRUCache.Entry | undefined {\n const i = this.#keyMap.get(key)\n if (i === undefined) return undefined\n const v = this.#valList[i]\n const value: V | undefined = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) return undefined\n const entry: LRUCache.Entry = { value }\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i]\n const start = this.#starts[i]\n if (ttl && start) {\n const remain = ttl - (perf.now() - start)\n entry.ttl = remain\n entry.start = Date.now()\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i]\n }\n return entry\n }\n\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to {@link LRLUCache#load}.\n *\n * The `start` fields are calculated relative to a portable `Date.now()`\n * timestamp, even if `performance.now()` is available.\n *\n * Stale entries are always included in the `dump`, even if\n * {@link LRUCache.OptionsBase.allowStale} is false.\n *\n * Note: this returns an actual array, not a generator, so it can be more\n * easily passed around.\n */\n dump() {\n const arr: [K, LRUCache.Entry][] = []\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i]\n const v = this.#valList[i]\n const value: V | undefined = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined || key === undefined) continue\n const entry: LRUCache.Entry = { value }\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i]\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - (this.#starts[i] as number)\n entry.start = Math.floor(Date.now() - age)\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i]\n }\n arr.unshift([key, entry])\n }\n return arr\n }\n\n /**\n * Reset the cache and load in the items in entries in the order listed.\n *\n * The shape of the resulting cache may be different if the same options are\n * not used in both caches.\n *\n * The `start` fields are assumed to be calculated relative to a portable\n * `Date.now()` timestamp, even if `performance.now()` is available.\n */\n load(arr: [K, LRUCache.Entry][]) {\n this.clear()\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start\n entry.start = perf.now() - age\n }\n this.set(key, entry.value, entry)\n }\n }\n\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n *\n * Fields on the {@link LRUCache.SetOptions} options param will override\n * their corresponding values in the constructor options for the scope\n * of this single `set()` operation.\n *\n * If `start` is provided, then that will set the effective start\n * time for the TTL calculation. Note that this must be a previous\n * value of `performance.now()` if supported, or a previous value of\n * `Date.now()` if not.\n *\n * Options object may also include `size`, which will prevent\n * calling the `sizeCalculation` function and just use the specified\n * number if it is a positive integer, and `noDisposeOnSet` which\n * will prevent calling a `dispose` function in the case of\n * overwrites.\n *\n * If the `size` (or return value of `sizeCalculation`) for a given\n * entry is greater than `maxEntrySize`, then the item will not be\n * added to the cache.\n *\n * Will update the recency of the entry.\n *\n * If the value is `undefined`, then this is an alias for\n * `cache.delete(key)`. `undefined` is never stored in the cache.\n */\n set(\n k: K,\n v: V | BackgroundFetch | undefined,\n setOptions: LRUCache.SetOptions = {}\n ) {\n if (v === undefined) {\n this.delete(k)\n return this\n }\n const {\n ttl = this.ttl,\n start,\n noDisposeOnSet = this.noDisposeOnSet,\n sizeCalculation = this.sizeCalculation,\n status,\n } = setOptions\n let { noUpdateTTL = this.noUpdateTTL } = setOptions\n\n const size = this.#requireSize(\n k,\n v,\n setOptions.size || 0,\n sizeCalculation\n )\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss'\n status.maxEntrySizeExceeded = true\n }\n // have to delete, in case something is there already.\n this.#delete(k, 'set')\n return this\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k)\n if (index === undefined) {\n // addition\n index = (\n this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size\n ) as Index\n this.#keyList[index] = k\n this.#valList[index] = v\n this.#keyMap.set(k, index)\n this.#next[this.#tail] = index\n this.#prev[index] = this.#tail\n this.#tail = index\n this.#size++\n this.#addItemSize(index, size, status)\n if (status) status.set = 'add'\n noUpdateTTL = false\n } else {\n // update\n this.#moveToTail(index)\n const oldVal = this.#valList[index] as V | BackgroundFetch\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'))\n const { __staleWhileFetching: s } = oldVal\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s as V, k, 'set')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s as V, k, 'set'])\n }\n }\n } else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal as V, k, 'set')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal as V, k, 'set'])\n }\n }\n this.#removeItemSize(index)\n this.#addItemSize(index, size, status)\n this.#valList[index] = v\n if (status) {\n status.set = 'replace'\n const oldValue =\n oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal\n if (oldValue !== undefined) status.oldValue = oldValue\n }\n } else if (status) {\n status.set = 'update'\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking()\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start)\n }\n if (status) this.#statusTTL(status, index)\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n return this\n }\n\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop(): V | undefined {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head]\n this.#evict(true)\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching\n }\n } else if (val !== undefined) {\n return val\n }\n }\n } finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n }\n }\n\n #evict(free: boolean) {\n const head = this.#head\n const k = this.#keyList[head] as K\n const v = this.#valList[head] as V\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'))\n } else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict'])\n }\n }\n this.#removeItemSize(head)\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined\n this.#valList[head] = undefined\n this.#free.push(head)\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0 as Index\n this.#free.length = 0\n } else {\n this.#head = this.#next[head] as Index\n }\n this.#keyMap.delete(k)\n this.#size--\n return head\n }\n\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Check if a key is in the cache, without updating the recency of\n * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n * to `true` in either the options or the constructor.\n *\n * Will return `false` if the item is stale, even though it is technically in\n * the cache. The difference can be determined (if it matters) by using a\n * `status` argument, and inspecting the `has` field.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k: K, hasOptions: LRUCache.HasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } =\n hasOptions\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n const v = this.#valList[index]\n if (\n this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined\n ) {\n return false\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index)\n }\n if (status) {\n status.has = 'hit'\n this.#statusTTL(status, index)\n }\n return true\n } else if (status) {\n status.has = 'stale'\n this.#statusTTL(status, index)\n }\n } else if (status) {\n status.has = 'miss'\n }\n return false\n }\n\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k: K, peekOptions: LRUCache.PeekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions\n const index = this.#keyMap.get(k)\n if (\n index === undefined ||\n (!allowStale && this.#isStale(index))\n ) {\n return\n }\n const v = this.#valList[index]\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n }\n\n #backgroundFetch(\n k: K,\n index: Index | undefined,\n options: LRUCache.FetchOptions,\n context: any\n ): BackgroundFetch {\n const v = index === undefined ? undefined : this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n return v\n }\n\n const ac = new AC()\n const { signal } = options\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n })\n\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n }\n\n const cb = (\n v: V | undefined,\n updateCache = false\n ): V | undefined => {\n const { aborted } = ac.signal\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true\n options.status.fetchError = ac.signal.reason\n if (ignoreAbort) options.status.fetchAbortIgnored = true\n } else {\n options.status.fetchResolved = true\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason)\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p as BackgroundFetch\n if (this.#valList[index as Index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index as Index] = bf.__staleWhileFetching\n } else {\n this.#delete(k, 'fetch')\n }\n } else {\n if (options.status) options.status.fetchUpdated = true\n this.set(k, v, fetchOpts.options)\n }\n }\n return v\n }\n\n const eb = (er: any) => {\n if (options.status) {\n options.status.fetchRejected = true\n options.status.fetchError = er\n }\n return fetchFail(er)\n }\n\n const fetchFail = (er: any): V | undefined => {\n const { aborted } = ac.signal\n const allowStaleAborted =\n aborted && options.allowStaleOnFetchAbort\n const allowStale =\n allowStaleAborted || options.allowStaleOnFetchRejection\n const noDelete = allowStale || options.noDeleteOnFetchRejection\n const bf = p as BackgroundFetch\n if (this.#valList[index as Index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined\n if (del) {\n this.#delete(k, 'fetch')\n } else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index as Index] = bf.__staleWhileFetching\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true\n }\n return bf.__staleWhileFetching\n } else if (bf.__returned === bf) {\n throw er\n }\n }\n\n const pcall = (\n res: (v: V | undefined) => void,\n rej: (e: any) => void\n ) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts)\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej)\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (\n !options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort\n ) {\n res(undefined)\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true)\n }\n }\n })\n }\n\n if (options.status) options.status.fetchDispatched = true\n const p = new Promise(pcall).then(cb, eb)\n const bf: BackgroundFetch = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n })\n\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined })\n index = this.#keyMap.get(k)\n } else {\n this.#valList[index] = bf\n }\n return bf\n }\n\n #isBackgroundFetch(p: any): p is BackgroundFetch {\n if (!this.#hasFetchMethod) return false\n const b = p as BackgroundFetch\n return (\n !!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC\n )\n }\n\n /**\n * Make an asynchronous cached fetch using the\n * {@link LRUCache.OptionsBase.fetchMethod} function.\n *\n * If the value is in the cache and not stale, then the returned\n * Promise resolves to the value.\n *\n * If not in the cache, or beyond its TTL staleness, then\n * `fetchMethod(key, staleValue, { options, signal, context })` is\n * called, and the value returned will be added to the cache once\n * resolved.\n *\n * If called with `allowStale`, and an asynchronous fetch is\n * currently in progress to reload a stale value, then the former\n * stale value will be returned.\n *\n * If called with `forceRefresh`, then the cached item will be\n * re-fetched, even if it is not stale. However, if `allowStale` is also\n * set, then the old value will still be returned. This is useful\n * in cases where you want to force a reload of a cached value. If\n * a background fetch is already in progress, then `forceRefresh`\n * has no effect.\n *\n * If multiple fetches for the same key are issued, then they will all be\n * coalesced into a single call to fetchMethod.\n *\n * Note that this means that handling options such as\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort},\n * {@link LRUCache.FetchOptions.signal},\n * and {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} will be\n * determined by the FIRST fetch() call for a given key.\n *\n * This is a known (fixable) shortcoming which will be addresed on when\n * someone complains about it, as the fix would involve added complexity and\n * may not be worth the costs for this edge case.\n *\n * If {@link LRUCache.OptionsBase.fetchMethod} is not specified, then this is\n * effectively an alias for `Promise.resolve(cache.get(key))`.\n *\n * When the fetch method resolves to a value, if the fetch has not\n * been aborted due to deletion, eviction, or being overwritten,\n * then it is added to the cache using the options provided.\n *\n * If the key is evicted or deleted before the `fetchMethod`\n * resolves, then the AbortSignal passed to the `fetchMethod` will\n * receive an `abort` event, and the promise returned by `fetch()`\n * will reject with the reason for the abort.\n *\n * If a `signal` is passed to the `fetch()` call, then aborting the\n * signal will abort the fetch and cause the `fetch()` promise to\n * reject with the reason provided.\n *\n * **Setting `context`**\n *\n * If an `FC` type is set to a type other than `unknown`, `void`, or\n * `undefined` in the {@link LRUCache} constructor, then all\n * calls to `cache.fetch()` _must_ provide a `context` option. If\n * set to `undefined` or `void`, then calls to fetch _must not_\n * provide a `context` option.\n *\n * The `context` param allows you to provide arbitrary data that\n * might be relevant in the course of fetching the data. It is only\n * relevant for the course of a single `fetch()` operation, and\n * discarded afterwards.\n *\n * **Note: `fetch()` calls are inflight-unique**\n *\n * If you call `fetch()` multiple times with the same key value,\n * then every call after the first will resolve on the same\n * promise1,\n * _even if they have different settings that would otherwise change\n * the behavior of the fetch_, such as `noDeleteOnFetchRejection`\n * or `ignoreFetchAbort`.\n *\n * In most cases, this is not a problem (in fact, only fetching\n * something once is what you probably want, if you're caching in\n * the first place). If you are changing the fetch() options\n * dramatically between runs, there's a good chance that you might\n * be trying to fit divergent semantics into a single object, and\n * would be better off with multiple cache instances.\n *\n * **1**: Ie, they're not the \"same Promise\", but they resolve at\n * the same time, because they're both waiting on the same\n * underlying fetchMethod response.\n */\n\n fetch(\n k: K,\n fetchOptions: unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : LRUCache.FetchOptionsWithContext\n ): Promise\n\n // this overload not allowed if context is required\n fetch(\n k: unknown extends FC\n ? K\n : FC extends undefined | void\n ? K\n : never,\n fetchOptions?: unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : never\n ): Promise\n\n async fetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions = {}\n ): Promise {\n const {\n // get options\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n // set options\n ttl = this.ttl,\n noDisposeOnSet = this.noDisposeOnSet,\n size = 0,\n sizeCalculation = this.sizeCalculation,\n noUpdateTTL = this.noUpdateTTL,\n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,\n ignoreFetchAbort = this.ignoreFetchAbort,\n allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,\n context,\n forceRefresh = false,\n status,\n signal,\n } = fetchOptions\n\n if (!this.#hasFetchMethod) {\n if (status) status.fetch = 'get'\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n })\n }\n\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n }\n\n let index = this.#keyMap.get(k)\n if (index === undefined) {\n if (status) status.fetch = 'miss'\n const p = this.#backgroundFetch(k, index, options, context)\n return (p.__returned = p)\n } else {\n // in cache, maybe already fetching\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n const stale =\n allowStale && v.__staleWhileFetching !== undefined\n if (status) {\n status.fetch = 'inflight'\n if (stale) status.returnedStale = true\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v)\n }\n\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index)\n if (!forceRefresh && !isStale) {\n if (status) status.fetch = 'hit'\n this.#moveToTail(index)\n if (updateAgeOnGet) {\n this.#updateItemAge(index)\n }\n if (status) this.#statusTTL(status, index)\n return v\n }\n\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context)\n const hasStale = p.__staleWhileFetching !== undefined\n const staleVal = hasStale && allowStale\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh'\n if (staleVal && isStale) status.returnedStale = true\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p)\n }\n }\n\n /**\n * In some cases, `cache.fetch()` may resolve to `undefined`, either because\n * a {@link LRUCache.OptionsBase#fetchMethod} was not provided (turning\n * `cache.fetch(k)` into just an async wrapper around `cache.get(k)`) or\n * because `ignoreFetchAbort` was specified (either to the constructor or\n * in the {@link LRUCache.FetchOptions}). Also, the\n * {@link OptionsBase.fetchMethod} may return `undefined` or `void`, making\n * the test even more complicated.\n *\n * Because inferring the cases where `undefined` might be returned are so\n * cumbersome, but testing for `undefined` can also be annoying, this method\n * can be used, which will reject if `this.fetch()` resolves to undefined.\n */\n forceFetch(\n k: K,\n fetchOptions: unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : LRUCache.FetchOptionsWithContext\n ): Promise\n // this overload not allowed if context is required\n forceFetch(\n k: unknown extends FC\n ? K\n : FC extends undefined | void\n ? K\n : never,\n fetchOptions?: unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : never\n ): Promise\n async forceFetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions = {}\n ): Promise {\n const v = await this.fetch(\n k,\n fetchOptions as unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : LRUCache.FetchOptionsWithContext\n )\n if (v === undefined) throw new Error('fetch() returned undefined')\n return v\n }\n\n /**\n * If the key is found in the cache, then this is equivalent to\n * {@link LRUCache#get}. If not, in the cache, then calculate the value using\n * the {@link LRUCache.OptionsBase.memoMethod}, and add it to the cache.\n *\n * If an `FC` type is set to a type other than `unknown`, `void`, or\n * `undefined` in the LRUCache constructor, then all calls to `cache.memo()`\n * _must_ provide a `context` option. If set to `undefined` or `void`, then\n * calls to memo _must not_ provide a `context` option.\n *\n * The `context` param allows you to provide arbitrary data that might be\n * relevant in the course of fetching the data. It is only relevant for the\n * course of a single `memo()` operation, and discarded afterwards.\n */\n memo(\n k: K,\n memoOptions: unknown extends FC\n ? LRUCache.MemoOptions\n : FC extends undefined | void\n ? LRUCache.MemoOptionsNoContext\n : LRUCache.MemoOptionsWithContext\n ): V\n // this overload not allowed if context is required\n memo(\n k: unknown extends FC\n ? K\n : FC extends undefined | void\n ? K\n : never,\n memoOptions?: unknown extends FC\n ? LRUCache.MemoOptions\n : FC extends undefined | void\n ? LRUCache.MemoOptionsNoContext\n : never\n ): V\n memo(k: K, memoOptions: LRUCache.MemoOptions = {}) {\n const memoMethod = this.#memoMethod\n if (!memoMethod) {\n throw new Error('no memoMethod provided to constructor')\n }\n const { context, forceRefresh, ...options } = memoOptions\n const v = this.get(k, options)\n if (!forceRefresh && v !== undefined) return v\n const vv = memoMethod(k, v, {\n options,\n context,\n } as LRUCache.MemoizerOptions)\n this.set(k, vv, options)\n return vv\n }\n\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k: K, getOptions: LRUCache.GetOptions = {}) {\n const {\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n status,\n } = getOptions\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n const value = this.#valList[index]\n const fetching = this.#isBackgroundFetch(value)\n if (status) this.#statusTTL(status, index)\n if (this.#isStale(index)) {\n if (status) status.get = 'stale'\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.#delete(k, 'expire')\n }\n if (status && allowStale) status.returnedStale = true\n return allowStale ? value : undefined\n } else {\n if (\n status &&\n allowStale &&\n value.__staleWhileFetching !== undefined\n ) {\n status.returnedStale = true\n }\n return allowStale ? value.__staleWhileFetching : undefined\n }\n } else {\n if (status) status.get = 'hit'\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching\n }\n this.#moveToTail(index)\n if (updateAgeOnGet) {\n this.#updateItemAge(index)\n }\n return value\n }\n } else if (status) {\n status.get = 'miss'\n }\n }\n\n #connect(p: Index, n: Index) {\n this.#prev[n] = p\n this.#next[p] = n\n }\n\n #moveToTail(index: Index): void {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index] as Index\n } else {\n this.#connect(\n this.#prev[index] as Index,\n this.#next[index] as Index\n )\n }\n this.#connect(this.#tail, index)\n this.#tail = index\n }\n }\n\n /**\n * Deletes a key out of the cache.\n *\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k: K) {\n return this.#delete(k, 'delete')\n }\n\n #delete(k: K, reason: LRUCache.DisposeReason) {\n let deleted = false\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n deleted = true\n if (this.#size === 1) {\n this.#clear(reason)\n } else {\n this.#removeItemSize(index)\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v as V, k, reason)\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v as V, k, reason])\n }\n }\n this.#keyMap.delete(k)\n this.#keyList[index] = undefined\n this.#valList[index] = undefined\n if (index === this.#tail) {\n this.#tail = this.#prev[index] as Index\n } else if (index === this.#head) {\n this.#head = this.#next[index] as Index\n } else {\n const pi = this.#prev[index] as number\n this.#next[pi] = this.#next[index] as number\n const ni = this.#next[index] as number\n this.#prev[ni] = this.#prev[index] as number\n }\n this.#size--\n this.#free.push(index)\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed\n let task: DisposeTask | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n return deleted\n }\n\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n return this.#clear('delete')\n }\n #clear(reason: LRUCache.DisposeReason) {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else {\n const k = this.#keyList[index]\n if (this.#hasDispose) {\n this.#dispose?.(v as V, k as K, reason)\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v as V, k as K, reason])\n }\n }\n }\n\n this.#keyMap.clear()\n this.#valList.fill(undefined)\n this.#keyList.fill(undefined)\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0)\n this.#starts.fill(0)\n }\n if (this.#sizes) {\n this.#sizes.fill(0)\n }\n this.#head = 0 as Index\n this.#tail = 0 as Index\n this.#free.length = 0\n this.#calculatedSize = 0\n this.#size = 0\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n }\n}\n", "/**\r\n * common.js\r\n */\r\n\r\n/* constants */\r\nconst TYPE_FROM = 8;\r\nconst TYPE_TO = -1;\r\n\r\n/**\r\n * get type\r\n * @param {*} o - object to check\r\n * @returns {string} - type of object\r\n */\r\nexport const getType = o =>\r\n Object.prototype.toString.call(o).slice(TYPE_FROM, TYPE_TO);\r\n\r\n/**\r\n * is string\r\n * @param {*} o - object to check\r\n * @returns {boolean} - result\r\n */\r\nexport const isString = o => typeof o === 'string' || o instanceof String;\r\n", "class ParseError extends Error{sourceStart;sourceEnd;parserState;constructor(e,n,t,o){super(e),this.name=\"ParseError\",this.sourceStart=n,this.sourceEnd=t,this.parserState=o}}class ParseErrorWithToken extends ParseError{token;constructor(e,n,t,o,r){super(e,n,t,o),this.token=r}}const e={UnexpectedNewLineInString:\"Unexpected newline while consuming a string token.\",UnexpectedEOFInString:\"Unexpected EOF while consuming a string token.\",UnexpectedEOFInComment:\"Unexpected EOF while consuming a comment.\",UnexpectedEOFInURL:\"Unexpected EOF while consuming a url token.\",UnexpectedEOFInEscapedCodePoint:\"Unexpected EOF while consuming an escaped code point.\",UnexpectedCharacterInURL:\"Unexpected character while consuming a url token.\",InvalidEscapeSequenceInURL:\"Invalid escape sequence while consuming a url token.\",InvalidEscapeSequenceAfterBackslash:'Invalid escape sequence after \"\\\\\"'},n=\"undefined\"!=typeof globalThis&&\"structuredClone\"in globalThis;function cloneTokens(e){return n?structuredClone(e):JSON.parse(JSON.stringify(e))}function stringify(...e){let n=\"\";for(let t=0;t=48&&e<=57}function isUppercaseLetterCodePoint(e){return e>=65&&e<=90}function isLowercaseLetterCodePoint(e){return e>=97&&e<=122}function isHexDigitCodePoint(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70}function isLetterCodePoint(e){return isLowercaseLetterCodePoint(e)||isUppercaseLetterCodePoint(e)}function isIdentStartCodePoint(e){return isLetterCodePoint(e)||isNonASCII_IdentCodePoint(e)||95===e}function isIdentCodePoint(e){return isIdentStartCodePoint(e)||isDigitCodePoint(e)||e===o}function isNonASCII_IdentCodePoint(e){return 183===e||8204===e||8205===e||8255===e||8256===e||8204===e||(192<=e&&e<=214||216<=e&&e<=246||248<=e&&e<=893||895<=e&&e<=8191||8304<=e&&e<=8591||11264<=e&&e<=12271||12289<=e&&e<=55295||63744<=e&&e<=64975||65008<=e&&e<=65533||(0===e||(!!isSurrogate(e)||e>=65536)))}function isNewLine(e){return e===r||e===t||12===e}function isWhitespace(e){return 32===e||e===r||9===e||e===t||12===e}function isSurrogate(e){return e>=55296&&e<=57343}function checkIfTwoCodePointsAreAValidEscape(e){return 92===e.source.codePointAt(e.cursor)&&!isNewLine(e.source.codePointAt(e.cursor+1)??-1)}function checkIfThreeCodePointsWouldStartAnIdentSequence(e,n){return n.source.codePointAt(n.cursor)===o?n.source.codePointAt(n.cursor+1)===o||(!!isIdentStartCodePoint(n.source.codePointAt(n.cursor+1)??-1)||92===n.source.codePointAt(n.cursor+1)&&!isNewLine(n.source.codePointAt(n.cursor+2)??-1)):!!isIdentStartCodePoint(n.source.codePointAt(n.cursor)??-1)||checkIfTwoCodePointsAreAValidEscape(n)}function checkIfThreeCodePointsWouldStartANumber(e){return e.source.codePointAt(e.cursor)===i||e.source.codePointAt(e.cursor)===o?!!isDigitCodePoint(e.source.codePointAt(e.cursor+1)??-1)||46===e.source.codePointAt(e.cursor+1)&&isDigitCodePoint(e.source.codePointAt(e.cursor+2)??-1):46===e.source.codePointAt(e.cursor)?isDigitCodePoint(e.source.codePointAt(e.cursor+1)??-1):isDigitCodePoint(e.source.codePointAt(e.cursor)??-1)}function checkIfTwoCodePointsStartAComment(e){return 47===e.source.codePointAt(e.cursor)&&42===e.source.codePointAt(e.cursor+1)}function checkIfThreeCodePointsWouldStartCDC(e){return e.source.codePointAt(e.cursor)===o&&e.source.codePointAt(e.cursor+1)===o&&62===e.source.codePointAt(e.cursor+2)}var c,a,u;function mirrorVariantType(e){switch(e){case c.OpenParen:return c.CloseParen;case c.CloseParen:return c.OpenParen;case c.OpenCurly:return c.CloseCurly;case c.CloseCurly:return c.OpenCurly;case c.OpenSquare:return c.CloseSquare;case c.CloseSquare:return c.OpenSquare;default:return null}}function mirrorVariant(e){switch(e[0]){case c.OpenParen:return[c.CloseParen,\")\",-1,-1,void 0];case c.CloseParen:return[c.OpenParen,\"(\",-1,-1,void 0];case c.OpenCurly:return[c.CloseCurly,\"}\",-1,-1,void 0];case c.CloseCurly:return[c.OpenCurly,\"{\",-1,-1,void 0];case c.OpenSquare:return[c.CloseSquare,\"]\",-1,-1,void 0];case c.CloseSquare:return[c.OpenSquare,\"[\",-1,-1,void 0];default:return null}}function consumeComment(n,t){for(t.advanceCodePoint(2);;){const o=t.readCodePoint();if(void 0===o){const o=[c.Comment,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInComment,t.representationStart,t.representationEnd,[\"4.3.2. Consume comments\",\"Unexpected EOF\"],o)),o}if(42===o&&(void 0!==t.source.codePointAt(t.cursor)&&47===t.source.codePointAt(t.cursor))){t.advanceCodePoint();break}}return[c.Comment,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0]}function consumeEscapedCodePoint(n,o){const i=o.readCodePoint();if(void 0===i)return n.onParseError(new ParseError(e.UnexpectedEOFInEscapedCodePoint,o.representationStart,o.representationEnd,[\"4.3.7. Consume an escaped code point\",\"Unexpected EOF\"])),s;if(isHexDigitCodePoint(i)){const e=[i];let n;for(;void 0!==(n=o.source.codePointAt(o.cursor))&&isHexDigitCodePoint(n)&&e.length<6;)e.push(n),o.advanceCodePoint();isWhitespace(o.source.codePointAt(o.cursor)??-1)&&(o.source.codePointAt(o.cursor)===t&&o.source.codePointAt(o.cursor+1)===r&&o.advanceCodePoint(),o.advanceCodePoint());const c=parseInt(String.fromCodePoint(...e),16);return 0===c||isSurrogate(c)||c>1114111?s:c}return 0===i||isSurrogate(i)?s:i}function consumeIdentSequence(e,n){const t=[];for(;;){const o=n.source.codePointAt(n.cursor)??-1;if(0===o||isSurrogate(o))t.push(s),n.advanceCodePoint(+(o>65535)+1);else if(isIdentCodePoint(o))t.push(o),n.advanceCodePoint(+(o>65535)+1);else{if(!checkIfTwoCodePointsAreAValidEscape(n))return t;n.advanceCodePoint(),t.push(consumeEscapedCodePoint(e,n))}}}function consumeHashToken(e,n){n.advanceCodePoint();const t=n.source.codePointAt(n.cursor);if(void 0!==t&&(isIdentCodePoint(t)||checkIfTwoCodePointsAreAValidEscape(n))){let t=u.Unrestricted;checkIfThreeCodePointsWouldStartAnIdentSequence(0,n)&&(t=u.ID);const o=consumeIdentSequence(e,n);return[c.Hash,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...o),type:t}]}return[c.Delim,\"#\",n.representationStart,n.representationEnd,{value:\"#\"}]}function consumeNumber(e,n){let t=a.Integer;for(n.source.codePointAt(n.cursor)!==i&&n.source.codePointAt(n.cursor)!==o||n.advanceCodePoint();isDigitCodePoint(n.source.codePointAt(n.cursor)??-1);)n.advanceCodePoint();if(46===n.source.codePointAt(n.cursor)&&isDigitCodePoint(n.source.codePointAt(n.cursor+1)??-1))for(n.advanceCodePoint(2),t=a.Number;isDigitCodePoint(n.source.codePointAt(n.cursor)??-1);)n.advanceCodePoint();if(101===n.source.codePointAt(n.cursor)||69===n.source.codePointAt(n.cursor)){if(isDigitCodePoint(n.source.codePointAt(n.cursor+1)??-1))n.advanceCodePoint(2);else{if(n.source.codePointAt(n.cursor+1)!==o&&n.source.codePointAt(n.cursor+1)!==i||!isDigitCodePoint(n.source.codePointAt(n.cursor+2)??-1))return t;n.advanceCodePoint(3)}for(t=a.Number;isDigitCodePoint(n.source.codePointAt(n.cursor)??-1);)n.advanceCodePoint()}return t}function consumeNumericToken(e,n){let t;{const e=n.source.codePointAt(n.cursor);e===o?t=\"-\":e===i&&(t=\"+\")}const r=consumeNumber(0,n),s=parseFloat(n.source.slice(n.representationStart,n.representationEnd+1));if(checkIfThreeCodePointsWouldStartAnIdentSequence(0,n)){const o=consumeIdentSequence(e,n);return[c.Dimension,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:s,signCharacter:t,type:r,unit:String.fromCodePoint(...o)}]}return 37===n.source.codePointAt(n.cursor)?(n.advanceCodePoint(),[c.Percentage,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:s,signCharacter:t}]):[c.Number,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:s,signCharacter:t,type:r}]}function consumeWhiteSpace(e){for(;isWhitespace(e.source.codePointAt(e.cursor)??-1);)e.advanceCodePoint();return[c.Whitespace,e.source.slice(e.representationStart,e.representationEnd+1),e.representationStart,e.representationEnd,void 0]}!function(e){e.Comment=\"comment\",e.AtKeyword=\"at-keyword-token\",e.BadString=\"bad-string-token\",e.BadURL=\"bad-url-token\",e.CDC=\"CDC-token\",e.CDO=\"CDO-token\",e.Colon=\"colon-token\",e.Comma=\"comma-token\",e.Delim=\"delim-token\",e.Dimension=\"dimension-token\",e.EOF=\"EOF-token\",e.Function=\"function-token\",e.Hash=\"hash-token\",e.Ident=\"ident-token\",e.Number=\"number-token\",e.Percentage=\"percentage-token\",e.Semicolon=\"semicolon-token\",e.String=\"string-token\",e.URL=\"url-token\",e.Whitespace=\"whitespace-token\",e.OpenParen=\"(-token\",e.CloseParen=\")-token\",e.OpenSquare=\"[-token\",e.CloseSquare=\"]-token\",e.OpenCurly=\"{-token\",e.CloseCurly=\"}-token\",e.UnicodeRange=\"unicode-range-token\"}(c||(c={})),function(e){e.Integer=\"integer\",e.Number=\"number\"}(a||(a={})),function(e){e.Unrestricted=\"unrestricted\",e.ID=\"id\"}(u||(u={}));class Reader{cursor=0;source=\"\";representationStart=0;representationEnd=-1;constructor(e){this.source=e}advanceCodePoint(e=1){this.cursor=this.cursor+e,this.representationEnd=this.cursor-1}readCodePoint(){const e=this.source.codePointAt(this.cursor);if(void 0!==e)return this.cursor=this.cursor+1,this.representationEnd=this.cursor-1,e}unreadCodePoint(e=1){this.cursor=this.cursor-e,this.representationEnd=this.cursor-1}resetRepresentation(){this.representationStart=this.cursor,this.representationEnd=-1}}function consumeStringToken(n,o){let i=\"\";const a=o.readCodePoint();for(;;){const u=o.readCodePoint();if(void 0===u){const t=[c.String,o.source.slice(o.representationStart,o.representationEnd+1),o.representationStart,o.representationEnd,{value:i}];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInString,o.representationStart,o.representationEnd,[\"4.3.5. Consume a string token\",\"Unexpected EOF\"],t)),t}if(isNewLine(u)){o.unreadCodePoint();const i=[c.BadString,o.source.slice(o.representationStart,o.representationEnd+1),o.representationStart,o.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.UnexpectedNewLineInString,o.representationStart,o.source.codePointAt(o.cursor)===t&&o.source.codePointAt(o.cursor+1)===r?o.representationEnd+2:o.representationEnd+1,[\"4.3.5. Consume a string token\",\"Unexpected newline\"],i)),i}if(u===a)return[c.String,o.source.slice(o.representationStart,o.representationEnd+1),o.representationStart,o.representationEnd,{value:i}];if(92!==u)0===u||isSurrogate(u)?i+=String.fromCodePoint(s):i+=String.fromCodePoint(u);else{if(void 0===o.source.codePointAt(o.cursor))continue;if(isNewLine(o.source.codePointAt(o.cursor)??-1)){o.source.codePointAt(o.cursor)===t&&o.source.codePointAt(o.cursor+1)===r&&o.advanceCodePoint(),o.advanceCodePoint();continue}i+=String.fromCodePoint(consumeEscapedCodePoint(n,o))}}}function checkIfCodePointsMatchURLIdent(e){return!(3!==e.length||117!==e[0]&&85!==e[0]||114!==e[1]&&82!==e[1]||108!==e[2]&&76!==e[2])}function consumeBadURL(e,n){for(;;){const t=n.source.codePointAt(n.cursor);if(void 0===t)return;if(41===t)return void n.advanceCodePoint();checkIfTwoCodePointsAreAValidEscape(n)?(n.advanceCodePoint(),consumeEscapedCodePoint(e,n)):n.advanceCodePoint()}}function consumeUrlToken(n,t){for(;isWhitespace(t.source.codePointAt(t.cursor)??-1);)t.advanceCodePoint();let o=\"\";for(;;){if(void 0===t.source.codePointAt(t.cursor)){const r=[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"Unexpected EOF\"],r)),r}if(41===t.source.codePointAt(t.cursor))return t.advanceCodePoint(),[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}];if(isWhitespace(t.source.codePointAt(t.cursor)??-1)){for(t.advanceCodePoint();isWhitespace(t.source.codePointAt(t.cursor)??-1);)t.advanceCodePoint();if(void 0===t.source.codePointAt(t.cursor)){const r=[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"Consume as much whitespace as possible\",\"Unexpected EOF\"],r)),r}return 41===t.source.codePointAt(t.cursor)?(t.advanceCodePoint(),[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}]):(consumeBadURL(n,t),[c.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0])}const i=t.source.codePointAt(t.cursor);if(34===i||39===i||40===i||(11===(r=i??-1)||127===r||0<=r&&r<=8||14<=r&&r<=31)){consumeBadURL(n,t);const o=[c.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.UnexpectedCharacterInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"Unexpected U+0022 QUOTATION MARK (\\\"), U+0027 APOSTROPHE ('), U+0028 LEFT PARENTHESIS (() or non-printable code point\"],o)),o}if(92===i){if(checkIfTwoCodePointsAreAValidEscape(t)){t.advanceCodePoint(),o+=String.fromCodePoint(consumeEscapedCodePoint(n,t));continue}consumeBadURL(n,t);const r=[c.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.InvalidEscapeSequenceInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"U+005C REVERSE SOLIDUS (\\\\)\",\"The input stream does not start with a valid escape sequence\"],r)),r}0===t.source.codePointAt(t.cursor)||isSurrogate(t.source.codePointAt(t.cursor)??-1)?(o+=String.fromCodePoint(s),t.advanceCodePoint()):(o+=t.source[t.cursor],t.advanceCodePoint())}var r}function consumeIdentLikeToken(e,n){const t=consumeIdentSequence(e,n);if(40!==n.source.codePointAt(n.cursor))return[c.Ident,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...t)}];if(checkIfCodePointsMatchURLIdent(t)){n.advanceCodePoint();let o=0;for(;;){const e=isWhitespace(n.source.codePointAt(n.cursor)??-1),r=isWhitespace(n.source.codePointAt(n.cursor+1)??-1);if(e&&r){o+=1,n.advanceCodePoint(1);continue}const i=e?n.source.codePointAt(n.cursor+1):n.source.codePointAt(n.cursor);if(34===i||39===i)return o>0&&n.unreadCodePoint(o),[c.Function,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...t)}];break}return consumeUrlToken(e,n)}return n.advanceCodePoint(),[c.Function,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...t)}]}function checkIfThreeCodePointsWouldStartAUnicodeRange(e){return!(117!==e.source.codePointAt(e.cursor)&&85!==e.source.codePointAt(e.cursor)||e.source.codePointAt(e.cursor+1)!==i||63!==e.source.codePointAt(e.cursor+2)&&!isHexDigitCodePoint(e.source.codePointAt(e.cursor+2)??-1))}function consumeUnicodeRangeToken(e,n){n.advanceCodePoint(2);const t=[],r=[];let i;for(;void 0!==(i=n.source.codePointAt(n.cursor))&&t.length<6&&isHexDigitCodePoint(i);)t.push(i),n.advanceCodePoint();for(;void 0!==(i=n.source.codePointAt(n.cursor))&&t.length<6&&63===i;)0===r.length&&r.push(...t),t.push(48),r.push(70),n.advanceCodePoint();if(!r.length&&n.source.codePointAt(n.cursor)===o&&isHexDigitCodePoint(n.source.codePointAt(n.cursor+1)??-1))for(n.advanceCodePoint();void 0!==(i=n.source.codePointAt(n.cursor))&&r.length<6&&isHexDigitCodePoint(i);)r.push(i),n.advanceCodePoint();if(!r.length){const e=parseInt(String.fromCodePoint(...t),16);return[c.UnicodeRange,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{startOfRange:e,endOfRange:e}]}const s=parseInt(String.fromCodePoint(...t),16),a=parseInt(String.fromCodePoint(...r),16);return[c.UnicodeRange,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{startOfRange:s,endOfRange:a}]}function tokenize(e,n){const t=tokenizer(e,n),o=[];for(;!t.endOfFile();)o.push(t.nextToken());return o.push(t.nextToken()),o}function tokenizer(n,s){const a=n.css.valueOf(),u=n.unicodeRangesAllowed??!1,d=new Reader(a),p={onParseError:s?.onParseError??noop};return{nextToken:function nextToken(){d.resetRepresentation();const n=d.source.codePointAt(d.cursor);if(void 0===n)return[c.EOF,\"\",-1,-1,void 0];if(47===n&&checkIfTwoCodePointsStartAComment(d))return consumeComment(p,d);if(u&&(117===n||85===n)&&checkIfThreeCodePointsWouldStartAUnicodeRange(d))return consumeUnicodeRangeToken(0,d);if(isIdentStartCodePoint(n))return consumeIdentLikeToken(p,d);if(isDigitCodePoint(n))return consumeNumericToken(p,d);switch(n){case 44:return d.advanceCodePoint(),[c.Comma,\",\",d.representationStart,d.representationEnd,void 0];case 58:return d.advanceCodePoint(),[c.Colon,\":\",d.representationStart,d.representationEnd,void 0];case 59:return d.advanceCodePoint(),[c.Semicolon,\";\",d.representationStart,d.representationEnd,void 0];case 40:return d.advanceCodePoint(),[c.OpenParen,\"(\",d.representationStart,d.representationEnd,void 0];case 41:return d.advanceCodePoint(),[c.CloseParen,\")\",d.representationStart,d.representationEnd,void 0];case 91:return d.advanceCodePoint(),[c.OpenSquare,\"[\",d.representationStart,d.representationEnd,void 0];case 93:return d.advanceCodePoint(),[c.CloseSquare,\"]\",d.representationStart,d.representationEnd,void 0];case 123:return d.advanceCodePoint(),[c.OpenCurly,\"{\",d.representationStart,d.representationEnd,void 0];case 125:return d.advanceCodePoint(),[c.CloseCurly,\"}\",d.representationStart,d.representationEnd,void 0];case 39:case 34:return consumeStringToken(p,d);case 35:return consumeHashToken(p,d);case i:case 46:return checkIfThreeCodePointsWouldStartANumber(d)?consumeNumericToken(p,d):(d.advanceCodePoint(),[c.Delim,d.source[d.representationStart],d.representationStart,d.representationEnd,{value:d.source[d.representationStart]}]);case r:case t:case 12:case 9:case 32:return consumeWhiteSpace(d);case o:return checkIfThreeCodePointsWouldStartANumber(d)?consumeNumericToken(p,d):checkIfThreeCodePointsWouldStartCDC(d)?(d.advanceCodePoint(3),[c.CDC,\"--\\x3e\",d.representationStart,d.representationEnd,void 0]):checkIfThreeCodePointsWouldStartAnIdentSequence(0,d)?consumeIdentLikeToken(p,d):(d.advanceCodePoint(),[c.Delim,\"-\",d.representationStart,d.representationEnd,{value:\"-\"}]);case 60:return checkIfFourCodePointsWouldStartCDO(d)?(d.advanceCodePoint(4),[c.CDO,\"\\x3c!--\",d.representationStart,d.representationEnd,void 0]):(d.advanceCodePoint(),[c.Delim,\"<\",d.representationStart,d.representationEnd,{value:\"<\"}]);case 64:if(d.advanceCodePoint(),checkIfThreeCodePointsWouldStartAnIdentSequence(0,d)){const e=consumeIdentSequence(p,d);return[c.AtKeyword,d.source.slice(d.representationStart,d.representationEnd+1),d.representationStart,d.representationEnd,{value:String.fromCodePoint(...e)}]}return[c.Delim,\"@\",d.representationStart,d.representationEnd,{value:\"@\"}];case 92:{if(checkIfTwoCodePointsAreAValidEscape(d))return consumeIdentLikeToken(p,d);d.advanceCodePoint();const n=[c.Delim,\"\\\\\",d.representationStart,d.representationEnd,{value:\"\\\\\"}];return p.onParseError(new ParseErrorWithToken(e.InvalidEscapeSequenceAfterBackslash,d.representationStart,d.representationEnd,[\"4.3.1. Consume a token\",\"U+005C REVERSE SOLIDUS (\\\\)\",\"The input stream does not start with a valid escape sequence\"],n)),n}}return d.advanceCodePoint(),[c.Delim,d.source[d.representationStart],d.representationStart,d.representationEnd,{value:d.source[d.representationStart]}]},endOfFile:function endOfFile(){return void 0===d.source.codePointAt(d.cursor)}}}function noop(){}function mutateIdent(e,n){const t=[];for(const e of n)t.push(e.codePointAt(0));const o=String.fromCodePoint(...ensureThatValueRoundTripsAsIdent(t));e[1]=o,e[4].value=n}function mutateUnit(e,n){const t=[];for(const e of n)t.push(e.codePointAt(0));const o=ensureThatValueRoundTripsAsIdent(t);101===o[0]&&insertEscapedCodePoint(o,0,o[0]);const r=String.fromCodePoint(...o),i=\"+\"===e[4].signCharacter?e[4].signCharacter:\"\",s=e[4].value.toString();e[1]=`${i}${s}${r}`,e[4].unit=n}function ensureThatValueRoundTripsAsIdent(e){let n=0;e[0]===o&&e[1]===o?n=2:e[0]===o&&e[1]?(n=2,isIdentStartCodePoint(e[1])||(n+=insertEscapedCodePoint(e,1,e[1]))):isIdentStartCodePoint(e[0])?n=1:(n=1,n+=insertEscapedCodePoint(e,0,e[0]));for(let t=n;t{let s=-1;for(let i=n.indexOf(t);i=e.length)?-1:(n=e.slice(),s)}}function consumeComponentValue(e,n){const t=n[0];if(i(t)||r(t)||a(t)){const t=consumeSimpleBlock(e,n);return{advance:t.advance,node:t.node}}if(c(t)){const t=consumeFunction(e,n);return{advance:t.advance,node:t.node}}if(u(t)){const t=consumeWhitespace(e,n);return{advance:t.advance,node:t.node}}if(l(t)){const t=consumeComment(e,n);return{advance:t.advance,node:t.node}}return{advance:1,node:new TokenNode(t)}}!function(e){e.Function=\"function\",e.SimpleBlock=\"simple-block\",e.Whitespace=\"whitespace\",e.Comment=\"comment\",e.Token=\"token\"}(f||(f={}));class ContainerNodeBaseClass{value=[];indexOf(e){return this.value.indexOf(e)}at(e){if(\"number\"==typeof e)return e<0&&(e=this.value.length+e),this.value[e]}forEach(e,n){if(0===this.value.length)return;const t=walkerIndexGenerator(this.value);let o=0;for(;o!1!==e(n,t)&&((!(\"walk\"in n.node)||!this.value.includes(n.node)||!1!==n.node.walk(e,n.state))&&void 0)),n)}}class FunctionNode extends ContainerNodeBaseClass{type=f.Function;name;endToken;constructor(e,n,t){super(),this.name=e,this.endToken=n,this.value=t}getName(){return this.name[4].value}normalize(){e(this.endToken)&&(this.endToken=[n.CloseParen,\")\",-1,-1,void 0])}tokens(){return e(this.endToken)?[this.name,...this.value.flatMap((e=>e.tokens()))]:[this.name,...this.value.flatMap((e=>e.tokens())),this.endToken]}toString(){const e=this.value.map((e=>t(e)?o(e):e.toString())).join(\"\");return o(this.name)+e+o(this.endToken)}toJSON(){return{type:this.type,name:this.getName(),tokens:this.tokens(),value:this.value.map((e=>e.toJSON()))}}isFunctionNode(){return FunctionNode.isFunctionNode(this)}static isFunctionNode(e){return!!e&&(e instanceof FunctionNode&&e.type===f.Function)}}function consumeFunction(n,t){const o=[];let s=1;for(;;){const i=t[s];if(!i||e(i))return n.onParseError(new d(\"Unexpected EOF while consuming a function.\",t[0][2],t[t.length-1][3],[\"5.4.9. Consume a function\",\"Unexpected EOF\"])),{advance:t.length,node:new FunctionNode(t[0],i,o)};if(h(i))return{advance:s+1,node:new FunctionNode(t[0],i,o)};if(p(i)){const e=consumeAllCommentsAndWhitespace(n,t.slice(s));s+=e.advance,o.push(...e.nodes);continue}const r=consumeComponentValue(n,t.slice(s));s+=r.advance,o.push(r.node)}}class SimpleBlockNode extends ContainerNodeBaseClass{type=f.SimpleBlock;startToken;endToken;constructor(e,n,t){super(),this.startToken=e,this.endToken=n,this.value=t}normalize(){if(e(this.endToken)){const e=s(this.startToken);e&&(this.endToken=e)}}tokens(){return e(this.endToken)?[this.startToken,...this.value.flatMap((e=>e.tokens()))]:[this.startToken,...this.value.flatMap((e=>e.tokens())),this.endToken]}toString(){const e=this.value.map((e=>t(e)?o(e):e.toString())).join(\"\");return o(this.startToken)+e+o(this.endToken)}toJSON(){return{type:this.type,startToken:this.startToken,tokens:this.tokens(),value:this.value.map((e=>e.toJSON()))}}isSimpleBlockNode(){return SimpleBlockNode.isSimpleBlockNode(this)}static isSimpleBlockNode(e){return!!e&&(e instanceof SimpleBlockNode&&e.type===f.SimpleBlock)}}function consumeSimpleBlock(n,t){const o=m(t[0][0]);if(!o)throw new Error(\"Failed to parse, a mirror variant must exist for all block open tokens.\");const s=[];let i=1;for(;;){const r=t[i];if(!r||e(r))return n.onParseError(new d(\"Unexpected EOF while consuming a simple block.\",t[0][2],t[t.length-1][3],[\"5.4.8. Consume a simple block\",\"Unexpected EOF\"])),{advance:t.length,node:new SimpleBlockNode(t[0],r,s)};if(r[0]===o)return{advance:i+1,node:new SimpleBlockNode(t[0],r,s)};if(p(r)){const e=consumeAllCommentsAndWhitespace(n,t.slice(i));i+=e.advance,s.push(...e.nodes);continue}const a=consumeComponentValue(n,t.slice(i));i+=a.advance,s.push(a.node)}}class WhitespaceNode{type=f.Whitespace;value;constructor(e){this.value=e}tokens(){return this.value}toString(){return o(...this.value)}toJSON(){return{type:this.type,tokens:this.tokens()}}isWhitespaceNode(){return WhitespaceNode.isWhitespaceNode(this)}static isWhitespaceNode(e){return!!e&&(e instanceof WhitespaceNode&&e.type===f.Whitespace)}}function consumeWhitespace(e,n){let t=0;for(;;){const e=n[t];if(!u(e))return{advance:t,node:new WhitespaceNode(n.slice(0,t))};t++}}class CommentNode{type=f.Comment;value;constructor(e){this.value=e}tokens(){return[this.value]}toString(){return o(this.value)}toJSON(){return{type:this.type,tokens:this.tokens()}}isCommentNode(){return CommentNode.isCommentNode(this)}static isCommentNode(e){return!!e&&(e instanceof CommentNode&&e.type===f.Comment)}}function consumeComment(e,n){return{advance:1,node:new CommentNode(n[0])}}function consumeAllCommentsAndWhitespace(e,n){const t=[];let o=0;for(;;)if(u(n[o])){const e=consumeWhitespace(0,n.slice(o));o+=e.advance,t.push(e.node)}else{if(!l(n[o]))return{advance:o,nodes:t};t.push(new CommentNode(n[o])),o++}}class TokenNode{type=f.Token;value;constructor(e){this.value=e}tokens(){return[this.value]}toString(){return this.value[1]}toJSON(){return{type:this.type,tokens:this.tokens()}}isTokenNode(){return TokenNode.isTokenNode(this)}static isTokenNode(e){return!!e&&(e instanceof TokenNode&&e.type===f.Token)}}function parseComponentValue(t,o){const s={onParseError:o?.onParseError??(()=>{})},i=[...t];e(i[i.length-1])&&i.push([n.EOF,\"\",i[i.length-1][2],i[i.length-1][3],void 0]);const r=consumeComponentValue(s,i);if(e(i[Math.min(r.advance,i.length-1)]))return r.node;s.onParseError(new d(\"Expected EOF after parsing a component value.\",t[0][2],t[t.length-1][3],[\"5.3.9. Parse a component value\",\"Expected EOF\"]))}function parseListOfComponentValues(t,o){const s={onParseError:o?.onParseError??(()=>{})},i=[...t];e(i[i.length-1])&&i.push([n.EOF,\"\",i[i.length-1][2],i[i.length-1][3],void 0]);const r=[];let a=0;for(;;){if(!i[a]||e(i[a]))return r;const n=consumeComponentValue(s,i.slice(a));r.push(n.node),a+=n.advance}}function parseCommaSeparatedListOfComponentValues(t,o){const s={onParseError:o?.onParseError??(()=>{})},i=[...t];if(0===t.length)return[];e(i[i.length-1])&&i.push([n.EOF,\"\",i[i.length-1][2],i[i.length-1][3],void 0]);const r=[];let a=[],c=0;for(;;){if(!i[c]||e(i[c]))return a.length&&r.push(a),r;if(k(i[c])){r.push(a),a=[],c++;continue}const n=consumeComponentValue(s,t.slice(c));a.push(n.node),c+=n.advance}}function gatherNodeAncestry(e){const n=new Map;return e.walk((e=>{Array.isArray(e.node)?e.node.forEach((t=>{n.set(t,e.parent)})):n.set(e.node,e.parent)})),n}function forEach(e,n,t){if(0===e.length)return;const o=walkerIndexGenerator(e);let s=0;for(;s!1!==n(t,o)&&((!(\"walk\"in t.node)||!e.includes(t.node)||!1!==t.node.walk(n,t.state))&&void 0)),t)}function replaceComponentValues(e,n){for(let t=0;t{if(\"number\"!=typeof t)return;const o=n(e.node);o&&(Array.isArray(o)?e.parent.value.splice(t,1,...o):e.parent.value.splice(t,1,o))}))}return e}function stringify(e){return e.map((e=>e.map((e=>o(...e.tokens()))).join(\"\"))).join(\",\")}function isSimpleBlockNode(e){return SimpleBlockNode.isSimpleBlockNode(e)}function isFunctionNode(e){return FunctionNode.isFunctionNode(e)}function isWhitespaceNode(e){return WhitespaceNode.isWhitespaceNode(e)}function isCommentNode(e){return CommentNode.isCommentNode(e)}function isWhiteSpaceOrCommentNode(e){return isWhitespaceNode(e)||isCommentNode(e)}function isTokenNode(e){return TokenNode.isTokenNode(e)}function sourceIndices(e){if(Array.isArray(e)){const n=e[0];if(!n)return[0,0];const t=e[e.length-1]||n;return[sourceIndices(n)[0],sourceIndices(t)[1]]}const n=e.tokens(),t=n[0],o=n[n.length-1];return t&&o?[t[2],o[3]]:[0,0]}export{CommentNode,f as ComponentValueType,ContainerNodeBaseClass,FunctionNode,SimpleBlockNode,TokenNode,WhitespaceNode,forEach,gatherNodeAncestry,isCommentNode,isFunctionNode,isSimpleBlockNode,isTokenNode,isWhiteSpaceOrCommentNode,isWhitespaceNode,parseCommaSeparatedListOfComponentValues,parseComponentValue,parseListOfComponentValues,replaceComponentValues,sourceIndices,stringify,walk,walkerIndexGenerator};\n", "import{TokenNode as e,isTokenNode as n,isWhitespaceNode as t,isCommentNode as r,isWhiteSpaceOrCommentNode as u,isSimpleBlockNode as a,isFunctionNode as i,FunctionNode as o,WhitespaceNode as l,parseCommaSeparatedListOfComponentValues as c,replaceComponentValues as s}from\"@csstools/css-parser-algorithms\";import{isTokenDimension as v,TokenType as f,NumberType as m,mutateUnit as p,isTokenNumber as C,isTokenPercentage as g,isTokenIdent as D,isTokenNumeric as B,stringify as N,isTokenOpenParen as A,isTokenDelim as d,isTokenComma as F,isToken as b,tokenizer as h,tokenize as w}from\"@csstools/css-tokenizer\";const E=/[A-Z]/g;function toLowerCaseAZ(e){return e.replace(E,(e=>String.fromCharCode(e.charCodeAt(0)+32)))}const S={cm:\"px\",in:\"px\",mm:\"px\",pc:\"px\",pt:\"px\",px:\"px\",q:\"px\",deg:\"deg\",grad:\"deg\",rad:\"deg\",turn:\"deg\",ms:\"s\",s:\"s\",hz:\"hz\",khz:\"hz\"},I=new Map([[\"cm\",e=>e],[\"mm\",e=>10*e],[\"q\",e=>40*e],[\"in\",e=>e/2.54],[\"pc\",e=>e/2.54*6],[\"pt\",e=>e/2.54*72],[\"px\",e=>e/2.54*96]]),y=new Map([[\"deg\",e=>e],[\"grad\",e=>e/.9],[\"rad\",e=>e/180*Math.PI],[\"turn\",e=>e/360]]),M=new Map([[\"deg\",e=>.9*e],[\"grad\",e=>e],[\"rad\",e=>.9*e/180*Math.PI],[\"turn\",e=>.9*e/360]]),T=new Map([[\"hz\",e=>e],[\"khz\",e=>e/1e3]]),k=new Map([[\"cm\",e=>2.54*e],[\"mm\",e=>25.4*e],[\"q\",e=>25.4*e*4],[\"in\",e=>e],[\"pc\",e=>6*e],[\"pt\",e=>72*e],[\"px\",e=>96*e]]),x=new Map([[\"hz\",e=>1e3*e],[\"khz\",e=>e]]),P=new Map([[\"cm\",e=>e/10],[\"mm\",e=>e],[\"q\",e=>4*e],[\"in\",e=>e/25.4],[\"pc\",e=>e/25.4*6],[\"pt\",e=>e/25.4*72],[\"px\",e=>e/25.4*96]]),O=new Map([[\"ms\",e=>e],[\"s\",e=>e/1e3]]),W=new Map([[\"cm\",e=>e/6*2.54],[\"mm\",e=>e/6*25.4],[\"q\",e=>e/6*25.4*4],[\"in\",e=>e/6],[\"pc\",e=>e],[\"pt\",e=>e/6*72],[\"px\",e=>e/6*96]]),L=new Map([[\"cm\",e=>e/72*2.54],[\"mm\",e=>e/72*25.4],[\"q\",e=>e/72*25.4*4],[\"in\",e=>e/72],[\"pc\",e=>e/72*6],[\"pt\",e=>e],[\"px\",e=>e/72*96]]),U=new Map([[\"cm\",e=>e/96*2.54],[\"mm\",e=>e/96*25.4],[\"q\",e=>e/96*25.4*4],[\"in\",e=>e/96],[\"pc\",e=>e/96*6],[\"pt\",e=>e/96*72],[\"px\",e=>e]]),Z=new Map([[\"cm\",e=>e/4/10],[\"mm\",e=>e/4],[\"q\",e=>e],[\"in\",e=>e/4/25.4],[\"pc\",e=>e/4/25.4*6],[\"pt\",e=>e/4/25.4*72],[\"px\",e=>e/4/25.4*96]]),$=new Map([[\"deg\",e=>180*e/Math.PI],[\"grad\",e=>180*e/Math.PI/.9],[\"rad\",e=>e],[\"turn\",e=>180*e/Math.PI/360]]),z=new Map([[\"ms\",e=>1e3*e],[\"s\",e=>e]]),q=new Map([[\"deg\",e=>360*e],[\"grad\",e=>360*e/.9],[\"rad\",e=>360*e/180*Math.PI],[\"turn\",e=>e]]),G=new Map([[\"cm\",I],[\"mm\",P],[\"q\",Z],[\"in\",k],[\"pc\",W],[\"pt\",L],[\"px\",U],[\"ms\",O],[\"s\",z],[\"deg\",y],[\"grad\",M],[\"rad\",$],[\"turn\",q],[\"hz\",T],[\"khz\",x]]);function convertUnit(e,n){if(!v(e))return n;if(!v(n))return n;const t=toLowerCaseAZ(e[4].unit),r=toLowerCaseAZ(n[4].unit);if(t===r)return n;const u=G.get(r);if(!u)return n;const a=u.get(t);if(!a)return n;const i=a(n[4].value),o=[f.Dimension,\"\",n[2],n[3],{...n[4],signCharacter:i<0?\"-\":void 0,type:Number.isInteger(i)?m.Integer:m.Number,value:i}];return p(o,e[4].unit),o}function toCanonicalUnit(e){if(!v(e))return e;const n=toLowerCaseAZ(e[4].unit),t=S[n];if(n===t)return e;const r=G.get(n);if(!r)return e;const u=r.get(t);if(!u)return e;const a=u(e[4].value),i=[f.Dimension,\"\",e[2],e[3],{...e[4],signCharacter:a<0?\"-\":void 0,type:Number.isInteger(a)?m.Integer:m.Number,value:a}];return p(i,t),i}function addition(n){if(2!==n.length)return-1;const t=n[0].value;let r=n[1].value;if(C(t)&&C(r)){const n=t[4].value+r[4].value;return new e([f.Number,n.toString(),t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number}])}if(g(t)&&g(r)){const n=t[4].value+r[4].value;return new e([f.Percentage,n.toString()+\"%\",t[2],r[3],{value:n}])}if(v(t)&&v(r)&&(r=convertUnit(t,r),toLowerCaseAZ(t[4].unit)===toLowerCaseAZ(r[4].unit))){const n=t[4].value+r[4].value;return new e([f.Dimension,n.toString()+t[4].unit,t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number,unit:t[4].unit}])}return-1}function division(n){if(2!==n.length)return-1;const t=n[0].value,r=n[1].value;if(C(t)&&C(r)){const n=t[4].value/r[4].value;return new e([f.Number,n.toString(),t[2],r[3],{value:n,type:Number.isInteger(n)?m.Integer:m.Number}])}if(g(t)&&C(r)){const n=t[4].value/r[4].value;return new e([f.Percentage,n.toString()+\"%\",t[2],r[3],{value:n}])}if(v(t)&&C(r)){const n=t[4].value/r[4].value;return new e([f.Dimension,n.toString()+t[4].unit,t[2],r[3],{value:n,type:Number.isInteger(n)?m.Integer:m.Number,unit:t[4].unit}])}return-1}function isCalculation(e){return!!e&&\"object\"==typeof e&&\"inputs\"in e&&Array.isArray(e.inputs)&&\"operation\"in e}function solve(e){if(-1===e)return-1;const t=[];for(let r=0;rconvertUnit(u,e.value)));if(!arrayOfSameNumeric(a))return-1;const i=a.map((e=>e[4].value)),o=Math.hypot(...i);return resultToCalculation(e,u,o)}function solveMax(e,t,r){if(!t.every(n))return-1;const u=t[0].value;if(!B(u))return-1;if(!r.rawPercentages&&g(u))return-1;const a=t.map((e=>convertUnit(u,e.value)));if(!arrayOfSameNumeric(a))return-1;const i=a.map((e=>e[4].value)),o=Math.max(...i);return resultToCalculation(e,u,o)}function solveMin(e,t,r){if(!t.every(n))return-1;const u=t[0].value;if(!B(u))return-1;if(!r.rawPercentages&&g(u))return-1;const a=t.map((e=>convertUnit(u,e.value)));if(!arrayOfSameNumeric(a))return-1;const i=a.map((e=>e[4].value)),o=Math.min(...i);return resultToCalculation(e,u,o)}function solveMod(e,n,t){const r=n.value;if(!B(r))return-1;const u=convertUnit(r,t.value);if(!twoOfSameNumeric(r,u))return-1;let a;return a=0===u[4].value?Number.NaN:Number.isFinite(r[4].value)&&(Number.isFinite(u[4].value)||(u[4].value!==Number.POSITIVE_INFINITY||r[4].value!==Number.NEGATIVE_INFINITY&&!Object.is(0*r[4].value,-0))&&(u[4].value!==Number.NEGATIVE_INFINITY||r[4].value!==Number.POSITIVE_INFINITY&&!Object.is(0*r[4].value,0)))?Number.isFinite(u[4].value)?(r[4].value%u[4].value+u[4].value)%u[4].value:r[4].value:Number.NaN,resultToCalculation(e,r,a)}function solvePow(e,n,t){const r=n.value,u=t.value;if(!C(r))return-1;if(!twoOfSameNumeric(r,u))return-1;return numberToCalculation(e,Math.pow(r[4].value,u[4].value))}function solveRem(e,n,t){const r=n.value;if(!B(r))return-1;const u=convertUnit(r,t.value);if(!twoOfSameNumeric(r,u))return-1;let a;return a=0===u[4].value?Number.NaN:Number.isFinite(r[4].value)?Number.isFinite(u[4].value)?r[4].value%u[4].value:r[4].value:Number.NaN,resultToCalculation(e,r,a)}function solveRound(e,n,t,r,u){const a=t.value;if(!B(a))return-1;if(!u.rawPercentages&&g(a))return-1;const i=convertUnit(a,r.value);if(!twoOfSameNumeric(a,i))return-1;let o;if(0===i[4].value)o=Number.NaN;else if(Number.isFinite(a[4].value)||Number.isFinite(i[4].value))if(!Number.isFinite(a[4].value)&&Number.isFinite(i[4].value))o=a[4].value;else if(Number.isFinite(a[4].value)&&!Number.isFinite(i[4].value))switch(n){case\"down\":o=a[4].value<0?-1/0:Object.is(-0,0*a[4].value)?-0:0;break;case\"up\":o=a[4].value>0?1/0:Object.is(0,0*a[4].value)?0:-0;break;default:o=Object.is(0,0*a[4].value)?0:-0}else if(Number.isFinite(i[4].value))switch(n){case\"down\":o=Math.floor(a[4].value/i[4].value)*i[4].value;break;case\"up\":o=Math.ceil(a[4].value/i[4].value)*i[4].value;break;case\"to-zero\":o=Math.trunc(a[4].value/i[4].value)*i[4].value;break;default:{let e=Math.floor(a[4].value/i[4].value)*i[4].value,n=Math.ceil(a[4].value/i[4].value)*i[4].value;if(e>n){const t=e;e=n,n=t}const t=Math.abs(a[4].value-e),r=Math.abs(a[4].value-n);o=t===r?n:t0?1/0:-1/0:Math.tan(a),numberToCalculation(e,a)}function subtraction(n){if(2!==n.length)return-1;const t=n[0].value;let r=n[1].value;if(C(t)&&C(r)){const n=t[4].value-r[4].value;return new e([f.Number,n.toString(),t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number}])}if(g(t)&&g(r)){const n=t[4].value-r[4].value;return new e([f.Percentage,n.toString()+\"%\",t[2],r[3],{value:n}])}if(v(t)&&v(r)&&(r=convertUnit(t,r),toLowerCaseAZ(t[4].unit)===toLowerCaseAZ(r[4].unit))){const n=t[4].value-r[4].value;return new e([f.Dimension,n.toString()+t[4].unit,t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number,unit:t[4].unit}])}return-1}function solveLog(e,t){if(1===t.length){const r=t[0];if(!r||!n(r))return-1;const u=r.value;if(!C(u))return-1;return numberToCalculation(e,Math.log(u[4].value))}if(2===t.length){const r=t[0];if(!r||!n(r))return-1;const u=r.value;if(!C(u))return-1;const a=t[1];if(!a||!n(a))return-1;const i=a.value;if(!C(i))return-1;return numberToCalculation(e,Math.log(u[4].value)/Math.log(i[4].value))}return-1}const j=/^none$/i;function isNone(e){if(Array.isArray(e)){const n=e.filter((e=>!(t(e)&&r(e))));return 1===n.length&&isNone(n[0])}if(!n(e))return!1;const u=e.value;return!!D(u)&&j.test(u[4].value)}function solveRandom(e,n,t,r,u,a){const i=t.value;if(!B(i))return-1;const o=convertUnit(i,r.value);if(!twoOfSameNumeric(i,o))return-1;let l,c=null;if(u&&(c=convertUnit(i,u.value),!twoOfSameNumeric(i,c)))return-1;if(Number.isFinite(i[4].value))if(Number.isFinite(o[4].value))if(c&&(!Number.isFinite(c[4].value)||c[4].value<=0))l=i[4].value;else{const e=sfc32(crc32([n,N(i),N(o),u?`by ${u.toString()}`:\"\"].join(\",\")),a.randomSeed);let t=i[4].value,r=o[4].value;if(t>r&&([t,r]=[r,t]),c){const n=Math.abs(t-r),u=e();l=t+Math.floor(n/c[4].value*u)*c[4].value}else{const n=e();l=Number((n*(r-t)+t).toFixed(5))}}else l=Number.NaN;else l=Number.NaN;return resultToCalculation(e,i,l)}function sfc32(e=.34944106645296036,n=.19228640875738723,t=.8784393832007205,r=.04850964319275053){return()=>{const u=((e|=0)+(n|=0)|0)+(r|=0)|0;return r=r+1|0,e=n^n>>>9,n=(t|=0)+(t<<3)|0,t=(t=t<<21|t>>>11)+u|0,(u>>>0)/4294967296}}function crc32(e){let n=0,t=0,r=0;n=~n;for(let u=0,a=e.length;u>>8^t;return~n>>>0}const R=new Map([[\"abs\",function abs(e,n,t){return singleNodeSolver(e,n,t,solveAbs)}],[\"acos\",function acos(e,n,t){return singleNodeSolver(e,n,t,solveACos)}],[\"asin\",function asin(e,n,t){return singleNodeSolver(e,n,t,solveASin)}],[\"atan\",function atan(e,n,t){return singleNodeSolver(e,n,t,solveATan)}],[\"atan2\",function atan2(e,n,t){return twoCommaSeparatedNodesSolver(e,n,t,solveATan2)}],[\"calc\",calc$1],[\"clamp\",function clamp(t,r,a){const i=resolveGlobalsAndConstants([...t.value.filter((e=>!u(e)))],r),l=[],c=[],s=[];{let e=l;for(let t=0;t!u(e)));let i=\"\";const o=[],l=[];for(let e=0;e0&&n(t)&&D(t.value)){const n=t.value[4].value.toLowerCase();if(\"by\"===n||n.startsWith(\"--\")){o.push(...a.slice(e+2));break}}}l.push(t)}const c=twoCommaSeparatedArguments(l,t,r);if(-1===c)return-1;const[s,v]=c;let f=null;if(o.length&&(f=singleArgument(o,t,r),-1===f))return-1;return solveRandom(e,i,s,v,f,r)}],[\"rem\",function rem(e,n,t){return twoCommaSeparatedNodesSolver(e,n,t,solveRem)}],[\"round\",function round(t,r,a){const i=resolveGlobalsAndConstants([...t.value.filter((e=>!u(e)))],r);let o=\"\",l=!1;const c=[],s=[];{let e=c;for(let t=0;t!u(e)))],t);if(1===o.length&&n(o[0]))return{inputs:[o[0]],operation:unary};let l=0;for(;l!u(e)))],n)),n,t));return-1===r?-1:r}function twoCommaSeparatedNodesSolver(e,n,t,r){const u=twoCommaSeparatedArguments(e.value,n,t);if(-1===u)return-1;const[a,i]=u;return r(e,a,i,t)}function twoCommaSeparatedArguments(e,t,r){const a=resolveGlobalsAndConstants([...e.filter((e=>!u(e)))],t),i=[],o=[];{let e=i;for(let t=0;t!u(e)))],t),i=[];{const e=[];let u=[];for(let t=0;te.map((e=>N(...e.tokens()))).join(\"\"))).join(\",\")}function calcFromComponentValues(e,n){const t=tokenizeGlobals(n?.globals);return s(e,(e=>{if(!i(e))return;const r=R.get(e.getName().toLowerCase());if(!r)return;const u=patchCalcResult(solve(r(e,t,n??{})),n);return-1!==u?u:void 0}))}const Y=new Set(R.keys());export{calc,calcFromComponentValues,Y as mathFunctionNames};\n", "/**\n * constant.js\n */\n\n/* constants */\nexport const VAL_COMP = 'computedValue';\nexport const VAL_SPEC = 'specifiedValue';\n\n/* values and units */\nconst _DIGIT = '(?:0|[1-9]\\\\d*)';\nconst _COMP = 'clamp|max|min';\nconst _STEP = 'mod|rem|round';\nconst _TRIG = 'a?(?:cos|sin|tan)|atan2';\nconst _EXP = 'exp|hypot|log|pow|sqrt';\nconst _SIGN = 'abs|sign';\nconst _MATH = `${_COMP}|${_STEP}|${_TRIG}|${_EXP}|${_SIGN}`;\nconst _CALC = `calc|${_MATH}`;\nconst _VAR = `var|${_CALC}`;\nexport const ANGLE = 'deg|g?rad|turn';\nexport const NUM = `[+-]?(?:${_DIGIT}(?:\\\\.\\\\d*)?|\\\\.\\\\d+)(?:e-?${_DIGIT})?`;\nexport const NONE = 'none';\nexport const PCT = `${NUM}%`;\nexport const SYN_FN_MATH = `^(?:${_MATH})\\\\($`;\nexport const SYN_FN_MATH_CALC =\n `^(?:${_CALC})\\\\(|(?<=[*\\\\/\\\\s\\\\(])(?:${_CALC})\\\\(`;\nexport const SYN_FN_MATH_VAR = `^(?:${_VAR})\\\\(`;\nexport const SYN_FN_VAR = '^var\\\\(|(?<=[*\\\\/\\\\s\\\\(])var\\\\(';\n\n/* colors */\nconst _ALPHA = `(?:\\\\s*\\\\/\\\\s*(?:${NUM}|${PCT}|${NONE}))?`;\nconst _ALPHA_LV3 = `(?:\\\\s*,\\\\s*(?:${NUM}|${PCT}))?`;\nconst _COLOR_FUNC = '(?:ok)?l(?:ab|ch)|color|hsla?|hwb|rgba?';\nconst _COLOR_KEY = '[a-z]+|#[\\\\da-f]{3}|#[\\\\da-f]{4}|#[\\\\da-f]{6}|#[\\\\da-f]{8}';\nconst _CS_HUE = '(?:ok)?lch|hsl|hwb';\nconst _CS_HUE_ARC = '(?:de|in)creasing|longer|shorter';\nconst _NUM_ANGLE = `${NUM}(?:${ANGLE})?`;\nconst _NUM_ANGLE_NONE = `(?:${NUM}(?:${ANGLE})?|${NONE})`;\nconst _NUM_PCT_NONE = `(?:${NUM}|${PCT}|${NONE})`;\nexport const CS_HUE = `(?:${_CS_HUE})(?:\\\\s(?:${_CS_HUE_ARC})\\\\shue)?`;\nexport const CS_HUE_CAPT = `(${_CS_HUE})(?:\\\\s(${_CS_HUE_ARC})\\\\shue)?`;\nexport const CS_LAB = '(?:ok)?lab';\nexport const CS_LCH = '(?:ok)?lch';\nexport const CS_SRGB = 'srgb(?:-linear)?';\nexport const CS_RGB = `(?:a98|prophoto)-rgb|display-p3|rec2020|${CS_SRGB}`;\nexport const CS_XYZ = 'xyz(?:-d(?:50|65))?';\nexport const CS_MIX = `${CS_HUE}|${CS_LAB}|${CS_SRGB}|${CS_XYZ}`;\nexport const FN_COLOR = 'color(';\nexport const FN_MIX = 'color-mix(';\nexport const FN_REL = `(?:${_COLOR_FUNC})\\\\(\\\\s*from\\\\s+`;\nexport const FN_REL_CAPT = `(${_COLOR_FUNC})\\\\(\\\\s*from\\\\s+`;\nexport const FN_VAR = 'var(';\nexport const SYN_FN_COLOR =\n `(?:${CS_RGB}|${CS_XYZ})(?:\\\\s+${_NUM_PCT_NONE}){3}${_ALPHA}`;\nexport const SYN_FN_REL = `^${FN_REL}|(?<=[\\\\s])${FN_REL}`;\nexport const SYN_HSL = `${_NUM_ANGLE_NONE}(?:\\\\s+${_NUM_PCT_NONE}){2}${_ALPHA}`;\nexport const SYN_HSL_LV3 = `${_NUM_ANGLE}(?:\\\\s*,\\\\s*${PCT}){2}${_ALPHA_LV3}`;\nexport const SYN_LCH = `(?:${_NUM_PCT_NONE}\\\\s+){2}${_NUM_ANGLE_NONE}${_ALPHA}`;\nexport const SYN_MOD = `${_NUM_PCT_NONE}(?:\\\\s+${_NUM_PCT_NONE}){2}${_ALPHA}`;\nexport const SYN_RGB_LV3 =\n `(?:${NUM}(?:\\\\s*,\\\\s*${NUM}){2}|${PCT}(?:\\\\s*,\\\\s*${PCT}){2})${_ALPHA_LV3}`;\nexport const SYN_COLOR_TYPE = `${_COLOR_KEY}|hsla?\\\\(\\\\s*${SYN_HSL_LV3}\\\\s*\\\\)|rgba?\\\\(\\\\s*${SYN_RGB_LV3}\\\\s*\\\\)|(?:hsla?|hwb)\\\\(\\\\s*${SYN_HSL}\\\\s*\\\\)|(?:(?:ok)?lab|rgba?)\\\\(\\\\s*${SYN_MOD}\\\\s*\\\\)|(?:ok)?lch\\\\(\\\\s*${SYN_LCH}\\\\s*\\\\)|color\\\\(\\\\s*${SYN_FN_COLOR}\\\\s*\\\\)`;\nexport const SYN_MIX_PART = `(?:${SYN_COLOR_TYPE})(?:\\\\s+${PCT})?`;\nexport const SYN_MIX = `color-mix\\\\(\\\\s*in\\\\s+(?:${CS_MIX})\\\\s*,\\\\s*${SYN_MIX_PART}\\\\s*,\\\\s*${SYN_MIX_PART}\\\\s*\\\\)`;\nexport const SYN_MIX_CAPT = `color-mix\\\\(\\\\s*in\\\\s+(${CS_MIX})\\\\s*,\\\\s*(${SYN_MIX_PART})\\\\s*,\\\\s*(${SYN_MIX_PART})\\\\s*\\\\)`;\n", "/**\n * css-calc.js\n */\n\nimport { calc } from '@csstools/css-calc';\nimport { TokenType, tokenize } from '@csstools/css-tokenizer';\nimport { LRUCache } from 'lru-cache';\nimport { isString } from './common.js';\nimport { roundToPrecision, valueToJsonString } from './util.js';\n\n/* constants */\nimport {\n FN_VAR, NUM, SYN_FN_MATH, SYN_FN_MATH_CALC, SYN_FN_MATH_VAR, SYN_FN_VAR,\n VAL_SPEC\n} from './constant.js';\nconst {\n CloseParen: PAREN_CLOSE, Comment: COMMENT, Dimension: DIM, EOF,\n Function: FUNC, OpenParen: PAREN_OPEN, Whitespace: W_SPACE\n} = TokenType;\nconst HEX = 16;\nconst MAX_PCT = 100;\n\n/* regexp */\nconst REG_FN_MATH_CALC = new RegExp(SYN_FN_MATH_CALC);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\nconst REG_OPERATOR = /\\s[*+/-]\\s/;\nconst REG_START_MATH = new RegExp(SYN_FN_MATH);\nconst REG_START_MATH_VAR = new RegExp(SYN_FN_MATH_VAR);\nconst REG_TYPE_DIM = new RegExp(`^(${NUM})([a-z]+)$`);\nconst REG_TYPE_DIM_PCT = new RegExp(`^(${NUM})([a-z]+|%)$`);\nconst REG_TYPE_PCT = new RegExp(`^(${NUM})%$`);\n\n/* cached results */\nexport const cachedResults = new LRUCache({\n max: 4096\n});\n\n/**\n * calclator\n */\nexport class Calculator {\n /* private */\n // number\n #hasNum;\n #numSum;\n #numMul;\n // percentage\n #hasPct;\n #pctSum;\n #pctMul;\n // dimension\n #hasDim;\n #dimSum;\n #dimSub;\n #dimMul;\n #dimDiv;\n // et cetra\n #hasEtc;\n #etcSum;\n #etcSub;\n #etcMul;\n #etcDiv;\n\n /**\n * constructor\n */\n constructor() {\n // number\n this.#hasNum = false;\n this.#numSum = [];\n this.#numMul = [];\n // percentage\n this.#hasPct = false;\n this.#pctSum = [];\n this.#pctMul = [];\n // dimension\n this.#hasDim = false;\n this.#dimSum = [];\n this.#dimSub = [];\n this.#dimMul = [];\n this.#dimDiv = [];\n // et cetra\n this.#hasEtc = false;\n this.#etcSum = [];\n this.#etcSub = [];\n this.#etcMul = [];\n this.#etcDiv = [];\n }\n\n get hasNum() {\n return this.#hasNum;\n }\n\n set hasNum(value) {\n this.#hasNum = !!value;\n }\n\n get numSum() {\n return this.#numSum;\n }\n\n get numMul() {\n return this.#numMul;\n }\n\n get hasPct() {\n return this.#hasPct;\n }\n\n set hasPct(value) {\n this.#hasPct = !!value;\n }\n\n get pctSum() {\n return this.#pctSum;\n }\n\n get pctMul() {\n return this.#pctMul;\n }\n\n get hasDim() {\n return this.#hasDim;\n }\n\n set hasDim(value) {\n this.#hasDim = !!value;\n }\n\n get dimSum() {\n return this.#dimSum;\n }\n\n get dimSub() {\n return this.#dimSub;\n }\n\n get dimMul() {\n return this.#dimMul;\n }\n\n get dimDiv() {\n return this.#dimDiv;\n }\n\n get hasEtc() {\n return this.#hasEtc;\n }\n\n set hasEtc(value) {\n this.#hasEtc = !!value;\n }\n\n get etcSum() {\n return this.#etcSum;\n }\n\n get etcSub() {\n return this.#etcSub;\n }\n\n get etcMul() {\n return this.#etcMul;\n }\n\n get etcDiv() {\n return this.#etcDiv;\n }\n\n /**\n * clear values\n * @returns {void}\n */\n clear() {\n // number\n this.#hasNum = false;\n this.#numSum = [];\n this.#numMul = [];\n // percentage\n this.#hasPct = false;\n this.#pctSum = [];\n this.#pctMul = [];\n // dimension\n this.#hasDim = false;\n this.#dimSum = [];\n this.#dimSub = [];\n this.#dimMul = [];\n this.#dimDiv = [];\n // et cetra\n this.#hasEtc = false;\n this.#etcSum = [];\n this.#etcSub = [];\n this.#etcMul = [];\n this.#etcDiv = [];\n }\n\n /**\n * sort values\n * @param {Array} values - values\n * @returns {Array} - sorted values\n */\n sort(values = []) {\n const arr = [...values];\n if (arr.length > 1) {\n arr.sort((a, b) => {\n let res;\n if (REG_TYPE_DIM_PCT.test(a) && REG_TYPE_DIM_PCT.test(b)) {\n const [, valA, unitA] = REG_TYPE_DIM_PCT.exec(a);\n const [, valB, unitB] = REG_TYPE_DIM_PCT.exec(b);\n if (unitA === unitB) {\n if (Number(valA) === Number(valB)) {\n res = 0;\n } else if (Number(valA) > Number(valB)) {\n res = 1;\n } else {\n res = -1;\n }\n } else if (unitA > unitB) {\n res = 1;\n } else {\n res = -1;\n }\n } else {\n if (a === b) {\n res = 0;\n } else if (a > b) {\n res = 1;\n } else {\n res = -1;\n }\n }\n return res;\n });\n }\n return arr;\n }\n\n /**\n * multiply values\n * @returns {?string} - resolved value\n */\n multiply() {\n const value = [];\n let num;\n if (this.#hasNum) {\n num = 1;\n for (const i of this.#numMul) {\n num *= i;\n if (num === 0 || !Number.isFinite(num) || Number.isNaN(num)) {\n break;\n }\n }\n if (!this.#hasPct && !this.#hasDim && !this.hasEtc) {\n value.push(num);\n }\n }\n if (this.#hasPct) {\n if (!this.#hasNum) {\n num = 1;\n }\n for (const i of this.#pctMul) {\n num *= i;\n if (num === 0 || !Number.isFinite(num) || Number.isNaN(num)) {\n break;\n }\n }\n if (Number.isFinite(num)) {\n num = `${num}%`;\n }\n if (!this.#hasDim && !this.hasEtc) {\n value.push(num);\n }\n }\n if (this.#hasDim) {\n let dim, mul, div;\n if (this.#dimMul.length) {\n if (this.#dimMul.length === 1) {\n [mul] = this.#dimMul;\n } else {\n mul = `${this.sort(this.#dimMul).join(' * ')}`;\n }\n }\n if (this.#dimDiv.length) {\n if (this.#dimDiv.length === 1) {\n [div] = this.#dimDiv;\n } else {\n div = `${this.sort(this.#dimDiv).join(' * ')}`;\n }\n }\n if (Number.isFinite(num)) {\n if (mul) {\n if (div) {\n if (div.includes('*')) {\n dim = calc(`calc(${num} * ${mul} / (${div}))`, {\n toCanonicalUnits: true\n });\n } else {\n dim = calc(`calc(${num} * ${mul} / ${div})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n dim = calc(`calc(${num} * ${mul})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n if (div.includes('*')) {\n dim = calc(`calc(${num} / (${div}))`, {\n toCanonicalUnits: true\n });\n } else {\n dim = calc(`calc(${num} / ${div})`, {\n toCanonicalUnits: true\n });\n }\n }\n value.push(dim.replace(/^calc/, ''));\n } else {\n if (!value.length && num !== undefined) {\n value.push(num);\n }\n if (mul) {\n if (div) {\n if (div.includes('*')) {\n dim = calc(`calc(${mul} / (${div}))`, {\n toCanonicalUnits: true\n });\n } else {\n dim = calc(`calc(${mul} / ${div})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n dim = calc(`calc(${mul})`, {\n toCanonicalUnits: true\n });\n }\n if (value.length) {\n value.push('*', dim.replace(/^calc/, ''));\n } else {\n value.push(dim.replace(/^calc/, ''));\n }\n } else {\n dim = calc(`calc(${div})`, {\n toCanonicalUnits: true\n });\n if (value.length) {\n value.push('/', dim.replace(/^calc/, ''));\n } else {\n value.push('1', '/', dim.replace(/^calc/, ''));\n }\n }\n }\n }\n if (this.#hasEtc) {\n if (this.#etcMul.length) {\n if (!value.length && num !== undefined) {\n value.push(num);\n }\n const mul = this.sort(this.#etcMul).join(' * ');\n if (value.length) {\n value.push(`* ${mul}`);\n } else {\n value.push(`${mul}`);\n }\n }\n if (this.#etcDiv.length) {\n const div = this.sort(this.#etcDiv).join(' * ');\n if (div.includes('*')) {\n if (value.length) {\n value.push(`/ (${div})`);\n } else {\n value.push(`1 / (${div})`);\n }\n } else if (value.length) {\n value.push(`/ ${div}`);\n } else {\n value.push(`1 / ${div}`);\n }\n }\n }\n return value.join(' ') || null;\n }\n\n /**\n * sum values\n * @returns {?string} - resolved value\n */\n sum() {\n const value = [];\n if (this.#hasNum) {\n let num = 0;\n for (const i of this.#numSum) {\n num += i;\n if (!Number.isFinite(num) || Number.isNaN(num)) {\n break;\n }\n }\n value.push(num);\n }\n if (this.#hasPct) {\n let num = 0;\n for (const i of this.#pctSum) {\n num += i;\n if (!Number.isFinite(num) || Number.isNaN(num)) {\n break;\n }\n }\n if (Number.isFinite(num)) {\n num = `${num}%`;\n }\n if (value.length) {\n value.push(`+ ${num}`);\n } else {\n value.push(num);\n }\n }\n if (this.#hasDim) {\n let dim, sum, sub;\n if (this.#dimSum.length) {\n sum = this.#dimSum.join(' + ');\n }\n if (this.#dimSub.length) {\n sub = this.#dimSub.join(' + ');\n }\n if (sum) {\n if (sub) {\n if (sub.includes('-')) {\n dim = calc(`calc(${sum} - (${sub}))`, {\n toCanonicalUnits: true\n });\n } else {\n dim = calc(`calc(${sum} - ${sub})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n dim = calc(`calc(${sum})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n dim = calc(`calc(-1 * (${sub}))`, {\n toCanonicalUnits: true\n });\n }\n if (value.length) {\n value.push('+', dim.replace(/^calc/, ''));\n } else {\n value.push(dim.replace(/^calc/, ''));\n }\n }\n if (this.#hasEtc) {\n if (this.#etcSum.length) {\n const sum = this.sort(this.#etcSum).map(item => {\n let res;\n if (REG_OPERATOR.test(item) &&\n !item.startsWith('(') && !item.endsWith(')')) {\n res = `(${item})`;\n } else {\n res = item;\n }\n return res;\n }).join(' + ');\n if (value.length) {\n if (this.#etcSum.length > 1) {\n value.push(`+ (${sum})`);\n } else {\n value.push(`+ ${sum}`);\n }\n } else {\n value.push(`${sum}`);\n }\n }\n if (this.#etcSub.length) {\n const sub = this.sort(this.#etcSub).map(item => {\n let res;\n if (REG_OPERATOR.test(item) &&\n !item.startsWith('(') && !item.endsWith(')')) {\n res = `(${item})`;\n } else {\n res = item;\n }\n return res;\n }).join(' + ');\n if (value.length) {\n if (this.#etcSub.length > 1) {\n value.push(`- (${sub})`);\n } else {\n value.push(`- ${sub}`);\n }\n } else if (this.#etcSub.length > 1) {\n value.push(`-1 * (${sub})`);\n } else {\n value.push(`-1 * ${sub}`);\n }\n }\n }\n return value.join(' ') || null;\n }\n}\n\n/**\n * sort calc values\n * @param {Array} values - values\n * @param {boolean} finalize - finalize\n * @returns {string} - sorted value\n */\nexport const sortCalcValues = (values = [], finalize = false) => {\n if (values.length < 3) {\n return null;\n }\n const start = values.shift();\n const end = values.pop();\n if (values.length === 1) {\n const [value] = values;\n return `${start}${value}${end}`;\n }\n const sortedValues = [];\n const cal = new Calculator();\n let operator;\n for (let i = 0, l = values.length; i < l; i++) {\n const value = values[i];\n if (value === '*' || value === '/') {\n operator = value;\n } else if (value === '+' || value === '-') {\n const sortedValue = cal.multiply();\n sortedValues.push(sortedValue, value);\n cal.clear();\n operator = null;\n } else {\n switch (operator) {\n case '/': {\n if (Number.isFinite(value * 1)) {\n cal.hasNum = true;\n cal.numMul.push(1 / value);\n } else if (REG_TYPE_PCT.test(value)) {\n const [, val] = REG_TYPE_PCT.exec(value);\n cal.hasPct = true;\n cal.pctMul.push(MAX_PCT * MAX_PCT / Number(val));\n } else if (REG_TYPE_DIM.test(value)) {\n cal.hasDim = true;\n cal.dimDiv.push(value);\n } else {\n cal.hasEtc = true;\n cal.etcDiv.push(value);\n }\n break;\n }\n case '*':\n default: {\n if (Number.isFinite(value * 1)) {\n cal.hasNum = true;\n cal.numMul.push(value * 1);\n } else if (REG_TYPE_PCT.test(value)) {\n const [, val] = REG_TYPE_PCT.exec(value);\n cal.hasPct = true;\n cal.pctMul.push(Number(val));\n } else if (REG_TYPE_DIM.test(value)) {\n cal.hasDim = true;\n cal.dimMul.push(value);\n } else {\n cal.hasEtc = true;\n cal.etcMul.push(value);\n }\n }\n }\n if (i === l - 1) {\n const sortedValue = cal.multiply();\n sortedValues.push(sortedValue);\n cal.clear();\n operator = null;\n }\n }\n }\n let resolvedValue;\n if (finalize && (sortedValues.includes('+') || sortedValues.includes('-'))) {\n const finalizedValues = [];\n cal.clear();\n operator = null;\n for (let i = 0, l = sortedValues.length; i < l; i++) {\n const value = sortedValues[i];\n if (value === '+' || value === '-') {\n operator = value;\n } else {\n switch (operator) {\n case '-': {\n if (Number.isFinite(value * 1)) {\n cal.hasNum = true;\n cal.numSum.push(-1 * value);\n } else if (REG_TYPE_PCT.test(value)) {\n const [, val] = REG_TYPE_PCT.exec(value);\n cal.hasPct = true;\n cal.pctSum.push(-1 * Number(val));\n } else if (REG_TYPE_DIM.test(value)) {\n cal.hasDim = true;\n cal.dimSub.push(value);\n } else {\n cal.hasEtc = true;\n cal.etcSub.push(value);\n }\n break;\n }\n case '+':\n default: {\n if (Number.isFinite(value * 1)) {\n cal.hasNum = true;\n cal.numSum.push(value * 1);\n } else if (REG_TYPE_PCT.test(value)) {\n const [, val] = REG_TYPE_PCT.exec(value);\n cal.hasPct = true;\n cal.pctSum.push(Number(val));\n } else if (REG_TYPE_DIM.test(value)) {\n cal.hasDim = true;\n cal.dimSum.push(value);\n } else {\n cal.hasEtc = true;\n cal.etcSum.push(value);\n }\n }\n }\n if (i === l - 1) {\n const sortedValue = cal.sum();\n finalizedValues.push(sortedValue);\n cal.clear();\n operator = null;\n }\n }\n }\n resolvedValue = finalizedValues.join(' ');\n } else {\n resolvedValue = sortedValues.join(' ');\n }\n return `${start}${resolvedValue}${end}`;\n};\n\n/**\n * serialize calc\n * @param {string} value - value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {?string} - resolved value\n */\nexport const serializeCalc = (value, opt = {}) => {\n const { format } = opt;\n if (isString(value)) {\n if (!REG_START_MATH_VAR.test(value) || format !== VAL_SPEC) {\n return value;\n }\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string`);\n }\n const cacheKey = `{serializeCalc:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n const items = tokenize({ css: value }).map(token => {\n const [type, value] = token;\n let res;\n if (type !== W_SPACE && type !== COMMENT) {\n res = value;\n }\n return res;\n }).filter(v => v);\n let startIndex = items.findLastIndex(item => /\\($/.test(item));\n while (startIndex) {\n const endIndex = items.findIndex((item, index) => {\n return item === ')' && index > startIndex;\n });\n const slicedValues = items.slice(startIndex, endIndex + 1);\n let serializedValue = sortCalcValues(slicedValues);\n if (REG_START_MATH_VAR.test(serializedValue)) {\n serializedValue = calc(serializedValue, {\n toCanonicalUnits: true\n });\n }\n items.splice(startIndex, endIndex - startIndex + 1, serializedValue);\n startIndex = items.findLastIndex(item => /\\($/.test(item));\n }\n const serializedCalc = sortCalcValues(items, true);\n if (cacheKey) {\n cachedResults.set(cacheKey, serializedCalc);\n }\n return serializedCalc;\n};\n\n/**\n * resolve dimension\n * @param {Array} token - token\n * @param {object} [opt] - options\n * @param {object} [opt.dimension] - dimension\n * @returns {?string} - resolved value\n */\nexport const resolveDimension = (token, opt = {}) => {\n if (!Array.isArray(token)) {\n throw new TypeError(`${token} is not an array.`);\n }\n const [, value,,, detail = {}] = token;\n const { unit, value: relativeValue } = detail;\n const { dimension = {} } = opt;\n if (unit === 'px') {\n return value;\n }\n let res;\n if (unit && Number.isFinite(relativeValue)) {\n let pixelValue;\n if (Object.hasOwnProperty.call(dimension, unit)) {\n pixelValue = dimension[unit];\n } else if (typeof dimension.callback === 'function') {\n pixelValue = dimension.callback(unit);\n }\n if (Number.isFinite(pixelValue)) {\n res = `${relativeValue * pixelValue}px`;\n }\n }\n return res ?? null;\n};\n\n/**\n * parse tokens\n * @param {Array.} tokens - tokens\n * @param {object} [opt] - options\n * @returns {Array.} - parsed tokens\n */\nexport const parseTokens = (tokens, opt = {}) => {\n if (!Array.isArray(tokens)) {\n throw new TypeError(`${tokens} is not an array.`);\n }\n const { format } = opt;\n const mathFunc = new Set();\n let nest = 0;\n const res = [];\n while (tokens.length) {\n const token = tokens.shift();\n if (!Array.isArray(token)) {\n throw new TypeError(`${token} is not an array.`);\n }\n const [type, value] = token;\n switch (type) {\n case DIM: {\n let resolvedValue;\n if (format === VAL_SPEC && !mathFunc.has(nest)) {\n resolvedValue = value;\n } else {\n resolvedValue = resolveDimension(token, opt);\n if (!resolvedValue) {\n resolvedValue = value;\n }\n }\n res.push(resolvedValue);\n break;\n }\n case FUNC:\n case PAREN_OPEN: {\n res.push(value);\n nest++;\n if (REG_START_MATH.test(value)) {\n mathFunc.add(nest);\n }\n break;\n }\n case PAREN_CLOSE: {\n if (res.length) {\n const lastValue = res[res.length - 1];\n if (lastValue === ' ') {\n res.splice(-1, 1, value);\n } else {\n res.push(value);\n }\n } else {\n res.push(value);\n }\n if (mathFunc.has(nest)) {\n mathFunc.delete(nest);\n }\n nest--;\n break;\n }\n case W_SPACE: {\n if (res.length) {\n const lastValue = res[res.length - 1];\n if (!lastValue.endsWith('(') && lastValue !== ' ') {\n res.push(value);\n }\n }\n break;\n }\n default: {\n if (type !== COMMENT && type !== EOF) {\n res.push(value);\n }\n }\n }\n }\n return res;\n};\n\n/**\n * resolve CSS calc()\n * @param {string} value - color value including calc()\n * @param {object} [opt] - options\n * @param {object} [opt.dimension] - dimension\n * @param {string} [opt.format] - output format\n * @returns {?string} - value\n */\nexport const cssCalc = (value, opt = {}) => {\n const { format, dimension } = opt;\n if (isString(value)) {\n if (REG_FN_VAR.test(value)) {\n if (format === VAL_SPEC) {\n return value;\n // var() must be resolved before cssCalc()\n } else {\n throw new SyntaxError(`Unexpected token ${FN_VAR} found.`);\n }\n } else if (!REG_FN_MATH_CALC.test(value)) {\n return value;\n }\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string`);\n }\n let cacheKey;\n if (typeof dimension?.callback !== 'function') {\n cacheKey = `{cssCalc:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n let resolvedValue;\n if (dimension) {\n const tokens = tokenize({ css: value });\n const values = parseTokens(tokens, opt);\n resolvedValue = calc(values.join(''), {\n toCanonicalUnits: true\n });\n } else {\n resolvedValue = calc(value, {\n toCanonicalUnits: true\n });\n }\n if (REG_START_MATH_VAR.test(value)) {\n if (REG_TYPE_DIM_PCT.test(resolvedValue)) {\n const [, val, unit] = REG_TYPE_DIM_PCT.exec(resolvedValue);\n resolvedValue = `${roundToPrecision(Number(val), HEX)}${unit}`;\n }\n // wrap with `calc()`\n if (resolvedValue && !REG_START_MATH_VAR.test(resolvedValue) &&\n format === VAL_SPEC) {\n resolvedValue = `calc(${resolvedValue})`;\n }\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, resolvedValue);\n }\n return resolvedValue;\n};\n", "/**\n * css-var.js\n */\n\nimport { TokenType, tokenize } from '@csstools/css-tokenizer';\nimport { LRUCache } from 'lru-cache';\nimport { isString } from './common.js';\nimport { cssCalc } from './css-calc.js';\nimport { isColor, valueToJsonString } from './util.js';\n\n/* constants */\nimport { FN_VAR, SYN_FN_MATH_CALC, SYN_FN_VAR, VAL_SPEC } from './constant.js';\nconst {\n CloseParen: PAREN_CLOSE, Comment: COMMENT, EOF, Ident: IDENT,\n Whitespace: W_SPACE\n} = TokenType;\n\n/* regexp */\nconst REG_FN_MATH_CALC = new RegExp(SYN_FN_MATH_CALC);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\n\n/* cached results */\nexport const cachedResults = new LRUCache({\n max: 4096\n});\n\n/**\n * resolve custom property\n * @param {Array.} tokens - tokens\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @returns {Array.} - [tokens, resolvedValue]\n */\nexport function resolveCustomProperty(tokens, opt = {}) {\n if (!Array.isArray(tokens)) {\n throw new TypeError(`${tokens} is not an array.`);\n }\n const { customProperty = {} } = opt;\n const items = [];\n while (tokens.length) {\n const token = tokens.shift();\n if (!Array.isArray(token)) {\n throw new TypeError(`${token} is not an array.`);\n }\n const [type, value] = token;\n // end of var()\n if (type === PAREN_CLOSE) {\n break;\n }\n // nested var()\n if (value === FN_VAR) {\n const [restTokens, item] = resolveCustomProperty(tokens, opt);\n tokens = restTokens;\n if (item) {\n items.push(item);\n }\n } else if (type === IDENT) {\n if (value.startsWith('--')) {\n if (Object.hasOwnProperty.call(customProperty, value)) {\n items.push(customProperty[value]);\n } else if (typeof customProperty.callback === 'function') {\n const item = customProperty.callback(value);\n if (item) {\n items.push(item);\n }\n }\n } else if (value) {\n items.push(value);\n }\n }\n }\n let resolveAsColor;\n if (items.length > 1) {\n const lastValue = items[items.length - 1];\n resolveAsColor = isColor(lastValue);\n }\n let resolvedValue;\n for (let item of items) {\n item = item.trim();\n if (REG_FN_VAR.test(item)) {\n // recurse cssVar()\n item = cssVar(item, opt);\n if (item) {\n if (resolveAsColor) {\n if (isColor(item)) {\n resolvedValue = item;\n }\n } else {\n resolvedValue = item;\n }\n }\n } else if (REG_FN_MATH_CALC.test(item)) {\n item = cssCalc(item, opt);\n if (resolveAsColor) {\n if (isColor(item)) {\n resolvedValue = item;\n }\n } else {\n resolvedValue = item;\n }\n } else if (item &&\n !/^(?:inherit|initial|revert(?:-layer)?|unset)$/.test(item)) {\n if (resolveAsColor) {\n if (isColor(item)) {\n resolvedValue = item;\n }\n } else {\n resolvedValue = item;\n }\n }\n if (resolvedValue) {\n break;\n }\n }\n return [tokens, resolvedValue];\n}\n\n/**\n * parse tokens\n * @param {Array.} tokens - tokens\n * @param {object} [opt] - options\n * @returns {?Array.} - parsed tokens\n */\nexport function parseTokens(tokens, opt = {}) {\n const res = [];\n while (tokens.length) {\n const token = tokens.shift();\n const [type, value] = token;\n if (value === FN_VAR) {\n const [restTokens, resolvedValue] = resolveCustomProperty(tokens, opt);\n if (!resolvedValue) {\n return null;\n }\n tokens = restTokens;\n res.push(resolvedValue);\n } else {\n switch (type) {\n case PAREN_CLOSE: {\n if (res.length) {\n const lastValue = res[res.length - 1];\n if (lastValue === ' ') {\n res.splice(-1, 1, value);\n } else {\n res.push(value);\n }\n } else {\n res.push(value);\n }\n break;\n }\n case W_SPACE: {\n if (res.length) {\n const lastValue = res[res.length - 1];\n if (!lastValue.endsWith('(') && lastValue !== ' ') {\n res.push(value);\n }\n }\n break;\n }\n default: {\n if (type !== COMMENT && type !== EOF) {\n res.push(value);\n }\n }\n }\n }\n }\n return res;\n}\n\n/**\n * resolve CSS var()\n * @param {string} value - color value including var()\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @returns {?string} - value\n */\nexport function cssVar(value, opt = {}) {\n const { customProperty, format } = opt;\n if (isString(value)) {\n if (!REG_FN_VAR.test(value) || format === VAL_SPEC) {\n return value;\n }\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{cssVar:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n const tokens = tokenize({ css: value });\n const values = parseTokens(tokens, opt);\n if (Array.isArray(values)) {\n let color = values.join('');\n if (REG_FN_MATH_CALC.test(color)) {\n color = cssCalc(color, opt);\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, color);\n }\n return color;\n } else {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n}\n", "function multiplyMatrices(t,n){return[t[0]*n[0]+t[1]*n[1]+t[2]*n[2],t[3]*n[0]+t[4]*n[1]+t[5]*n[2],t[6]*n[0]+t[7]*n[1]+t[8]*n[2]]}const t=[.955473421488075,-.02309845494876471,.06325924320057072,-.0283697093338637,1.0099953980813041,.021041441191917323,.012314014864481998,-.020507649298898964,1.330365926242124];\n/**\n * Bradford chromatic adaptation from D50 to D65\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function D50_to_D65(n){return multiplyMatrices(t,n)}const n=[1.0479297925449969,.022946870601609652,-.05019226628920524,.02962780877005599,.9904344267538799,-.017073799063418826,-.009243040646204504,.015055191490298152,.7518742814281371];\n/**\n * Bradford chromatic adaptation from D65 to D50\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\n */function D65_to_D50(t){return multiplyMatrices(n,t)}\n/**\n * @param {number} hue - Hue as degrees 0..360\n * @param {number} sat - Saturation as percentage 0..100\n * @param {number} light - Lightness as percentage 0..100\n * @return {number[]} Array of sRGB components; in-gamut colors in range [0..1]\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hslToRgb.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hslToRgb.js\n */function HSL_to_sRGB(t){let n=t[0]%360;const _=t[1]/100,o=t[2]/100;return n<0&&(n+=360),[HSL_to_sRGB_channel(0,n,_,o),HSL_to_sRGB_channel(8,n,_,o),HSL_to_sRGB_channel(4,n,_,o)]}function HSL_to_sRGB_channel(t,n,_,o){const e=(t+n/30)%12;return o-_*Math.min(o,1-o)*Math.max(-1,Math.min(e-3,9-e,1))}\n/**\n * @param {number} hue - Hue as degrees 0..360\n * @param {number} white - Whiteness as percentage 0..100\n * @param {number} black - Blackness as percentage 0..100\n * @return {number[]} Array of RGB components 0..1\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hwbToRgb.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hwbToRgb.js\n */function HWB_to_sRGB(t){const n=t[0],_=t[1]/100,o=t[2]/100;if(_+o>=1){const t=_/(_+o);return[t,t,t]}const e=HSL_to_sRGB([n,100,50]),a=1-_-o;return[e[0]*a+_,e[1]*a+_,e[2]*a+_]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function LCH_to_Lab(t){const n=t[2]*Math.PI/180;return[t[0],t[1]*Math.cos(n),t[1]*Math.sin(n)]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function Lab_to_LCH(t){const n=180*Math.atan2(t[2],t[1])/Math.PI;return[t[0],Math.sqrt(Math.pow(t[1],2)+Math.pow(t[2],2)),n>=0?n:n+360]}const _=[.3457/.3585,1,.2958/.3585];\n/**\n * Convert Lab to D50-adapted XYZ\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */function Lab_to_XYZ(t){const n=24389/27,o=216/24389,e=(t[0]+16)/116,a=t[1]/500+e,r=e-t[2]/200;return[(Math.pow(a,3)>o?Math.pow(a,3):(116*a-16)/n)*_[0],(t[0]>8?Math.pow((t[0]+16)/116,3):t[0]/n)*_[1],(Math.pow(r,3)>o?Math.pow(r,3):(116*r-16)/n)*_[2]]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js\n */function OKLCH_to_OKLab(t){const n=t[2]*Math.PI/180;return[t[0],t[1]*Math.cos(n),t[1]*Math.sin(n)]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js\n */function OKLab_to_OKLCH(t){const n=180*Math.atan2(t[2],t[1])/Math.PI;return[t[0],Math.sqrt(t[1]**2+t[2]**2),n>=0?n:n+360]}const o=[1.2268798758459243,-.5578149944602171,.2813910456659647,-.0405757452148008,1.112286803280317,-.0717110580655164,-.0763729366746601,-.4214933324022432,1.5869240198367816],e=[1,.3963377773761749,.2158037573099136,1,-.1055613458156586,-.0638541728258133,1,-.0894841775298119,-1.2914855480194092];\n/**\n * Given OKLab, convert to XYZ relative to D65\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js\n */\nfunction OKLab_to_XYZ(t){const n=multiplyMatrices(e,t);return multiplyMatrices(o,[n[0]**3,n[1]**3,n[2]**3])}\n/**\n * Assuming XYZ is relative to D50, convert to CIE Lab\n * from CIE standard, which now defines these as a rational fraction\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function XYZ_to_Lab(t){const n=compute_f(t[0]/_[0]),o=compute_f(t[1]/_[1]);return[116*o-16,500*(n-o),200*(o-compute_f(t[2]/_[2]))]}const a=216/24389,r=24389/27;function compute_f(t){return t>a?Math.cbrt(t):(r*t+16)/116}const l=[.819022437996703,.3619062600528904,-.1288737815209879,.0329836539323885,.9292868615863434,.0361446663506424,.0481771893596242,.2642395317527308,.6335478284694309],i=[.210454268309314,.7936177747023054,-.0040720430116193,1.9779985324311684,-2.42859224204858,.450593709617411,.0259040424655478,.7827717124575296,-.8086757549230774];\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n *\n * XYZ <-> LMS matrices recalculated for consistent reference white\n * @see https://github.com/w3c/csswg-drafts/issues/6642#issuecomment-943521484\n */\nfunction XYZ_to_OKLab(t){const n=multiplyMatrices(l,t);return multiplyMatrices(i,[Math.cbrt(n[0]),Math.cbrt(n[1]),Math.cbrt(n[2])])}const c=[30757411/17917100,-6372589/17917100,-4539589/17917100,-.666684351832489,1.616481236634939,467509/29648200,792561/44930125,-1921689/44930125,.942103121235474];\n/**\n * Convert XYZ to linear-light rec2020\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */const u=[446124/178915,-333277/357830,-72051/178915,-14852/17905,63121/35810,423/17905,11844/330415,-50337/660830,316169/330415];\n/**\n * Convert XYZ to linear-light P3\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function XYZ_to_lin_P3(t){return multiplyMatrices(u,t)}const s=[1.3457868816471583,-.25557208737979464,-.05110186497554526,-.5446307051249019,1.5082477428451468,.02052744743642139,0,0,1.2119675456389452];\n/**\n * Convert D50 XYZ to linear-light prophoto-rgb\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */const h=[1829569/896150,-506331/896150,-308931/896150,-851781/878810,1648619/878810,36519/878810,16779/1248040,-147721/1248040,1266979/1248040];\n/**\n * Convert XYZ to linear-light a98-rgb\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */const m=[12831/3959,-329/214,-1974/3959,-851781/878810,1648619/878810,36519/878810,705/12673,-2585/12673,705/667];\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function XYZ_to_lin_sRGB(t){return multiplyMatrices(m,t)}\n/**\n * Convert an array of linear-light rec2020 RGB in the range 0.0-1.0\n * to gamma corrected form ITU-R BT.2020-2 p.4\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */const D=1.09929682680944,g=.018053968510807;function gam_2020_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _>g?n*(D*Math.pow(_,.45)-(D-1)):4.5*t}\n/**\n * Convert an array of linear-light sRGB values in the range 0.0-1.0 to gamma corrected form\n * Extended transfer function:\n * For negative values, linear portion extends on reflection\n * of axis, then uses reflected pow below that\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://en.wikipedia.org/wiki/SRGB\n */function gam_sRGB(t){return[gam_sRGB_channel(t[0]),gam_sRGB_channel(t[1]),gam_sRGB_channel(t[2])]}function gam_sRGB_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _>.0031308?n*(1.055*Math.pow(_,1/2.4)-.055):12.92*t}\n/**\n * Convert an array of linear-light display-p3 RGB in the range 0.0-1.0\n * to gamma corrected form\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function gam_P3(t){return gam_sRGB(t)}\n/**\n * Convert an array of linear-light prophoto-rgb in the range 0.0-1.0\n * to gamma corrected form.\n * Transfer curve is gamma 1.8 with a small linear portion.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */const b=1/512;function gam_ProPhoto_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _>=b?n*Math.pow(_,1/1.8):16*t}\n/**\n * Convert an array of linear-light a98-rgb in the range 0.0-1.0\n * to gamma corrected form. Negative values are also now accepted\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function gam_a98rgb_channel(t){const n=t<0?-1:1,_=Math.abs(t);return n*Math.pow(_,256/563)}\n/**\n * Convert an array of rec2020 RGB values in the range 0.0 - 1.0\n * to linear light (un-companded) form.\n * ITU-R BT.2020-2 p.4\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */const f=1.09929682680944,X=.018053968510807;function lin_2020_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _<4.5*X?t/4.5:n*Math.pow((_+f-1)/f,1/.45)}const Y=[63426534/99577255,20160776/139408157,47086771/278816314,26158966/99577255,.677998071518871,8267143/139408157,0,19567812/697040785,1.0609850577107909];\n/**\n * Convert an array of linear-light rec2020 values to CIE XYZ\n * using D65 (no chromatic adaptation)\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */\n/**\n * Convert an array of of sRGB values where in-gamut values are in the range\n * [0 - 1] to linear light (un-companded) form.\n * Extended transfer function:\n * For negative values, linear portion is extended on reflection of axis,\n * then reflected power function is used.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://en.wikipedia.org/wiki/SRGB\n */\nfunction lin_sRGB(t){return[lin_sRGB_channel(t[0]),lin_sRGB_channel(t[1]),lin_sRGB_channel(t[2])]}function lin_sRGB_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _<=.04045?t/12.92:n*Math.pow((_+.055)/1.055,2.4)}\n/**\n * Convert an array of display-p3 RGB values in the range 0.0 - 1.0\n * to linear light (un-companded) form.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function lin_P3(t){return lin_sRGB(t)}const Z=[608311/1250200,189793/714400,198249/1000160,35783/156275,247089/357200,198249/2500400,0,32229/714400,5220557/5000800];\n/**\n * Convert an array of linear-light display-p3 values to CIE XYZ\n * using D65 (no chromatic adaptation)\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */function lin_P3_to_XYZ(t){return multiplyMatrices(Z,t)}\n/**\n * Convert an array of prophoto-rgb values where in-gamut Colors are in the\n * range [0.0 - 1.0] to linear light (un-companded) form. Transfer curve is\n * gamma 1.8 with a small linear portion. Extended transfer function\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */const M=16/512;function lin_ProPhoto_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _<=M?t/16:n*Math.pow(_,1.8)}const p=[.7977666449006423,.13518129740053308,.0313477341283922,.2880748288194013,.711835234241873,8993693872564e-17,0,0,.8251046025104602];\n/**\n * Convert an array of linear-light prophoto-rgb values to CIE D50 XYZ.\n * Matrix cannot be expressed in rational form, but is calculated to 64 bit accuracy.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see see https://github.com/w3c/csswg-drafts/issues/7675\n */function lin_a98rgb_channel(t){const n=t<0?-1:1,_=Math.abs(t);return n*Math.pow(_,563/256)}const d=[573536/994567,263643/1420810,187206/994567,591459/1989134,6239551/9945670,374412/4972835,53769/1989134,351524/4972835,4929758/4972835];\n/**\n * Convert an array of linear-light a98-rgb values to CIE XYZ\n * http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n * has greater numerical precision than section 4.3.5.3 of\n * https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n * but the values below were calculated from first principles\n * from the chromaticity coordinates of R G B W\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n * @see https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/matrixmaker.html\n */const L=[506752/1228815,87881/245763,12673/70218,87098/409605,175762/245763,12673/175545,7918/409605,87881/737289,1001167/1053270];\n/**\n * Convert an array of linear-light sRGB values to CIE XYZ\n * using sRGB's own white, D65 (no chromatic adaptation)\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */function lin_sRGB_to_XYZ(t){return multiplyMatrices(L,t)}\n/**\n * Convert an array of gamma-corrected sRGB values in the 0.0 to 1.0 range to HSL.\n *\n * @param {Color} RGB [r, g, b]\n * - Red component 0..1\n * - Green component 0..1\n * - Blue component 0..1\n * @return {number[]} Array of HSL values: Hue as degrees 0..360, Saturation and Lightness as percentages 0..100\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/utilities.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n *\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/better-rgbToHsl.js\n */function sRGB_to_HSL(t){const n=t[0],_=t[1],o=t[2],e=Math.max(n,_,o),a=Math.min(n,_,o),r=(a+e)/2,l=e-a;let i=NaN,c=0;if(0!==Math.round(1e5*l)){const t=Math.round(1e5*r);switch(c=0===t||1e5===t?0:(e-r)/Math.min(r,1-r),e){case n:i=(_-o)/l+(_=360&&(i-=360),[i,100*c,100*r]}function sRGB_to_Hue(t){const n=t[0],_=t[1],o=t[2],e=Math.max(n,_,o);let a=NaN;const r=e-Math.min(n,_,o);if(0!==r){switch(e){case n:a=(_-o)/r+(_=360&&(a-=360),a}function sRGB_to_XYZ_D50(t){let n=t;return n=lin_sRGB(n),n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_sRGB(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n),n=gam_sRGB(n),n}function HSL_to_XYZ_D50(t){let n=t;return n=HSL_to_sRGB(n),n=lin_sRGB(n),n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_HSL(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n),n=gam_sRGB(n),n=sRGB_to_HSL(n),n}function HWB_to_XYZ_D50(t){let n=t;return n=HWB_to_sRGB(n),n=lin_sRGB(n),n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_HWB(t){let n=t;n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n);const _=gam_sRGB(n),o=Math.min(_[0],_[1],_[2]),e=1-Math.max(_[0],_[1],_[2]);return[sRGB_to_Hue(_),100*o,100*e]}function Lab_to_XYZ_D50(t){let n=t;return n=Lab_to_XYZ(n),n}function XYZ_D50_to_Lab(t){let n=t;return n=XYZ_to_Lab(n),n}function LCH_to_XYZ_D50(t){let n=t;return n=LCH_to_Lab(n),n=Lab_to_XYZ(n),n}function XYZ_D50_to_LCH(t){let n=t;return n=XYZ_to_Lab(n),n=Lab_to_LCH(n),n}function OKLab_to_XYZ_D50(t){let n=t;return n=OKLab_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_OKLab(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_OKLab(n),n}function OKLCH_to_XYZ_D50(t){let n=t;return n=OKLCH_to_OKLab(n),n=OKLab_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_OKLCH(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_OKLab(n),n=OKLab_to_OKLCH(n),n}function lin_sRGB_to_XYZ_D50(t){let n=t;return n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_lin_sRGB(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n),n}function a98_RGB_to_XYZ_D50(t){let n=t;\n/**\n * Convert an array of a98-rgb values in the range 0.0 - 1.0\n * to linear light (un-companded) form. Negative values are also now accepted\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n */\nvar _;return n=[lin_a98rgb_channel((_=n)[0]),lin_a98rgb_channel(_[1]),lin_a98rgb_channel(_[2])],n=multiplyMatrices(d,n),n=D65_to_D50(n),n}function XYZ_D50_to_a98_RGB(t){let n=t;var _;return n=D50_to_D65(n),n=multiplyMatrices(h,n),n=[gam_a98rgb_channel((_=n)[0]),gam_a98rgb_channel(_[1]),gam_a98rgb_channel(_[2])],n}function P3_to_XYZ_D50(t){let n=t;return n=lin_P3(n),n=lin_P3_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_P3(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_P3(n),n=gam_P3(n),n}function rec_2020_to_XYZ_D50(t){let n=t;var _;return n=[lin_2020_channel((_=n)[0]),lin_2020_channel(_[1]),lin_2020_channel(_[2])],n=multiplyMatrices(Y,n),n=D65_to_D50(n),n}function XYZ_D50_to_rec_2020(t){let n=t;var _;return n=D50_to_D65(n),n=multiplyMatrices(c,n),n=[gam_2020_channel((_=n)[0]),gam_2020_channel(_[1]),gam_2020_channel(_[2])],n}function ProPhoto_RGB_to_XYZ_D50(t){let n=t;var _;return n=[lin_ProPhoto_channel((_=n)[0]),lin_ProPhoto_channel(_[1]),lin_ProPhoto_channel(_[2])],n=multiplyMatrices(p,n),n}function XYZ_D50_to_ProPhoto(t){let n=t;var _;return n=multiplyMatrices(s,n),n=[gam_ProPhoto_channel((_=n)[0]),gam_ProPhoto_channel(_[1]),gam_ProPhoto_channel(_[2])],n}function XYZ_D65_to_XYZ_D50(t){let n=t;return n=D65_to_D50(n),n}function XYZ_D50_to_XYZ_D65(t){let n=t;return n=D50_to_D65(n),n}function XYZ_D50_to_XYZ_D50(t){return t}function inGamut(t){return t[0]>=-1e-4&&t[0]<=1.0001&&t[1]>=-1e-4&&t[1]<=1.0001&&t[2]>=-1e-4&&t[2]<=1.0001}function clip(t){return[t[0]<0?0:t[0]>1?1:t[0],t[1]<0?0:t[1]>1?1:t[1],t[2]<0?0:t[2]>1?1:t[2]]}\n/**\n * @description Calculate deltaE OK which is the simple root sum of squares\n * @param {number[]} reference - Array of OKLab values: L as 0..1, a and b as -1..1\n * @param {number[]} sample - Array of OKLab values: L as 0..1, a and b as -1..1\n * @return {number} How different a color sample is from reference\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js. Copyright \u00A9 2022 W3C\u00AE (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js\n */function deltaEOK(t,n){const[_,o,e]=t,[a,r,l]=n,i=_-a,c=o-r,u=e-l;return Math.sqrt(i**2+c**2+u**2)}const B=.02,G=1e-4;function mapGamut(t,n,_){const o=t;let e=clip(n(o)),a=deltaEOK(OKLCH_to_OKLab(_(e)),OKLCH_to_OKLab(o));if(aG;){const t=(r+l)/2;if(o[1]=t,i&&inGamut(n(o)))r=t;else if(e=clip(n(o)),a=deltaEOK(OKLCH_to_OKLab(_(e)),OKLCH_to_OKLab(o)),a0){const t=_(a);t[0]=o,t[2]=e,a=n(t)}const l=rayTraceBox(r,a);if(!l)break;a=l}return clip(a)}function rayTraceBox(t,n){let _=1/0,o=-1/0;const e=[0,0,0];for(let a=0;a<3;a++){const r=t[a],l=n[a]-r;e[a]=l;const i=0,c=1;if(l){const t=1/l,n=(i-r)*t,e=(c-r)*t;o=Math.max(Math.min(n,e),o),_=Math.min(Math.max(n,e),_)}else if(rc)return!1}return!(o>_||_<0)&&(o<0&&(o=_),!!isFinite(o)&&[t[0]+e[0]*o,t[1]+e[1]*o,t[2]+e[2]*o])}const R={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};function luminance(t){const[n,_,o]=t.map((t=>t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)));return.2126*n+.7152*_+.0722*o}function contrast_ratio_wcag_2_1(t,n){const _=luminance(t),o=luminance(n);return(Math.max(_,o)+.05)/(Math.min(_,o)+.05)}export{HSL_to_XYZ_D50,HWB_to_XYZ_D50,LCH_to_XYZ_D50,Lab_to_XYZ_D50,OKLCH_to_OKLab,OKLCH_to_XYZ_D50,OKLab_to_OKLCH,OKLab_to_XYZ,OKLab_to_XYZ_D50,P3_to_XYZ_D50,ProPhoto_RGB_to_XYZ_D50,XYZ_D50_to_HSL,XYZ_D50_to_HWB,XYZ_D50_to_LCH,XYZ_D50_to_Lab,XYZ_D50_to_OKLCH,XYZ_D50_to_OKLab,XYZ_D50_to_P3,XYZ_D50_to_ProPhoto,XYZ_D50_to_XYZ_D50,XYZ_D50_to_XYZ_D65,XYZ_D50_to_a98_RGB,XYZ_D50_to_lin_sRGB,XYZ_D50_to_rec_2020,XYZ_D50_to_sRGB,XYZ_D65_to_XYZ_D50,XYZ_to_OKLab,XYZ_to_lin_P3,XYZ_to_lin_sRGB,a98_RGB_to_XYZ_D50,clip,contrast_ratio_wcag_2_1,gam_P3,gam_sRGB,inGamut,lin_P3,lin_P3_to_XYZ,lin_sRGB,lin_sRGB_to_XYZ,lin_sRGB_to_XYZ_D50,mapGamut,mapGamutRayTrace,R as namedColors,rec_2020_to_XYZ_D50,sRGB_to_XYZ_D50};\n", "import{TokenType as e,NumberType as a,isTokenIdent as n,isTokenPercentage as r,isTokenNumber as o,isTokenDelim as t,isTokenNumeric as l,isTokenComma as s,isTokenDimension as u,isTokenHash as c}from\"@csstools/css-tokenizer\";import{XYZ_D65_to_XYZ_D50 as i,XYZ_D50_to_XYZ_D50 as h,OKLCH_to_XYZ_D50 as m,LCH_to_XYZ_D50 as p,OKLab_to_XYZ_D50 as N,Lab_to_XYZ_D50 as b,HWB_to_XYZ_D50 as v,HSL_to_XYZ_D50 as g,ProPhoto_RGB_to_XYZ_D50 as f,a98_RGB_to_XYZ_D50 as d,rec_2020_to_XYZ_D50 as y,P3_to_XYZ_D50 as _,lin_sRGB_to_XYZ_D50 as C,sRGB_to_XYZ_D50 as w,XYZ_D50_to_XYZ_D65 as x,XYZ_D50_to_OKLab as H,XYZ_D50_to_OKLCH as L,XYZ_D50_to_LCH as k,XYZ_D50_to_Lab as P,XYZ_D50_to_HWB as S,XYZ_D50_to_HSL as z,XYZ_D50_to_a98_RGB as D,XYZ_D50_to_ProPhoto as F,XYZ_D50_to_rec_2020 as Z,XYZ_D50_to_P3 as M,XYZ_D50_to_lin_sRGB as R,XYZ_D50_to_sRGB as B,namedColors as G,inGamut as T,clip as V,gam_sRGB as A,mapGamutRayTrace as X,OKLCH_to_OKLab as Y,OKLab_to_XYZ as K,XYZ_to_lin_sRGB as I,lin_sRGB_to_XYZ as O,XYZ_to_OKLab as E,OKLab_to_OKLCH as W,contrast_ratio_wcag_2_1 as U,gam_P3 as $,XYZ_to_lin_P3 as j,lin_P3_to_XYZ as q}from\"@csstools/color-helpers\";import{isWhitespaceNode as J,isCommentNode as Q,isTokenNode as ee,isFunctionNode as ae,TokenNode as ne,FunctionNode as re,WhitespaceNode as oe}from\"@csstools/css-parser-algorithms\";import{mathFunctionNames as te,calcFromComponentValues as le}from\"@csstools/css-calc\";var se,ue;function convertNaNToZero(e){return[Number.isNaN(e[0])?0:e[0],Number.isNaN(e[1])?0:e[1],Number.isNaN(e[2])?0:e[2]]}function colorData_to_XYZ_D50(e){switch(e.colorNotation){case se.HEX:case se.RGB:case se.sRGB:return{...e,colorNotation:se.XYZ_D50,channels:w(convertNaNToZero(e.channels))};case se.Linear_sRGB:return{...e,colorNotation:se.XYZ_D50,channels:C(convertNaNToZero(e.channels))};case se.Display_P3:return{...e,colorNotation:se.XYZ_D50,channels:_(convertNaNToZero(e.channels))};case se.Rec2020:return{...e,colorNotation:se.XYZ_D50,channels:y(convertNaNToZero(e.channels))};case se.A98_RGB:return{...e,colorNotation:se.XYZ_D50,channels:d(convertNaNToZero(e.channels))};case se.ProPhoto_RGB:return{...e,colorNotation:se.XYZ_D50,channels:f(convertNaNToZero(e.channels))};case se.HSL:return{...e,colorNotation:se.XYZ_D50,channels:g(convertNaNToZero(e.channels))};case se.HWB:return{...e,colorNotation:se.XYZ_D50,channels:v(convertNaNToZero(e.channels))};case se.Lab:return{...e,colorNotation:se.XYZ_D50,channels:b(convertNaNToZero(e.channels))};case se.OKLab:return{...e,colorNotation:se.XYZ_D50,channels:N(convertNaNToZero(e.channels))};case se.LCH:return{...e,colorNotation:se.XYZ_D50,channels:p(convertNaNToZero(e.channels))};case se.OKLCH:return{...e,colorNotation:se.XYZ_D50,channels:m(convertNaNToZero(e.channels))};case se.XYZ_D50:return{...e,colorNotation:se.XYZ_D50,channels:h(convertNaNToZero(e.channels))};case se.XYZ_D65:return{...e,colorNotation:se.XYZ_D50,channels:i(convertNaNToZero(e.channels))};default:throw new Error(\"Unsupported color notation\")}}!function(e){e.A98_RGB=\"a98-rgb\",e.Display_P3=\"display-p3\",e.HEX=\"hex\",e.HSL=\"hsl\",e.HWB=\"hwb\",e.LCH=\"lch\",e.Lab=\"lab\",e.Linear_sRGB=\"srgb-linear\",e.OKLCH=\"oklch\",e.OKLab=\"oklab\",e.ProPhoto_RGB=\"prophoto-rgb\",e.RGB=\"rgb\",e.sRGB=\"srgb\",e.Rec2020=\"rec2020\",e.XYZ_D50=\"xyz-d50\",e.XYZ_D65=\"xyz-d65\"}(se||(se={})),function(e){e.ColorKeyword=\"color-keyword\",e.HasAlpha=\"has-alpha\",e.HasDimensionValues=\"has-dimension-values\",e.HasNoneKeywords=\"has-none-keywords\",e.HasNumberValues=\"has-number-values\",e.HasPercentageAlpha=\"has-percentage-alpha\",e.HasPercentageValues=\"has-percentage-values\",e.HasVariableAlpha=\"has-variable-alpha\",e.Hex=\"hex\",e.LegacyHSL=\"legacy-hsl\",e.LegacyRGB=\"legacy-rgb\",e.NamedColor=\"named-color\",e.RelativeColorSyntax=\"relative-color-syntax\",e.ColorMix=\"color-mix\",e.ContrastColor=\"contrast-color\",e.Experimental=\"experimental\"}(ue||(ue={}));const ce=new Set([se.A98_RGB,se.Display_P3,se.HEX,se.Linear_sRGB,se.ProPhoto_RGB,se.RGB,se.sRGB,se.Rec2020,se.XYZ_D50,se.XYZ_D65]);function colorDataTo(e,a){const n={...e};if(e.colorNotation!==a){const e=colorData_to_XYZ_D50(n);switch(a){case se.HEX:case se.RGB:n.colorNotation=se.RGB,n.channels=B(e.channels);break;case se.sRGB:n.colorNotation=se.sRGB,n.channels=B(e.channels);break;case se.Linear_sRGB:n.colorNotation=se.Linear_sRGB,n.channels=R(e.channels);break;case se.Display_P3:n.colorNotation=se.Display_P3,n.channels=M(e.channels);break;case se.Rec2020:n.colorNotation=se.Rec2020,n.channels=Z(e.channels);break;case se.ProPhoto_RGB:n.colorNotation=se.ProPhoto_RGB,n.channels=F(e.channels);break;case se.A98_RGB:n.colorNotation=se.A98_RGB,n.channels=D(e.channels);break;case se.HSL:n.colorNotation=se.HSL,n.channels=z(e.channels);break;case se.HWB:n.colorNotation=se.HWB,n.channels=S(e.channels);break;case se.Lab:n.colorNotation=se.Lab,n.channels=P(e.channels);break;case se.LCH:n.colorNotation=se.LCH,n.channels=k(e.channels);break;case se.OKLCH:n.colorNotation=se.OKLCH,n.channels=L(e.channels);break;case se.OKLab:n.colorNotation=se.OKLab,n.channels=H(e.channels);break;case se.XYZ_D50:n.colorNotation=se.XYZ_D50,n.channels=h(e.channels);break;case se.XYZ_D65:n.colorNotation=se.XYZ_D65,n.channels=x(e.channels);break;default:throw new Error(\"Unsupported color notation\")}}else n.channels=convertNaNToZero(e.channels);if(a===e.colorNotation)n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2]);else if(ce.has(a)&&ce.has(e.colorNotation))n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2]);else switch(a){case se.HSL:switch(e.colorNotation){case se.HWB:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0]);break;case se.Lab:case se.OKLab:n.channels=carryForwardMissingComponents(e.channels,[2],n.channels,[0]);break;case se.LCH:case se.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[2,1,0])}break;case se.HWB:switch(e.colorNotation){case se.HSL:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0]);break;case se.LCH:case se.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[2])}break;case se.Lab:case se.OKLab:switch(e.colorNotation){case se.HSL:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[2]);break;case se.Lab:case se.OKLab:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2]);break;case se.LCH:case se.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0])}break;case se.LCH:case se.OKLCH:switch(e.colorNotation){case se.HSL:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[2,1,0]);break;case se.HWB:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[2]);break;case se.Lab:case se.OKLab:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0]);break;case se.LCH:case se.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2])}}return n.channels=convertPowerlessComponentsToMissingComponents(n.channels,a),n}function convertPowerlessComponentsToMissingComponents(e,a){const n=[...e];switch(a){case se.HSL:!Number.isNaN(n[1])&&reducePrecision(n[1],4)<=0&&(n[0]=NaN);break;case se.HWB:Math.max(0,reducePrecision(n[1],4))+Math.max(0,reducePrecision(n[2],4))>=100&&(n[0]=NaN);break;case se.LCH:!Number.isNaN(n[1])&&reducePrecision(n[1],4)<=0&&(n[2]=NaN);break;case se.OKLCH:!Number.isNaN(n[1])&&reducePrecision(n[1],6)<=0&&(n[2]=NaN)}return n}function convertPowerlessComponentsToZeroValuesForDisplay(e,a){const n=[...e];switch(a){case se.HSL:(reducePrecision(n[2])<=0||reducePrecision(n[2])>=100)&&(n[0]=NaN,n[1]=NaN),reducePrecision(n[1])<=0&&(n[0]=NaN);break;case se.HWB:Math.max(0,reducePrecision(n[1]))+Math.max(0,reducePrecision(n[2]))>=100&&(n[0]=NaN);break;case se.Lab:(reducePrecision(n[0])<=0||reducePrecision(n[0])>=100)&&(n[1]=NaN,n[2]=NaN);break;case se.LCH:reducePrecision(n[1])<=0&&(n[2]=NaN),(reducePrecision(n[0])<=0||reducePrecision(n[0])>=100)&&(n[1]=NaN,n[2]=NaN);break;case se.OKLab:(reducePrecision(n[0])<=0||reducePrecision(n[0])>=1)&&(n[1]=NaN,n[2]=NaN);break;case se.OKLCH:reducePrecision(n[1])<=0&&(n[2]=NaN),(reducePrecision(n[0])<=0||reducePrecision(n[0])>=1)&&(n[1]=NaN,n[2]=NaN)}return n}function carryForwardMissingComponents(e,a,n,r){const o=[...n];for(const n of a)Number.isNaN(e[a[n]])&&(o[r[n]]=NaN);return o}function normalizeRelativeColorDataChannels(e){const a=new Map;switch(e.colorNotation){case se.RGB:case se.HEX:a.set(\"r\",dummyNumberToken(255*e.channels[0])),a.set(\"g\",dummyNumberToken(255*e.channels[1])),a.set(\"b\",dummyNumberToken(255*e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case se.HSL:a.set(\"h\",dummyNumberToken(e.channels[0])),a.set(\"s\",dummyNumberToken(e.channels[1])),a.set(\"l\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case se.HWB:a.set(\"h\",dummyNumberToken(e.channels[0])),a.set(\"w\",dummyNumberToken(e.channels[1])),a.set(\"b\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case se.Lab:case se.OKLab:a.set(\"l\",dummyNumberToken(e.channels[0])),a.set(\"a\",dummyNumberToken(e.channels[1])),a.set(\"b\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case se.LCH:case se.OKLCH:a.set(\"l\",dummyNumberToken(e.channels[0])),a.set(\"c\",dummyNumberToken(e.channels[1])),a.set(\"h\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case se.sRGB:case se.A98_RGB:case se.Display_P3:case se.Rec2020:case se.Linear_sRGB:case se.ProPhoto_RGB:a.set(\"r\",dummyNumberToken(e.channels[0])),a.set(\"g\",dummyNumberToken(e.channels[1])),a.set(\"b\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case se.XYZ_D50:case se.XYZ_D65:a.set(\"x\",dummyNumberToken(e.channels[0])),a.set(\"y\",dummyNumberToken(e.channels[1])),a.set(\"z\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha))}return a}function noneToZeroInRelativeColorDataChannels(e){const a=new Map(e);for(const[n,r]of e)Number.isNaN(r[4].value)&&a.set(n,dummyNumberToken(0));return a}function dummyNumberToken(n){return Number.isNaN(n)?[e.Number,\"none\",-1,-1,{value:Number.NaN,type:a.Number}]:[e.Number,n.toString(),-1,-1,{value:n,type:a.Number}]}function reducePrecision(e,a=7){if(Number.isNaN(e))return 0;const n=Math.pow(10,a);return Math.round(e*n)/n}function colorDataFitsRGB_Gamut(e){const a={...e,channels:[...e.channels]};a.channels=convertPowerlessComponentsToZeroValuesForDisplay(a.channels,a.colorNotation);return!colorDataTo(a,se.RGB).channels.find((e=>e<-1e-5||e>1.00001))}function colorDataFitsDisplayP3_Gamut(e){const a={...e,channels:[...e.channels]};a.channels=convertPowerlessComponentsToZeroValuesForDisplay(a.channels,a.colorNotation);return!colorDataTo(a,se.Display_P3).channels.find((e=>e<-1e-5||e>1.00001))}function normalize(e,a,n,r){return Math.min(Math.max(e/a,n),r)}const ie=/[A-Z]/g;function toLowerCaseAZ(e){return e.replace(ie,(e=>String.fromCharCode(e.charCodeAt(0)+32)))}function normalize_Color_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(ue.HasPercentageValues);let n=normalize(t[4].value,100,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=normalize(t[4].value,1,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}const he=new Set([\"srgb\",\"srgb-linear\",\"display-p3\",\"a98-rgb\",\"prophoto-rgb\",\"rec2020\",\"xyz\",\"xyz-d50\",\"xyz-d65\"]);function color$1(e,a){const r=[],s=[],u=[],c=[];let i,h,m=!1,p=!1;const N={colorNotation:se.sRGB,channels:[0,0,0],alpha:1,syntaxFlags:new Set([])};let b=r;for(let o=0;o=0){u=c.value[4].value;continue}}return!1}if(!t)return!1;n.push({color:t,percentage:u}),t=!1,u=!1}}if(t&&n.push({color:t,percentage:u}),2!==n.length)return!1;let c=n[0].percentage,i=n[1].percentage;return(!1===c||!(c<0||c>100))&&((!1===i||!(i<0||i>100))&&(!1===c&&!1===i?(c=50,i=50):!1!==c&&!1===i?i=100-c:!1===c&&!1!==i&&(c=100-i),(0!==c||0!==i)&&(!1!==c&&!1!==i&&(c+i>100&&(c=c/(c+i)*100,i=i/(c+i)*100),c+i<100&&(o=(c+i)/100,c=c/(c+i)*100,i=i/(c+i)*100),{a:{color:n[0].color,percentage:c},b:{color:n[1].color,percentage:i},alphaMultiplier:o}))))}function colorMixRectangular(e,a){if(!a)return!1;const n=a.a.color,r=a.b.color,o=a.a.percentage/100;let t=n.channels,l=r.channels,s=se.RGB,u=n.alpha;if(\"number\"!=typeof u)return!1;let c=r.alpha;if(\"number\"!=typeof c)return!1;switch(u=Number.isNaN(u)?c:u,c=Number.isNaN(c)?u:c,e){case\"srgb\":s=se.RGB;break;case\"srgb-linear\":s=se.Linear_sRGB;break;case\"display-p3\":s=se.Display_P3;break;case\"a98-rgb\":s=se.A98_RGB;break;case\"prophoto-rgb\":s=se.ProPhoto_RGB;break;case\"rec2020\":s=se.Rec2020;break;case\"lab\":s=se.Lab;break;case\"oklab\":s=se.OKLab;break;case\"xyz-d50\":s=se.XYZ_D50;break;case\"xyz\":case\"xyz-d65\":s=se.XYZ_D65}t=colorDataTo(n,s).channels,l=colorDataTo(r,s).channels,t[0]=fillInMissingComponent(t[0],l[0]),l[0]=fillInMissingComponent(l[0],t[0]),t[1]=fillInMissingComponent(t[1],l[1]),l[1]=fillInMissingComponent(l[1],t[1]),t[2]=fillInMissingComponent(t[2],l[2]),l[2]=fillInMissingComponent(l[2],t[2]),t[0]=premultiply(t[0],u),t[1]=premultiply(t[1],u),t[2]=premultiply(t[2],u),l[0]=premultiply(l[0],c),l[1]=premultiply(l[1],c),l[2]=premultiply(l[2],c);const i=interpolate(u,c,o),h={colorNotation:s,channels:[un_premultiply(interpolate(t[0],l[0],o),i),un_premultiply(interpolate(t[1],l[1],o),i),un_premultiply(interpolate(t[2],l[2],o),i)],alpha:i*a.alphaMultiplier,syntaxFlags:new Set([ue.ColorMix])};return(a.a.color.syntaxFlags.has(ue.Experimental)||a.b.color.syntaxFlags.has(ue.Experimental))&&h.syntaxFlags.add(ue.Experimental),h}function colorMixPolar(e,a,n){if(!n)return!1;const r=n.a.color,o=n.b.color,t=n.a.percentage/100;let l=r.channels,s=o.channels,u=0,c=0,i=0,h=0,m=0,p=0,N=se.RGB,b=r.alpha;if(\"number\"!=typeof b)return!1;let v=o.alpha;if(\"number\"!=typeof v)return!1;switch(b=Number.isNaN(b)?v:b,v=Number.isNaN(v)?b:v,e){case\"hsl\":N=se.HSL;break;case\"hwb\":N=se.HWB;break;case\"lch\":N=se.LCH;break;case\"oklch\":N=se.OKLCH}switch(l=colorDataTo(r,N).channels,s=colorDataTo(o,N).channels,e){case\"hsl\":case\"hwb\":u=l[0],c=s[0],i=l[1],h=s[1],m=l[2],p=s[2];break;case\"lch\":case\"oklch\":i=l[0],h=s[0],m=l[1],p=s[1],u=l[2],c=s[2]}u=fillInMissingComponent(u,c),Number.isNaN(u)&&(u=0),c=fillInMissingComponent(c,u),Number.isNaN(c)&&(c=0),i=fillInMissingComponent(i,h),h=fillInMissingComponent(h,i),m=fillInMissingComponent(m,p),p=fillInMissingComponent(p,m);const g=c-u;switch(a){case\"shorter\":g>180?u+=360:g<-180&&(c+=360);break;case\"longer\":-1800?u+=360:c+=360);break;case\"increasing\":g<0&&(c+=360);break;case\"decreasing\":g>0&&(u+=360);break;default:throw new Error(\"Unknown hue interpolation method\")}i=premultiply(i,b),m=premultiply(m,b),h=premultiply(h,v),p=premultiply(p,v);let f=[0,0,0];const d=interpolate(b,v,t);switch(e){case\"hsl\":case\"hwb\":f=[interpolate(u,c,t),un_premultiply(interpolate(i,h,t),d),un_premultiply(interpolate(m,p,t),d)];break;case\"lch\":case\"oklch\":f=[un_premultiply(interpolate(i,h,t),d),un_premultiply(interpolate(m,p,t),d),interpolate(u,c,t)]}const y={colorNotation:N,channels:f,alpha:d*n.alphaMultiplier,syntaxFlags:new Set([ue.ColorMix])};return(n.a.color.syntaxFlags.has(ue.Experimental)||n.b.color.syntaxFlags.has(ue.Experimental))&&y.syntaxFlags.add(ue.Experimental),y}function fillInMissingComponent(e,a){return Number.isNaN(e)?a:e}function interpolate(e,a,n){return e*n+a*(1-n)}function premultiply(e,a){return Number.isNaN(a)?e:Number.isNaN(e)?NaN:e*a}function un_premultiply(e,a){return 0===a||Number.isNaN(a)?e:Number.isNaN(e)?NaN:e/a}function hex(e){const a=toLowerCaseAZ(e[4].value);if(a.match(/[^a-f0-9]/))return!1;const n={colorNotation:se.HEX,channels:[0,0,0],alpha:1,syntaxFlags:new Set([ue.Hex])},r=a.length;if(3===r){const e=a[0],r=a[1],o=a[2];return n.channels=[parseInt(e+e,16)/255,parseInt(r+r,16)/255,parseInt(o+o,16)/255],n}if(6===r){const e=a[0]+a[1],r=a[2]+a[3],o=a[4]+a[5];return n.channels=[parseInt(e,16)/255,parseInt(r,16)/255,parseInt(o,16)/255],n}if(4===r){const e=a[0],r=a[1],o=a[2],t=a[3];return n.channels=[parseInt(e+e,16)/255,parseInt(r+r,16)/255,parseInt(o+o,16)/255],n.alpha=parseInt(t+t,16)/255,n.syntaxFlags.add(ue.HasAlpha),n}if(8===r){const e=a[0]+a[1],r=a[2]+a[3],o=a[4]+a[5],t=a[6]+a[7];return n.channels=[parseInt(e,16)/255,parseInt(r,16)/255,parseInt(o,16)/255],n.alpha=parseInt(t,16)/255,n.syntaxFlags.add(ue.HasAlpha),n}return!1}function normalizeHue(n){if(o(n))return n[4].value=n[4].value%360,n[1]=n[4].value.toString(),n;if(u(n)){let r=n[4].value;switch(toLowerCaseAZ(n[4].unit)){case\"deg\":break;case\"rad\":r=180*n[4].value/Math.PI;break;case\"grad\":r=.9*n[4].value;break;case\"turn\":r=360*n[4].value;break;default:return!1}return r%=360,[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}return!1}function normalize_legacy_HSL_ChannelValues(n,t,l){if(0===t){const e=normalizeHue(n);return!1!==e&&(u(n)&&l.syntaxFlags.add(ue.HasDimensionValues),e)}if(r(n)){3===t?l.syntaxFlags.add(ue.HasPercentageAlpha):l.syntaxFlags.add(ue.HasPercentageValues);let r=normalize(n[4].value,1,0,100);return 3===t&&(r=normalize(n[4].value,100,0,1)),[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}if(o(n)){if(3!==t)return!1;let r=normalize(n[4].value,1,0,100);return 3===t&&(r=normalize(n[4].value,1,0,1)),[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}return!1}function normalize_modern_HSL_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(0===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(ue.HasDimensionValues),e)}if(r(t)){3===l?s.syntaxFlags.add(ue.HasPercentageAlpha):s.syntaxFlags.add(ue.HasPercentageValues);let n=t[4].value;return 3===l?n=normalize(t[4].value,100,0,1):1===l&&(n=normalize(t[4].value,1,0,2147483647)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=t[4].value;return 3===l?n=normalize(t[4].value,1,0,1):1===l&&(n=normalize(t[4].value,1,0,2147483647)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function threeChannelLegacySyntax(e,a,n,r){const t=[],u=[],c=[],i=[],h={colorNotation:n,channels:[0,0,0],alpha:1,syntaxFlags:new Set(r)};let m=t;for(let a=0;aee(e)&&s(e.value)))){const a=hslCommaSeparated(e);if(!1!==a)return a}{const n=hslSpaceSeparated(e,a);if(!1!==n)return n}return!1}function hslCommaSeparated(e){return threeChannelLegacySyntax(e,normalize_legacy_HSL_ChannelValues,se.HSL,[ue.LegacyHSL])}function hslSpaceSeparated(e,a){return threeChannelSpaceSeparated(e,normalize_modern_HSL_ChannelValues,se.HSL,[],a)}function normalize_HWB_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(0===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(ue.HasDimensionValues),e)}if(r(t)){3===l?s.syntaxFlags.add(ue.HasPercentageAlpha):s.syntaxFlags.add(ue.HasPercentageValues);let n=t[4].value;return 3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=t[4].value;return 3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function normalize_Lab_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(ue.HasPercentageValues);let n=normalize(t[4].value,1,0,100);return 1===l||2===l?n=normalize(t[4].value,.8,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=normalize(t[4].value,1,0,100);return 1===l||2===l?n=normalize(t[4].value,1,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function lab(e,a){return threeChannelSpaceSeparated(e,normalize_Lab_ChannelValues,se.Lab,[],a)}function normalize_LCH_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(2===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(ue.HasDimensionValues),e)}if(r(t)){3!==l&&s.syntaxFlags.add(ue.HasPercentageValues);let n=normalize(t[4].value,1,0,100);return 1===l?n=normalize(t[4].value,100/150,0,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=normalize(t[4].value,1,0,100);return 1===l?n=normalize(t[4].value,1,0,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function lch(e,a){return threeChannelSpaceSeparated(e,normalize_LCH_ChannelValues,se.LCH,[],a)}const be=new Map;for(const[e,a]of Object.entries(G))be.set(e,a);function namedColor(e){const a=be.get(toLowerCaseAZ(e));return!!a&&{colorNotation:se.RGB,channels:[a[0]/255,a[1]/255,a[2]/255],alpha:1,syntaxFlags:new Set([ue.ColorKeyword,ue.NamedColor])}}function normalize_OKLab_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(ue.HasPercentageValues);let n=normalize(t[4].value,100,0,1);return 1===l||2===l?n=normalize(t[4].value,250,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=normalize(t[4].value,1,0,1);return 1===l||2===l?n=normalize(t[4].value,1,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function oklab(e,a){return threeChannelSpaceSeparated(e,normalize_OKLab_ChannelValues,se.OKLab,[],a)}function normalize_OKLCH_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(2===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(ue.HasDimensionValues),e)}if(r(t)){3!==l&&s.syntaxFlags.add(ue.HasPercentageValues);let n=normalize(t[4].value,100,0,1);return 1===l?n=normalize(t[4].value,250,0,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=normalize(t[4].value,1,0,1);return 1===l?n=normalize(t[4].value,1,0,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function oklch(e,a){return threeChannelSpaceSeparated(e,normalize_OKLCH_ChannelValues,se.OKLCH,[],a)}function normalize_legacy_sRGB_ChannelValues(n,t,l){if(r(n)){3===t?l.syntaxFlags.add(ue.HasPercentageAlpha):l.syntaxFlags.add(ue.HasPercentageValues);const r=normalize(n[4].value,100,0,1);return[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}if(o(n)){3!==t&&l.syntaxFlags.add(ue.HasNumberValues);let r=normalize(n[4].value,255,0,1);return 3===t&&(r=normalize(n[4].value,1,0,1)),[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}return!1}function normalize_modern_sRGB_ChannelValues(t,l,s){if(n(t)&&\"none\"===t[4].value.toLowerCase())return s.syntaxFlags.add(ue.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(ue.HasPercentageValues);let n=normalize(t[4].value,100,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(ue.HasNumberValues);let n=normalize(t[4].value,255,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function rgb(e,a){if(e.value.some((e=>ee(e)&&s(e.value)))){const a=rgbCommaSeparated(e);if(!1!==a)return(!a.syntaxFlags.has(ue.HasNumberValues)||!a.syntaxFlags.has(ue.HasPercentageValues))&&a}else{const n=rgbSpaceSeparated(e,a);if(!1!==n)return n}return!1}function rgbCommaSeparated(e){return threeChannelLegacySyntax(e,normalize_legacy_sRGB_ChannelValues,se.RGB,[ue.LegacyRGB])}function rgbSpaceSeparated(e,a){return threeChannelSpaceSeparated(e,normalize_modern_sRGB_ChannelValues,se.RGB,[],a)}function XYZ_D50_to_sRGB_Gamut(e){const a=B(e);if(T(a))return V(a);let n=e;return n=L(n),n[0]<1e-6&&(n=[0,0,0]),n[0]>.999999&&(n=[1,0,0]),A(X(n,oklch_to_lin_srgb,lin_srgb_to_oklch))}function oklch_to_lin_srgb(e){return e=Y(e),e=K(e),I(e)}function lin_srgb_to_oklch(e){return e=O(e),e=E(e),W(e)}function contrastColor(e,a){let r=!1,o=!1;for(let t=0;ts?[1,1,1]:[0,0,0],t}function XYZ_D50_to_P3_Gamut(e){const a=M(e);if(T(a))return V(a);let n=e;return n=L(n),n[0]<1e-6&&(n=[0,0,0]),n[0]>.999999&&(n=[1,0,0]),$(X(n,oklch_to_lin_p3,lin_p3_to_oklch))}function oklch_to_lin_p3(e){return e=Y(e),e=K(e),j(e)}function lin_p3_to_oklch(e){return e=q(e),e=E(e),W(e)}function toPrecision(e,a=7){e=+e,a=+a;const n=(Math.floor(Math.abs(e))+\"\").length;if(a>n)return+e.toFixed(a-n);{const r=10**(n-a);return Math.round(e/r)*r}}function serializeWithAlpha(n,r,o,t){const l=[e.CloseParen,\")\",-1,-1,void 0];if(\"number\"==typeof n.alpha){const s=Math.min(1,Math.max(0,toPrecision(Number.isNaN(n.alpha)?0:n.alpha)));return 1===toPrecision(s,4)?new re(r,l,t):new re(r,l,[...t,new oe([o]),new ne([e.Delim,\"/\",-1,-1,{value:\"/\"}]),new oe([o]),new ne([e.Number,toPrecision(s,4).toString(),-1,-1,{value:n.alpha,type:a.Integer}])])}return new re(r,l,[...t,new oe([o]),new ne([e.Delim,\"/\",-1,-1,{value:\"/\"}]),new oe([o]),n.alpha])}function serializeP3(n,r=!0){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let o=n.channels.map((e=>Number.isNaN(e)?0:e));r?o=XYZ_D50_to_P3_Gamut(colorData_to_XYZ_D50(n).channels):n.colorNotation!==se.Display_P3&&(o=M(colorData_to_XYZ_D50(n).channels));const t=r?Math.min(1,Math.max(0,toPrecision(o[0],6))):toPrecision(o[0],6),l=r?Math.min(1,Math.max(0,toPrecision(o[1],6))):toPrecision(o[1],6),s=r?Math.min(1,Math.max(0,toPrecision(o[2],6))):toPrecision(o[2],6),u=[e.Function,\"color(\",-1,-1,{value:\"color\"}],c=[e.Whitespace,\" \",-1,-1,void 0];return serializeWithAlpha(n,u,c,[new ne([e.Ident,\"display-p3\",-1,-1,{value:\"display-p3\"}]),new oe([c]),new ne([e.Number,t.toString(),-1,-1,{value:o[0],type:a.Number}]),new oe([c]),new ne([e.Number,l.toString(),-1,-1,{value:o[1],type:a.Number}]),new oe([c]),new ne([e.Number,s.toString(),-1,-1,{value:o[2],type:a.Number}])])}function serializeRGB(n,r=!0){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let o=n.channels.map((e=>Number.isNaN(e)?0:e));o=r?XYZ_D50_to_sRGB_Gamut(colorData_to_XYZ_D50(n).channels):B(colorData_to_XYZ_D50(n).channels);const t=Math.min(255,Math.max(0,Math.round(255*toPrecision(o[0])))),l=Math.min(255,Math.max(0,Math.round(255*toPrecision(o[1])))),s=Math.min(255,Math.max(0,Math.round(255*toPrecision(o[2])))),u=[e.CloseParen,\")\",-1,-1,void 0],c=[e.Whitespace,\" \",-1,-1,void 0],i=[e.Comma,\",\",-1,-1,void 0],h=[new ne([e.Number,t.toString(),-1,-1,{value:Math.min(255,255*Math.max(0,o[0])),type:a.Integer}]),new ne(i),new oe([c]),new ne([e.Number,l.toString(),-1,-1,{value:Math.min(255,255*Math.max(0,o[1])),type:a.Integer}]),new ne(i),new oe([c]),new ne([e.Number,s.toString(),-1,-1,{value:Math.min(255,255*Math.max(0,o[2])),type:a.Integer}])];if(\"number\"==typeof n.alpha){const r=Math.min(1,Math.max(0,toPrecision(Number.isNaN(n.alpha)?0:n.alpha)));return 1===toPrecision(r,4)?new re([e.Function,\"rgb(\",-1,-1,{value:\"rgb\"}],u,h):new re([e.Function,\"rgba(\",-1,-1,{value:\"rgba\"}],u,[...h,new ne(i),new oe([c]),new ne([e.Number,toPrecision(r,4).toString(),-1,-1,{value:n.alpha,type:a.Number}])])}return new re([e.Function,\"rgba(\",-1,-1,{value:\"rgba\"}],u,[...h,new ne(i),new oe([c]),n.alpha])}function serializeHSL(n,r=!0){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let o=n.channels.map((e=>Number.isNaN(e)?0:e));o=z(r?w(XYZ_D50_to_sRGB_Gamut(colorData_to_XYZ_D50(n).channels)):colorData_to_XYZ_D50(n).channels),o=o.map((e=>Number.isNaN(e)?0:e));const t=Math.min(360,Math.max(0,Math.round(toPrecision(o[0])))),l=Math.min(100,Math.max(0,Math.round(toPrecision(o[1])))),s=Math.min(100,Math.max(0,Math.round(toPrecision(o[2])))),u=[e.CloseParen,\")\",-1,-1,void 0],c=[e.Whitespace,\" \",-1,-1,void 0],i=[e.Comma,\",\",-1,-1,void 0],h=[new ne([e.Number,t.toString(),-1,-1,{value:o[0],type:a.Integer}]),new ne(i),new oe([c]),new ne([e.Percentage,l.toString()+\"%\",-1,-1,{value:o[1]}]),new ne(i),new oe([c]),new ne([e.Percentage,s.toString()+\"%\",-1,-1,{value:o[2]}])];if(\"number\"==typeof n.alpha){const r=Math.min(1,Math.max(0,toPrecision(Number.isNaN(n.alpha)?0:n.alpha)));return 1===toPrecision(r,4)?new re([e.Function,\"hsl(\",-1,-1,{value:\"hsl\"}],u,h):new re([e.Function,\"hsla(\",-1,-1,{value:\"hsla\"}],u,[...h,new ne(i),new oe([c]),new ne([e.Number,toPrecision(r,4).toString(),-1,-1,{value:n.alpha,type:a.Number}])])}return new re([e.Function,\"hsla(\",-1,-1,{value:\"hsla\"}],u,[...h,new ne(i),new oe([c]),n.alpha])}function serializeOKLCH(n){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let r=n.channels.map((e=>Number.isNaN(e)?0:e));n.colorNotation!==se.OKLCH&&(r=L(colorData_to_XYZ_D50(n).channels));const o=toPrecision(r[0],6),t=toPrecision(r[1],6),l=toPrecision(r[2],6),s=[e.Function,\"oklch(\",-1,-1,{value:\"oklch\"}],u=[e.Whitespace,\" \",-1,-1,void 0];return serializeWithAlpha(n,s,u,[new ne([e.Number,o.toString(),-1,-1,{value:r[0],type:a.Number}]),new oe([u]),new ne([e.Number,t.toString(),-1,-1,{value:r[1],type:a.Number}]),new oe([u]),new ne([e.Number,l.toString(),-1,-1,{value:r[2],type:a.Number}])])}function color(e){if(ae(e)){switch(toLowerCaseAZ(e.getName())){case\"rgb\":case\"rgba\":return rgb(e,color);case\"hsl\":case\"hsla\":return hsl(e,color);case\"hwb\":return a=color,threeChannelSpaceSeparated(e,normalize_HWB_ChannelValues,se.HWB,[],a);case\"lab\":return lab(e,color);case\"lch\":return lch(e,color);case\"oklab\":return oklab(e,color);case\"oklch\":return oklch(e,color);case\"color\":return color$1(e,color);case\"color-mix\":return colorMix(e,color);case\"contrast-color\":return contrastColor(e,color)}}var a;if(ee(e)){if(c(e.value))return hex(e.value);if(n(e.value)){const a=namedColor(e.value[4].value);return!1!==a?a:\"transparent\"===toLowerCaseAZ(e.value[4].value)&&{colorNotation:se.RGB,channels:[0,0,0],alpha:0,syntaxFlags:new Set([ue.ColorKeyword])}}}return!1}export{se as ColorNotation,ue as SyntaxFlag,color,colorDataFitsDisplayP3_Gamut,colorDataFitsRGB_Gamut,serializeHSL,serializeOKLCH,serializeP3,serializeRGB};\n", "/**\n * relative-color.js\n */\n\nimport { color as colorParser } from '@csstools/css-color-parser';\nimport { parseComponentValue } from '@csstools/css-parser-algorithms';\nimport { TokenType, tokenize } from '@csstools/css-tokenizer';\nimport { LRUCache } from 'lru-cache';\nimport { isString } from './common.js';\nimport { colorToRgb } from './convert.js';\nimport { resolveDimension, serializeCalc } from './css-calc.js';\nimport { resolve } from './resolve.js';\nimport { roundToPrecision, valueToJsonString } from './util.js';\n\n/* constants */\nimport {\n CS_LAB, CS_LCH, FN_REL, FN_REL_CAPT, FN_VAR, NONE, SYN_COLOR_TYPE,\n SYN_FN_MATH, SYN_FN_VAR, SYN_MIX, VAL_SPEC\n} from './constant.js';\nimport { NAMED_COLORS } from './color.js';\nconst {\n CloseParen: PAREN_CLOSE, Comment: COMMENT, Dimension: DIM, EOF,\n Function: FUNC, Ident: IDENT, Number: NUM, OpenParen: PAREN_OPEN,\n Percentage: PCT, Whitespace: W_SPACE\n} = TokenType;\nconst NONE_KEY = 'has-none-keywords';\nconst OCT = 8;\nconst DEC = 10;\nconst HEX = 16;\nconst MAX_PCT = 100;\nconst MAX_RGB = 255;\n\n/* regexp */\nconst REG_COLOR_CAPT =\n new RegExp(`^${FN_REL}(${SYN_COLOR_TYPE}|${SYN_MIX})\\\\s+`);\nconst REG_CS_HSL = /(?:hsla?|hwb)$/;\nconst REG_CS_CIE = new RegExp(`^(?:${CS_LAB}|${CS_LCH})$`);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\nconst REG_REL = new RegExp(FN_REL);\nconst REG_REL_CAPT = new RegExp(`^${FN_REL_CAPT}`);\nconst REG_START_MATH = new RegExp(SYN_FN_MATH);\nconst REG_START_REL = new RegExp(`^${FN_REL}`);\n\n/* cached results */\nexport const cachedResults = new LRUCache({\n max: 4096\n});\n\n/**\n * resolve relative color channels\n * @param {Array.} tokens - tokens\n * @param {object} [opt] - options\n * @param {string} [opt.colorSpace] - color space\n * @returns {?Array.} - resolved channels\n */\nexport function resolveColorChannels(tokens, opt = {}) {\n if (!Array.isArray(tokens)) {\n throw new TypeError(`${tokens} is not an array.`);\n }\n const { colorSpace, format } = opt;\n const colorChannels = new Map([\n ['color', ['r', 'g', 'b', 'alpha']],\n ['hsl', ['h', 's', 'l', 'alpha']],\n ['hsla', ['h', 's', 'l', 'alpha']],\n ['hwb', ['h', 'w', 'b', 'alpha']],\n ['lab', ['l', 'a', 'b', 'alpha']],\n ['lch', ['l', 'c', 'h', 'alpha']],\n ['oklab', ['l', 'a', 'b', 'alpha']],\n ['oklch', ['l', 'c', 'h', 'alpha']],\n ['rgb', ['r', 'g', 'b', 'alpha']],\n ['rgba', ['r', 'g', 'b', 'alpha']]\n ]);\n const colorChannel = colorChannels.get(colorSpace);\n const mathFunc = new Set();\n const channels = [[], [], [], []];\n let i = 0;\n let nest = 0;\n let func = false;\n while (tokens.length) {\n const token = tokens.shift();\n if (!Array.isArray(token)) {\n throw new TypeError(`${token} is not an array.`);\n }\n const [type, value,,, detail = {}] = token;\n const { value: numValue } = detail;\n const channel = channels[i];\n switch (type) {\n case DIM: {\n let resolvedValue = resolveDimension(token, opt);\n if (!resolvedValue) {\n resolvedValue = value;\n }\n channel.push(resolvedValue);\n break;\n }\n case FUNC: {\n channel.push(value);\n func = true;\n nest++;\n if (REG_START_MATH.test(value)) {\n mathFunc.add(nest);\n }\n break;\n }\n case IDENT: {\n // invalid channel key\n if (!colorChannel.includes(value)) {\n return null;\n }\n channel.push(value);\n if (!func) {\n i++;\n }\n break;\n }\n case NUM: {\n channel.push(numValue);\n if (!func) {\n i++;\n }\n break;\n }\n case PAREN_OPEN: {\n channel.push(value);\n nest++;\n break;\n }\n case PAREN_CLOSE: {\n if (func) {\n const lastValue = channel[channel.length - 1];\n if (lastValue === ' ') {\n channel.splice(-1, 1, value);\n } else {\n channel.push(value);\n }\n if (mathFunc.has(nest)) {\n mathFunc.delete(nest);\n }\n nest--;\n if (nest === 0) {\n func = false;\n i++;\n }\n }\n break;\n }\n case PCT: {\n channel.push(numValue / MAX_PCT);\n if (!func) {\n i++;\n }\n break;\n }\n case W_SPACE: {\n if (channel.length && func) {\n const lastValue = channel[channel.length - 1];\n if (typeof lastValue === 'number') {\n channel.push(value);\n } else if (isString(lastValue) &&\n !lastValue.endsWith('(') && lastValue !== ' ') {\n channel.push(value);\n }\n }\n break;\n }\n default: {\n if (type !== COMMENT && type !== EOF && func) {\n channel.push(value);\n }\n }\n }\n }\n const channelValues = [];\n for (const channel of channels) {\n if (channel.length === 1) {\n const [resolvedValue] = channel;\n channelValues.push(resolvedValue);\n } else if (channel.length) {\n const resolvedValue = serializeCalc(channel.join(''), {\n format\n });\n channelValues.push(resolvedValue);\n }\n }\n return channelValues;\n}\n\n/**\n * extract origin color\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.currentColor] - current color value\n * @returns {?string} - value\n */\nexport function extractOriginColor(value, opt = {}) {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n if (!value) {\n return null;\n }\n if (!REG_START_REL.test(value)) {\n return value;\n }\n } else {\n return null;\n }\n const { currentColor, format } = opt;\n const cacheKey = `{preProcess:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n if (/currentcolor/.test(value)) {\n if (currentColor) {\n value = value.replace(/currentcolor/g, currentColor);\n } else {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n }\n const [, colorSpace] = REG_REL_CAPT.exec(value);\n opt.colorSpace = colorSpace;\n if (REG_COLOR_CAPT.test(value)) {\n const [, originColor] = REG_COLOR_CAPT.exec(value);\n const [, restValue] = value.split(originColor);\n if (/^[a-z]+$/.test(originColor)) {\n if (!/^transparent$/.test(originColor) &&\n !Object.prototype.hasOwnProperty.call(NAMED_COLORS, originColor)) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n } else if (format === VAL_SPEC) {\n const resolvedOriginColor = resolve(originColor, opt);\n value = value.replace(originColor, resolvedOriginColor);\n }\n if (format === VAL_SPEC) {\n const tokens = tokenize({ css: restValue });\n const channelValues = resolveColorChannels(tokens, opt);\n if (!Array.isArray(channelValues)) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n let channelValue;\n if (channelValues.length === 3) {\n channelValue = ` ${channelValues.join(' ')})`;\n } else {\n const [v1, v2, v3, v4] = channelValues;\n channelValue = ` ${v1} ${v2} ${v3} / ${v4})`;\n }\n value = value.replace(restValue, channelValue);\n }\n // nested relative color\n } else {\n const [, restValue] = value.split(REG_START_REL);\n if (REG_START_REL.test(restValue)) {\n const tokens = tokenize({ css: restValue });\n let originColor = [];\n let nest = 0;\n while (tokens.length) {\n const token = tokens.shift();\n const [type, tokenValue] = token;\n switch (type) {\n case FUNC:\n case PAREN_OPEN: {\n originColor.push(tokenValue);\n nest++;\n break;\n }\n case PAREN_CLOSE: {\n const lastValue = originColor[originColor.length - 1];\n if (lastValue === ' ') {\n originColor.splice(-1, 1, tokenValue);\n } else {\n originColor.push(tokenValue);\n }\n nest--;\n break;\n }\n case W_SPACE: {\n const lastValue = originColor[originColor.length - 1];\n if (!lastValue.endsWith('(') && lastValue !== ' ') {\n originColor.push(tokenValue);\n }\n break;\n }\n default: {\n if (type !== COMMENT && type !== EOF) {\n originColor.push(tokenValue);\n }\n }\n }\n if (nest === 0) {\n break;\n }\n }\n originColor = resolveRelativeColor(originColor.join('').trim(), opt);\n if (!originColor) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n const channelValues = resolveColorChannels(tokens, opt);\n if (!Array.isArray(channelValues)) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n let channelValue;\n if (channelValues.length === 3) {\n channelValue = ` ${channelValues.join(' ')})`;\n } else {\n const [v1, v2, v3, v4] = channelValues;\n channelValue = ` ${v1} ${v2} ${v3} / ${v4})`;\n }\n value = value.replace(restValue, `${originColor}${channelValue}`);\n }\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, value);\n }\n return value;\n}\n\n/**\n * resolve relative color\n * @param {string} value - relative color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {?string} - value\n */\nexport function resolveRelativeColor(value, opt = {}) {\n const { format } = opt;\n if (isString(value)) {\n if (REG_FN_VAR.test(value)) {\n if (format === VAL_SPEC) {\n return value;\n // var() must be resolved before resolveRelativeColor()\n } else {\n throw new SyntaxError(`Unexpected token ${FN_VAR} found.`);\n }\n } else if (!REG_REL.test(value)) {\n return value;\n }\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string`);\n }\n const cacheKey = `{relativeColor:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n value = extractOriginColor(value, opt);\n if (!value) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n if (format === VAL_SPEC) {\n if (value.startsWith('rgba(')) {\n value = value.replace(/^rgba\\(/, 'rgb(');\n } else if (value.startsWith('hsla(')) {\n value = value.replace(/^hsla\\(/, 'hsl(');\n }\n return value;\n }\n const tokens = tokenize({ css: value });\n const components = parseComponentValue(tokens);\n const parsedComponents = colorParser(components);\n if (!parsedComponents) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n let {\n alpha, channels: [v1, v2, v3], colorNotation, syntaxFlags\n } = parsedComponents;\n if (Number.isNaN(alpha)) {\n if (syntaxFlags.has(NONE_KEY)) {\n alpha = NONE;\n } else {\n alpha = 0;\n }\n } else {\n alpha = roundToPrecision(alpha, OCT);\n }\n let resolvedValue;\n if (REG_CS_CIE.test(colorNotation)) {\n if (Number.isNaN(v1)) {\n if (syntaxFlags.has(NONE_KEY)) {\n v1 = NONE;\n } else {\n v1 = 0;\n }\n } else {\n v1 = roundToPrecision(v1, HEX);\n }\n if (Number.isNaN(v2)) {\n if (syntaxFlags.has(NONE_KEY)) {\n v2 = NONE;\n } else {\n v2 = 0;\n }\n } else {\n v2 = roundToPrecision(v2, HEX);\n }\n if (Number.isNaN(v3)) {\n if (syntaxFlags.has(NONE_KEY)) {\n v3 = NONE;\n } else {\n v3 = 0;\n }\n } else {\n v3 = roundToPrecision(v3, HEX);\n }\n if (alpha === 1) {\n resolvedValue = `${colorNotation}(${v1} ${v2} ${v3})`;\n } else {\n resolvedValue = `${colorNotation}(${v1} ${v2} ${v3} / ${alpha})`;\n }\n } else if (REG_CS_HSL.test(colorNotation)) {\n if (Number.isNaN(v1)) {\n v1 = 0;\n }\n if (Number.isNaN(v2)) {\n v2 = 0;\n }\n if (Number.isNaN(v3)) {\n v3 = 0;\n }\n let [r, g, b] =\n colorToRgb(`${colorNotation}(${v1} ${v2} ${v3} / ${alpha})`);\n r = roundToPrecision(r / MAX_RGB, DEC);\n g = roundToPrecision(g / MAX_RGB, DEC);\n b = roundToPrecision(b / MAX_RGB, DEC);\n if (alpha === 1) {\n resolvedValue = `color(srgb ${r} ${g} ${b})`;\n } else {\n resolvedValue = `color(srgb ${r} ${g} ${b} / ${alpha})`;\n }\n } else {\n const cs = colorNotation === 'rgb' ? 'srgb' : colorNotation;\n if (Number.isNaN(v1)) {\n if (syntaxFlags.has(NONE_KEY)) {\n v1 = NONE;\n } else {\n v1 = 0;\n }\n } else {\n v1 = roundToPrecision(v1, DEC);\n }\n if (Number.isNaN(v2)) {\n if (syntaxFlags.has(NONE_KEY)) {\n v2 = NONE;\n } else {\n v2 = 0;\n }\n } else {\n v2 = roundToPrecision(v2, DEC);\n }\n if (Number.isNaN(v3)) {\n if (syntaxFlags.has(NONE_KEY)) {\n v3 = NONE;\n } else {\n v3 = 0;\n }\n } else {\n v3 = roundToPrecision(v3, DEC);\n }\n if (alpha === 1) {\n resolvedValue = `color(${cs} ${v1} ${v2} ${v3})`;\n } else {\n resolvedValue = `color(${cs} ${v1} ${v2} ${v3} / ${alpha})`;\n }\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, resolvedValue);\n }\n return resolvedValue;\n}\n", "/**\n * resolve.js\n */\n\nimport { LRUCache } from 'lru-cache';\nimport {\n convertRgbToHex, resolveColorFunc, resolveColorMix, resolveColorValue\n} from './color.js';\nimport { isString } from './common.js';\nimport { cssCalc } from './css-calc.js';\nimport { cssVar } from './css-var.js';\nimport { resolveRelativeColor } from './relative-color.js';\nimport { valueToJsonString } from './util.js';\n\n/* constants */\nimport {\n FN_COLOR, FN_MIX, SYN_FN_MATH_CALC, SYN_FN_REL, SYN_FN_VAR, VAL_COMP, VAL_SPEC\n} from './constant.js';\nconst RGB_TRANSPARENT = 'rgba(0, 0, 0, 0)';\n\n/* regexp */\nconst REG_FN_MATH_CALC = new RegExp(SYN_FN_MATH_CALC);\nconst REG_FN_REL = new RegExp(SYN_FN_REL);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\n\n/* cached results */\nexport const cachedResults = new LRUCache({\n max: 4096\n});\n\n/**\n * resolve CSS color\n * @param {string} color - color value\n * - system colors are not supported\n * @param {object} [opt] - options\n * @param {string} [opt.currentColor]\n * - color to use for `currentcolor` keyword\n * - if omitted, it will be treated as a missing color\n * i.e. `rgb(none none none / none)`\n * @param {object} [opt.customProperty]\n * - custom properties\n * - pair of `--` prefixed property name and value,\n * e.g. `customProperty: { '--some-color': '#0000ff' }`\n * - and/or `callback` function to get the value of the custom property,\n * e.g. `customProperty: { callback: someDeclaration.getPropertyValue }`\n * @param {object} [opt.dimension]\n * - dimension, convert relative length to pixels\n * - pair of unit and it's value as a number in pixels,\n * e.g. `dimension: { em: 12, rem: 16, vw: 10.26 }`\n * - and/or `callback` function to get the value as a number in pixels,\n * e.g. `dimension: { callback: convertUnitToPixel }`\n * @param {string} [opt.format]\n * - output format, one of below\n * - `computedValue` (default), [computed value][139] of the color\n * - `specifiedValue`, [specified value][140] of the color\n * - `hex`, hex color notation, i.e. `rrggbb`\n * - `hexAlpha`, hex color notation with alpha channel, i.e. `#rrggbbaa`\n * @param {*} [opt.key] - key e.g. CSS property `background-color`\n * @returns {?string|Array}\n * - one of rgba?(), #rrggbb(aa)?, color-name, '(empty-string)',\n * color(color-space r g b / alpha), color(color-space x y z / alpha),\n * lab(l a b / alpha), lch(l c h / alpha), oklab(l a b / alpha),\n * oklch(l c h / alpha), null or [key, rgba?()] etc. if `key` is specified\n * - in `computedValue`, values are numbers, however `rgb()` values are\n * integers\n * - in `specifiedValue`, returns `empty string` for unknown and/or invalid\n * color\n * - in `hex`, returns `null` for `transparent`, and also returns `null` if\n * any of `r`, `g`, `b`, `alpha` is not a number\n * - in `hexAlpha`, returns `#00000000` for `transparent`,\n * however returns `null` if any of `r`, `g`, `b`, `alpha` is not a number\n */\nexport const resolve = (color, opt = {}) => {\n if (isString(color)) {\n color = color.trim();\n } else {\n throw new TypeError(`${color} is not a string.`);\n }\n const { currentColor, customProperty, format = VAL_COMP, key } = opt;\n let cacheKey;\n if (!REG_FN_VAR.test(color) ||\n typeof customProperty?.callback !== 'function') {\n cacheKey = `{resolve:${color},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n let res, cs, r, g, b, alpha;\n if (REG_FN_VAR.test(color)) {\n if (format === VAL_SPEC) {\n if (cacheKey) {\n cachedResults.set(cacheKey, color);\n }\n return color;\n }\n color = cssVar(color, opt);\n if (!color) {\n switch (format) {\n case 'hex':\n case 'hexAlpha': {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n default: {\n res = RGB_TRANSPARENT;\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n }\n }\n }\n if (opt.format !== format) {\n opt.format = format;\n }\n color = color.toLowerCase();\n if (REG_FN_REL.test(color)) {\n color = resolveRelativeColor(color, opt);\n if (format === VAL_COMP) {\n res = color || RGB_TRANSPARENT;\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n if (format === VAL_SPEC) {\n res = color || '';\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n if (!color) {\n color = '';\n }\n }\n if (REG_FN_MATH_CALC.test(color)) {\n color = cssCalc(color, opt);\n }\n if (color === 'transparent') {\n switch (format) {\n case VAL_SPEC: {\n if (cacheKey) {\n cachedResults.set(cacheKey, color);\n }\n return color;\n }\n case 'hex': {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n case 'hexAlpha': {\n res = '#00000000';\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n case VAL_COMP:\n default: {\n res = RGB_TRANSPARENT;\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n }\n } else if (color === 'currentcolor') {\n if (format === VAL_SPEC) {\n if (cacheKey) {\n cachedResults.set(cacheKey, color);\n }\n return color;\n }\n if (currentColor) {\n if (currentColor.startsWith(FN_MIX)) {\n [cs, r, g, b, alpha] = resolveColorMix(currentColor, opt);\n } else if (currentColor.startsWith(FN_COLOR)) {\n [cs, r, g, b, alpha] = resolveColorFunc(currentColor, opt);\n } else {\n [cs, r, g, b, alpha] = resolveColorValue(currentColor, opt);\n }\n } else if (format === VAL_COMP) {\n res = RGB_TRANSPARENT;\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n } else if (format === VAL_SPEC) {\n if (color.startsWith(FN_MIX)) {\n res = resolveColorMix(color, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n } else if (color.startsWith(FN_COLOR)) {\n [cs, r, g, b, alpha] = resolveColorFunc(color, opt);\n if (alpha === 1) {\n res = `color(${cs} ${r} ${g} ${b})`;\n } else {\n res = `color(${cs} ${r} ${g} ${b} / ${alpha})`;\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n } else {\n const rgb = resolveColorValue(color, opt);\n if (!rgb) {\n res = '';\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n [cs, r, g, b, alpha] = rgb;\n if (cs === 'rgb') {\n if (alpha === 1) {\n res = `${cs}(${r}, ${g}, ${b})`;\n } else {\n res = `${cs}a(${r}, ${g}, ${b}, ${alpha})`;\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n if (alpha === 1) {\n res = `${cs}(${r} ${g} ${b})`;\n } else {\n res = `${cs}(${r} ${g} ${b} / ${alpha})`;\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n }\n } else if (/currentcolor/.test(color)) {\n if (currentColor) {\n color = color.replace(/currentcolor/g, currentColor);\n }\n if (/transparent/.test(color)) {\n color = color.replace(/transparent/g, RGB_TRANSPARENT);\n }\n if (color.startsWith(FN_MIX)) {\n [cs, r, g, b, alpha] = resolveColorMix(color, opt);\n }\n } else if (/transparent/.test(color)) {\n color = color.replace(/transparent/g, RGB_TRANSPARENT);\n if (color.startsWith(FN_MIX)) {\n [cs, r, g, b, alpha] = resolveColorMix(color, opt);\n }\n } else if (color.startsWith(FN_MIX)) {\n [cs, r, g, b, alpha] = resolveColorMix(color, opt);\n } else if (color.startsWith(FN_COLOR)) {\n [cs, r, g, b, alpha] = resolveColorFunc(color, opt);\n } else if (color) {\n [cs, r, g, b, alpha] = resolveColorValue(color, opt);\n }\n switch (format) {\n case 'hex': {\n let hex;\n if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(alpha) || alpha === 0) {\n hex = null;\n } else {\n hex = convertRgbToHex([r, g, b]);\n }\n if (key) {\n res = [key, hex];\n } else {\n res = hex;\n }\n break;\n }\n case 'hexAlpha': {\n let hex;\n if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(alpha)) {\n hex = null;\n } else {\n hex = convertRgbToHex([r, g, b, alpha]);\n }\n if (key) {\n res = [key, hex];\n } else {\n res = hex;\n }\n break;\n }\n case VAL_COMP:\n default: {\n let value;\n switch (cs) {\n case 'rgb': {\n if (alpha === 1) {\n value = `${cs}(${r}, ${g}, ${b})`;\n } else {\n value = `${cs}a(${r}, ${g}, ${b}, ${alpha})`;\n }\n break;\n }\n case 'lab':\n case 'lch':\n case 'oklab':\n case 'oklch': {\n if (alpha === 1) {\n value = `${cs}(${r} ${g} ${b})`;\n } else {\n value = `${cs}(${r} ${g} ${b} / ${alpha})`;\n }\n break;\n }\n // color()\n default: {\n if (alpha === 1) {\n value = `color(${cs} ${r} ${g} ${b})`;\n } else {\n value = `color(${cs} ${r} ${g} ${b} / ${alpha})`;\n }\n }\n }\n if (key) {\n res = [key, value];\n } else {\n res = value;\n }\n }\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, res);\n }\n return res;\n};\n", "/**\n * util.js\n */\n\nimport { isString } from './common.js';\nimport { resolve } from './resolve.js';\n\n/* constants */\nimport { NAMED_COLORS } from './color.js';\nimport { SYN_COLOR_TYPE, SYN_MIX, VAL_SPEC } from './constant.js';\nconst DEC = 10;\nconst HEX = 16;\nconst DEG = 360;\nconst DEG_HALF = 180;\n\n/* regexp */\nconst REG_COLOR = new RegExp(`^(?:${SYN_COLOR_TYPE})$`);\nconst REG_MIX = new RegExp(`${SYN_MIX}`);\n\n/**\n * is color\n * @param {string} value - value\n * @returns {boolean} - result\n */\nexport const isColor = value => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n if (value) {\n if (/^[a-z]+$/.test(value)) {\n if (/^(?:currentcolor|transparent)$/.test(value) ||\n Object.prototype.hasOwnProperty.call(NAMED_COLORS, value)) {\n return true;\n }\n } else if (REG_COLOR.test(value) || REG_MIX.test(value)) {\n return true;\n } else {\n value = resolve(value, {\n format: VAL_SPEC\n });\n if (value) {\n return true;\n }\n return false;\n }\n }\n }\n return false;\n};\n\n/**\n * value to JSON string\n * @param {*} value - value\n * @param {boolean} func - stringify function\n * @returns {string} - stringified value in JSON notation\n */\nexport const valueToJsonString = (value, func = false) => {\n if (typeof value === 'undefined') {\n return '';\n }\n const res = JSON.stringify(value, (key, val) => {\n let replacedValue;\n if (typeof val === 'undefined') {\n replacedValue = null;\n } else if (typeof val === 'function') {\n if (func) {\n replacedValue = val.toString();\n } else {\n replacedValue = val.name;\n }\n } else if (val instanceof Map || val instanceof Set) {\n replacedValue = [...val];\n } else if (typeof val === 'bigint') {\n replacedValue = val.toString();\n } else {\n replacedValue = val;\n }\n return replacedValue;\n });\n return res;\n};\n\n/**\n * round to specified precision\n * @param {number} value - value\n * @param {number} bit - minimum bits\n * @returns {number} - rounded value\n */\nexport const roundToPrecision = (value, bit = 0) => {\n if (!Number.isFinite(value)) {\n throw new TypeError(`${value} is not a number.`);\n }\n if (!Number.isFinite(bit)) {\n throw new TypeError(`${bit} is not a number.`);\n } else if (bit < 0 || bit > HEX) {\n throw new RangeError(`${bit} is not between 0 and ${HEX}.`);\n }\n if (bit === 0) {\n return Math.round(value);\n }\n let val;\n if (bit === HEX) {\n val = value.toPrecision(6);\n } else if (bit < DEC) {\n val = value.toPrecision(4);\n } else {\n val = value.toPrecision(5);\n }\n return parseFloat(val);\n};\n\n/**\n * interpolate hue\n * @param {number} hueA - hue\n * @param {number} hueB - hue\n * @param {string} arc - arc\n * @returns {Array} - [hueA, hueB]\n */\nexport const interpolateHue = (hueA, hueB, arc = 'shorter') => {\n if (!Number.isFinite(hueA)) {\n throw new TypeError(`${hueA} is not a number.`);\n }\n if (!Number.isFinite(hueB)) {\n throw new TypeError(`${hueB} is not a number.`);\n }\n switch (arc) {\n case 'decreasing': {\n if (hueB > hueA) {\n hueA += DEG;\n }\n break;\n }\n case 'increasing': {\n if (hueB < hueA) {\n hueB += DEG;\n }\n break;\n }\n case 'longer': {\n if (hueB > hueA && hueB < hueA + DEG_HALF) {\n hueA += DEG;\n } else if (hueB > hueA + DEG_HALF * -1 && hueB <= hueA) {\n hueB += DEG;\n }\n break;\n }\n case 'shorter':\n default: {\n if (hueB > hueA + DEG_HALF) {\n hueA += DEG;\n } else if (hueB < hueA + DEG_HALF * -1) {\n hueB += DEG;\n }\n }\n }\n return [hueA, hueB];\n};\n", "/**\n * color.js\n *\n * Ref: CSS Color Module Level 4\n * Sample code for Color Conversions\n * https://w3c.github.io/csswg-drafts/css-color-4/#color-conversion-code\n */\n\nimport { isString } from './common.js';\nimport { interpolateHue, roundToPrecision } from './util.js';\n\n/* constants */\nimport {\n ANGLE, CS_HUE_CAPT, CS_MIX, CS_RGB, CS_XYZ, FN_COLOR, FN_MIX, NONE, NUM, PCT,\n SYN_COLOR_TYPE, SYN_FN_COLOR, SYN_HSL, SYN_HSL_LV3, SYN_LCH, SYN_MIX,\n SYN_MIX_CAPT, SYN_MOD, SYN_RGB_LV3, VAL_COMP, VAL_SPEC\n} from './constant.js';\nconst VAL_MIX = 'mixValue';\n\n/* numeric constants */\nconst PPTH = 0.001;\nconst HALF = 0.5;\nconst DUO = 2;\nconst TRIA = 3;\nconst QUAT = 4;\nconst OCT = 8;\nconst DEC = 10;\nconst DOZ = 12;\nconst HEX = 16;\nconst SEXA = 60;\nconst DEG = 360;\nconst MAX_PCT = 100;\nconst MAX_RGB = 255;\nconst POW_SQR = 2;\nconst POW_CUBE = 3;\nconst POW_LINEAR = 2.4;\nconst LINEAR_COEF = 12.92;\nconst LINEAR_OFFSET = 0.055;\nconst LAB_L = 116;\nconst LAB_A = 500;\nconst LAB_B = 200;\nconst LAB_EPSILON = 216 / 24389;\nconst LAB_KAPPA = 24389 / 27;\n\n/* white point */\nconst D50 = [0.3457 / 0.3585, 1.00000, (1.0 - 0.3457 - 0.3585) / 0.3585];\nconst MATRIX_D50_TO_D65 = [\n [0.955473421488075, -0.02309845494876471, 0.06325924320057072],\n [-0.0283697093338637, 1.0099953980813041, 0.021041441191917323],\n [0.012314014864481998, -0.020507649298898964, 1.330365926242124]\n];\nconst MATRIX_D65_TO_D50 = [\n [1.0479297925449969, 0.022946870601609652, -0.05019226628920524],\n [0.02962780877005599, 0.9904344267538799, -0.017073799063418826],\n [-0.009243040646204504, 0.015055191490298152, 0.7518742814281371]\n];\n\n/* color space */\nconst MATRIX_L_RGB_TO_XYZ = [\n [506752 / 1228815, 87881 / 245763, 12673 / 70218],\n [87098 / 409605, 175762 / 245763, 12673 / 175545],\n [7918 / 409605, 87881 / 737289, 1001167 / 1053270]\n];\nconst MATRIX_XYZ_TO_L_RGB = [\n [12831 / 3959, -329 / 214, -1974 / 3959],\n [-851781 / 878810, 1648619 / 878810, 36519 / 878810],\n [705 / 12673, -2585 / 12673, 705 / 667]\n];\nconst MATRIX_XYZ_TO_LMS = [\n [0.8190224379967030, 0.3619062600528904, -0.1288737815209879],\n [0.0329836539323885, 0.9292868615863434, 0.0361446663506424],\n [0.0481771893596242, 0.2642395317527308, 0.6335478284694309]\n];\nconst MATRIX_LMS_TO_XYZ = [\n [1.2268798758459243, -0.5578149944602171, 0.2813910456659647],\n [-0.0405757452148008, 1.1122868032803170, -0.0717110580655164],\n [-0.0763729366746601, -0.4214933324022432, 1.5869240198367816]\n];\nconst MATRIX_OKLAB_TO_LMS = [\n [1.0000000000000000, 0.3963377773761749, 0.2158037573099136],\n [1.0000000000000000, -0.1055613458156586, -0.0638541728258133],\n [1.0000000000000000, -0.0894841775298119, -1.2914855480194092]\n];\nconst MATRIX_LMS_TO_OKLAB = [\n [0.2104542683093140, 0.7936177747023054, -0.0040720430116193],\n [1.9779985324311684, -2.4285922420485799, 0.4505937096174110],\n [0.0259040424655478, 0.7827717124575296, -0.8086757549230774]\n];\nconst MATRIX_P3_TO_XYZ = [\n [608311 / 1250200, 189793 / 714400, 198249 / 1000160],\n [35783 / 156275, 247089 / 357200, 198249 / 2500400],\n [0 / 1, 32229 / 714400, 5220557 / 5000800]\n];\nconst MATRIX_REC2020_TO_XYZ = [\n [63426534 / 99577255, 20160776 / 139408157, 47086771 / 278816314],\n [26158966 / 99577255, 472592308 / 697040785, 8267143 / 139408157],\n [0 / 1, 19567812 / 697040785, 295819943 / 278816314]\n];\nconst MATRIX_A98_TO_XYZ = [\n [573536 / 994567, 263643 / 1420810, 187206 / 994567],\n [591459 / 1989134, 6239551 / 9945670, 374412 / 4972835],\n [53769 / 1989134, 351524 / 4972835, 4929758 / 4972835]\n];\nconst MATRIX_PROPHOTO_TO_XYZ_D50 = [\n [0.79776664490064230, 0.13518129740053308, 0.03134773412839220],\n [0.28807482881940130, 0.71183523424187300, 0.00008993693872564],\n [0.00000000000000000, 0.00000000000000000, 0.82510460251046020]\n];\n\n/* regexp */\nconst REG_COLOR = new RegExp(`^(?:${SYN_COLOR_TYPE})$`);\nconst REG_CS_HUE = new RegExp(`^${CS_HUE_CAPT}$`);\nconst REG_CS_XYZ = /^xyz(?:-d(?:50|65))?$/;\nconst REG_CURRENT = /^currentColor$/i;\nconst REG_FN_COLOR = new RegExp(`^color\\\\(\\\\s*(${SYN_FN_COLOR})\\\\s*\\\\)$`);\nconst REG_HSL = new RegExp(`^hsla?\\\\(\\\\s*(${SYN_HSL}|${SYN_HSL_LV3})\\\\s*\\\\)$`);\nconst REG_HWB = new RegExp(`^hwb\\\\(\\\\s*(${SYN_HSL})\\\\s*\\\\)$`);\nconst REG_LAB = new RegExp(`^lab\\\\(\\\\s*(${SYN_MOD})\\\\s*\\\\)$`);\nconst REG_LCH = new RegExp(`^lch\\\\(\\\\s*(${SYN_LCH})\\\\s*\\\\)$`);\nconst REG_MIX = new RegExp(`^${SYN_MIX}$`);\nconst REG_MIX_CAPT = new RegExp(`^${SYN_MIX_CAPT}$`);\nconst REG_MIX_NEST = new RegExp(`${SYN_MIX}`, 'g');\nconst REG_OKLAB = new RegExp(`^oklab\\\\(\\\\s*(${SYN_MOD})\\\\s*\\\\)$`);\nconst REG_OKLCH = new RegExp(`^oklch\\\\(\\\\s*(${SYN_LCH})\\\\s*\\\\)$`);\nconst REG_SPEC = /^(?:specifi|comput)edValue$/;\n\n/* named colors */\nexport const NAMED_COLORS = {\n aliceblue: [0xF0, 0xF8, 0xFF],\n antiquewhite: [0xFA, 0xEB, 0xD7],\n aqua: [0x00, 0xFF, 0xFF],\n aquamarine: [0x7F, 0xFF, 0xD4],\n azure: [0xF0, 0xFF, 0xFF],\n beige: [0xF5, 0xF5, 0xDC],\n bisque: [0xFF, 0xE4, 0xC4],\n black: [0x00, 0x00, 0x00],\n blanchedalmond: [0xFF, 0xEB, 0xCD],\n blue: [0x00, 0x00, 0xFF],\n blueviolet: [0x8A, 0x2B, 0xE2],\n brown: [0xA5, 0x2A, 0x2A],\n burlywood: [0xDE, 0xB8, 0x87],\n cadetblue: [0x5F, 0x9E, 0xA0],\n chartreuse: [0x7F, 0xFF, 0x00],\n chocolate: [0xD2, 0x69, 0x1E],\n coral: [0xFF, 0x7F, 0x50],\n cornflowerblue: [0x64, 0x95, 0xED],\n cornsilk: [0xFF, 0xF8, 0xDC],\n crimson: [0xDC, 0x14, 0x3C],\n cyan: [0x00, 0xFF, 0xFF],\n darkblue: [0x00, 0x00, 0x8B],\n darkcyan: [0x00, 0x8B, 0x8B],\n darkgoldenrod: [0xB8, 0x86, 0x0B],\n darkgray: [0xA9, 0xA9, 0xA9],\n darkgreen: [0x00, 0x64, 0x00],\n darkgrey: [0xA9, 0xA9, 0xA9],\n darkkhaki: [0xBD, 0xB7, 0x6B],\n darkmagenta: [0x8B, 0x00, 0x8B],\n darkolivegreen: [0x55, 0x6B, 0x2F],\n darkorange: [0xFF, 0x8C, 0x00],\n darkorchid: [0x99, 0x32, 0xCC],\n darkred: [0x8B, 0x00, 0x00],\n darksalmon: [0xE9, 0x96, 0x7A],\n darkseagreen: [0x8F, 0xBC, 0x8F],\n darkslateblue: [0x48, 0x3D, 0x8B],\n darkslategray: [0x2F, 0x4F, 0x4F],\n darkslategrey: [0x2F, 0x4F, 0x4F],\n darkturquoise: [0x00, 0xCE, 0xD1],\n darkviolet: [0x94, 0x00, 0xD3],\n deeppink: [0xFF, 0x14, 0x93],\n deepskyblue: [0x00, 0xBF, 0xFF],\n dimgray: [0x69, 0x69, 0x69],\n dimgrey: [0x69, 0x69, 0x69],\n dodgerblue: [0x1E, 0x90, 0xFF],\n firebrick: [0xB2, 0x22, 0x22],\n floralwhite: [0xFF, 0xFA, 0xF0],\n forestgreen: [0x22, 0x8B, 0x22],\n fuchsia: [0xFF, 0x00, 0xFF],\n gainsboro: [0xDC, 0xDC, 0xDC],\n ghostwhite: [0xF8, 0xF8, 0xFF],\n gold: [0xFF, 0xD7, 0x00],\n goldenrod: [0xDA, 0xA5, 0x20],\n gray: [0x80, 0x80, 0x80],\n green: [0x00, 0x80, 0x00],\n greenyellow: [0xAD, 0xFF, 0x2F],\n grey: [0x80, 0x80, 0x80],\n honeydew: [0xF0, 0xFF, 0xF0],\n hotpink: [0xFF, 0x69, 0xB4],\n indianred: [0xCD, 0x5C, 0x5C],\n indigo: [0x4B, 0x00, 0x82],\n ivory: [0xFF, 0xFF, 0xF0],\n khaki: [0xF0, 0xE6, 0x8C],\n lavender: [0xE6, 0xE6, 0xFA],\n lavenderblush: [0xFF, 0xF0, 0xF5],\n lawngreen: [0x7C, 0xFC, 0x00],\n lemonchiffon: [0xFF, 0xFA, 0xCD],\n lightblue: [0xAD, 0xD8, 0xE6],\n lightcoral: [0xF0, 0x80, 0x80],\n lightcyan: [0xE0, 0xFF, 0xFF],\n lightgoldenrodyellow: [0xFA, 0xFA, 0xD2],\n lightgray: [0xD3, 0xD3, 0xD3],\n lightgreen: [0x90, 0xEE, 0x90],\n lightgrey: [0xD3, 0xD3, 0xD3],\n lightpink: [0xFF, 0xB6, 0xC1],\n lightsalmon: [0xFF, 0xA0, 0x7A],\n lightseagreen: [0x20, 0xB2, 0xAA],\n lightskyblue: [0x87, 0xCE, 0xFA],\n lightslategray: [0x77, 0x88, 0x99],\n lightslategrey: [0x77, 0x88, 0x99],\n lightsteelblue: [0xB0, 0xC4, 0xDE],\n lightyellow: [0xFF, 0xFF, 0xE0],\n lime: [0x00, 0xFF, 0x00],\n limegreen: [0x32, 0xCD, 0x32],\n linen: [0xFA, 0xF0, 0xE6],\n magenta: [0xFF, 0x00, 0xFF],\n maroon: [0x80, 0x00, 0x00],\n mediumaquamarine: [0x66, 0xCD, 0xAA],\n mediumblue: [0x00, 0x00, 0xCD],\n mediumorchid: [0xBA, 0x55, 0xD3],\n mediumpurple: [0x93, 0x70, 0xDB],\n mediumseagreen: [0x3C, 0xB3, 0x71],\n mediumslateblue: [0x7B, 0x68, 0xEE],\n mediumspringgreen: [0x00, 0xFA, 0x9A],\n mediumturquoise: [0x48, 0xD1, 0xCC],\n mediumvioletred: [0xC7, 0x15, 0x85],\n midnightblue: [0x19, 0x19, 0x70],\n mintcream: [0xF5, 0xFF, 0xFA],\n mistyrose: [0xFF, 0xE4, 0xE1],\n moccasin: [0xFF, 0xE4, 0xB5],\n navajowhite: [0xFF, 0xDE, 0xAD],\n navy: [0x00, 0x00, 0x80],\n oldlace: [0xFD, 0xF5, 0xE6],\n olive: [0x80, 0x80, 0x00],\n olivedrab: [0x6B, 0x8E, 0x23],\n orange: [0xFF, 0xA5, 0x00],\n orangered: [0xFF, 0x45, 0x00],\n orchid: [0xDA, 0x70, 0xD6],\n palegoldenrod: [0xEE, 0xE8, 0xAA],\n palegreen: [0x98, 0xFB, 0x98],\n paleturquoise: [0xAF, 0xEE, 0xEE],\n palevioletred: [0xDB, 0x70, 0x93],\n papayawhip: [0xFF, 0xEF, 0xD5],\n peachpuff: [0xFF, 0xDA, 0xB9],\n peru: [0xCD, 0x85, 0x3F],\n pink: [0xFF, 0xC0, 0xCB],\n plum: [0xDD, 0xA0, 0xDD],\n powderblue: [0xB0, 0xE0, 0xE6],\n purple: [0x80, 0x00, 0x80],\n rebeccapurple: [0x66, 0x33, 0x99],\n red: [0xFF, 0x00, 0x00],\n rosybrown: [0xBC, 0x8F, 0x8F],\n royalblue: [0x41, 0x69, 0xE1],\n saddlebrown: [0x8B, 0x45, 0x13],\n salmon: [0xFA, 0x80, 0x72],\n sandybrown: [0xF4, 0xA4, 0x60],\n seagreen: [0x2E, 0x8B, 0x57],\n seashell: [0xFF, 0xF5, 0xEE],\n sienna: [0xA0, 0x52, 0x2D],\n silver: [0xC0, 0xC0, 0xC0],\n skyblue: [0x87, 0xCE, 0xEB],\n slateblue: [0x6A, 0x5A, 0xCD],\n slategray: [0x70, 0x80, 0x90],\n slategrey: [0x70, 0x80, 0x90],\n snow: [0xFF, 0xFA, 0xFA],\n springgreen: [0x00, 0xFF, 0x7F],\n steelblue: [0x46, 0x82, 0xB4],\n tan: [0xD2, 0xB4, 0x8C],\n teal: [0x00, 0x80, 0x80],\n thistle: [0xD8, 0xBF, 0xD8],\n tomato: [0xFF, 0x63, 0x47],\n turquoise: [0x40, 0xE0, 0xD0],\n violet: [0xEE, 0x82, 0xEE],\n wheat: [0xF5, 0xDE, 0xB3],\n white: [0xFF, 0xFF, 0xFF],\n whitesmoke: [0xF5, 0xF5, 0xF5],\n yellow: [0xFF, 0xFF, 0x00],\n yellowgreen: [0x9A, 0xCD, 0x32]\n};\n\n/**\n * validate color components\n * @param {Array} arr - array of color components\n * @param {object} [opt] - options\n * @param {boolean} [opt.alpha] - alpha channel\n * @param {number} [opt.minLength] - min length\n * @param {number} [opt.maxLength] - max length\n * @param {number} [opt.minRange] - min range\n * @param {number} [opt.maxRange] - max range\n * @param {boolean} [opt.validateRange] - validate range\n * @returns {Array} - validated color components\n */\nexport const validateColorComponents = (arr, opt = {}) => {\n if (!Array.isArray(arr)) {\n throw new TypeError(`${arr} is not an array.`);\n }\n const {\n alpha = false,\n minLength = TRIA,\n maxLength = QUAT,\n minRange = 0,\n maxRange = 1,\n validateRange = true\n } = opt;\n if (!Number.isFinite(minLength)) {\n throw new TypeError(`${minLength} is not a number.`);\n }\n if (!Number.isFinite(maxLength)) {\n throw new TypeError(`${maxLength} is not a number.`);\n }\n if (!Number.isFinite(minRange)) {\n throw new TypeError(`${minRange} is not a number.`);\n }\n if (!Number.isFinite(maxRange)) {\n throw new TypeError(`${maxRange} is not a number.`);\n }\n const l = arr.length;\n if (l < minLength || l > maxLength) {\n throw new Error(`Unexpected array length ${l}.`);\n }\n let i = 0;\n while (i < l) {\n const v = arr[i];\n if (!Number.isFinite(v)) {\n throw new TypeError(`${v} is not a number.`);\n } else if (i < TRIA && validateRange && (v < minRange || v > maxRange)) {\n throw new RangeError(`${v} is not between ${minRange} and ${maxRange}.`);\n } else if (i === TRIA && (v < 0 || v > 1)) {\n throw new RangeError(`${v} is not between 0 and 1.`);\n }\n i++;\n }\n if (alpha && l === TRIA) {\n arr.push(1);\n }\n return arr;\n};\n\n/**\n * transform matrix\n * @param {Array.>} mtx - 3 * 3 matrix\n * @param {Array.} vct - vector\n * @param {boolean} skip - skip alidate\n * @returns {Array.} - [p1, p2, p3]\n */\nexport const transformMatrix = (mtx, vct, skip = false) => {\n if (!Array.isArray(mtx)) {\n throw new TypeError(`${mtx} is not an array.`);\n } else if (mtx.length !== TRIA) {\n throw new Error(`Unexpected array length ${mtx.length}.`);\n } else if (!skip) {\n for (let i of mtx) {\n i = validateColorComponents(i, {\n maxLength: TRIA,\n validateRange: false\n });\n }\n }\n const [\n [r1c1, r1c2, r1c3],\n [r2c1, r2c2, r2c3],\n [r3c1, r3c2, r3c3]\n ] = mtx;\n let v1, v2, v3;\n if (skip) {\n [v1, v2, v3] = vct;\n } else {\n [v1, v2, v3] = validateColorComponents(vct, {\n maxLength: TRIA,\n validateRange: false\n });\n }\n const p1 = r1c1 * v1 + r1c2 * v2 + r1c3 * v3;\n const p2 = r2c1 * v1 + r2c2 * v2 + r2c3 * v3;\n const p3 = r3c1 * v1 + r3c2 * v2 + r3c3 * v3;\n return [p1, p2, p3];\n};\n\n/**\n * normalize color components\n * @param {Array} colorA - array of color components [v1, v2, v3, v4]\n * @param {Array} colorB - array of color components [v1, v2, v3, v4]\n * @param {boolean} skip - skip validate\n * @returns {Array.>} - [colorA, colorB]\n */\nexport const normalizeColorComponents = (colorA, colorB, skip = false) => {\n if (!Array.isArray(colorA)) {\n throw new TypeError(`${colorA} is not an array.`);\n } else if (colorA.length !== QUAT) {\n throw new Error(`Unexpected array length ${colorA.length}.`);\n }\n if (!Array.isArray(colorB)) {\n throw new TypeError(`${colorB} is not an array.`);\n } else if (colorB.length !== QUAT) {\n throw new Error(`Unexpected array length ${colorB.length}.`);\n }\n let i = 0;\n while (i < QUAT) {\n if (colorA[i] === NONE && colorB[i] === NONE) {\n colorA[i] = 0;\n colorB[i] = 0;\n } else if (colorA[i] === NONE) {\n colorA[i] = colorB[i];\n } else if (colorB[i] === NONE) {\n colorB[i] = colorA[i];\n }\n i++;\n }\n if (!skip) {\n colorA = validateColorComponents(colorA, {\n minLength: QUAT,\n validateRange: false\n });\n colorB = validateColorComponents(colorB, {\n minLength: QUAT,\n validateRange: false\n });\n }\n return [colorA, colorB];\n};\n\n/**\n * number to hex string\n * @param {number} value - color value\n * @returns {string} - hex string\n */\nexport const numberToHexString = value => {\n if (!Number.isFinite(value)) {\n throw new TypeError(`${value} is not a number.`);\n } else {\n value = Math.round(value);\n if (value < 0 || value > MAX_RGB) {\n throw new RangeError(`${value} is not between 0 and ${MAX_RGB}.`);\n }\n }\n let hex = value.toString(HEX);\n if (hex.length === 1) {\n hex = `0${hex}`;\n }\n return hex;\n};\n\n/**\n * angle to deg\n * @param {string} angle - angle\n * @returns {number} - deg: 0..360\n */\nexport const angleToDeg = angle => {\n if (isString(angle)) {\n angle = angle.trim();\n } else {\n throw new TypeError(`${angle} is not a string.`);\n }\n const GRAD = DEG / 400;\n const RAD = DEG / (Math.PI * DUO);\n const reg = new RegExp(`^(${NUM})(${ANGLE})?$`);\n if (!reg.test(angle)) {\n throw new SyntaxError(`Invalid property value: ${angle}`);\n }\n const [, val, unit] = angle.match(reg);\n const value = val[0] === '.' ? `0${val}` : val;\n let deg;\n switch (unit) {\n case 'grad':\n deg = parseFloat(value) * GRAD;\n break;\n case 'rad':\n deg = parseFloat(value) * RAD;\n break;\n case 'turn':\n deg = parseFloat(value) * DEG;\n break;\n default:\n deg = parseFloat(value);\n }\n deg %= DEG;\n if (deg < 0) {\n deg += DEG;\n } else if (Object.is(deg, -0)) {\n deg = 0;\n }\n return deg;\n};\n\n/**\n * parse alpha\n * @param {?string} [alpha] - alpha value\n * @returns {number} - alpha: 0..1\n */\nexport const parseAlpha = alpha => {\n if (isString(alpha)) {\n alpha = alpha.trim();\n if (!alpha) {\n alpha = 1;\n } else if (alpha === NONE) {\n alpha = 0;\n } else {\n if (alpha[0] === '.') {\n alpha = `0${alpha}`;\n }\n if (alpha.endsWith('%')) {\n alpha = parseFloat(alpha) / MAX_PCT;\n } else {\n alpha = parseFloat(alpha);\n }\n if (!Number.isFinite(alpha)) {\n throw new TypeError(`${alpha} is not a number.`);\n }\n if (alpha < PPTH) {\n alpha = 0;\n } else if (alpha > 1) {\n alpha = 1;\n } else {\n alpha = parseFloat(alpha.toFixed(3));\n }\n }\n } else {\n alpha = 1;\n }\n return alpha;\n};\n\n/**\n * parse hex alpha\n * @param {string} value - alpha value in hex string\n * @returns {number} - alpha: 0..1\n */\nexport const parseHexAlpha = value => {\n if (isString(value)) {\n if (value === '') {\n throw new SyntaxError('Invalid property value: (empty string)');\n }\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n let alpha = parseInt(value, HEX);\n if (alpha <= 0) {\n return 0;\n }\n if (alpha >= MAX_RGB) {\n return 1;\n }\n const alphaMap = new Map();\n for (let i = 1; i < MAX_PCT; i++) {\n alphaMap.set(Math.round(i * MAX_RGB / MAX_PCT), i);\n }\n if (alphaMap.has(alpha)) {\n alpha = alphaMap.get(alpha) / MAX_PCT;\n } else {\n alpha = Math.round(alpha / MAX_RGB / PPTH) * PPTH;\n }\n return parseFloat(alpha.toFixed(3));\n};\n\n/**\n * convert rgb to linear rgb\n * @param {Array.} rgb - [r, g, b] r|g|b: 0..255\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [r, g, b] r|g|b: 0..1\n */\nexport const convertRgbToLinearRgb = (rgb, skip = false) => {\n let rr, gg, bb;\n if (skip) {\n [rr, gg, bb] = rgb;\n } else {\n [rr, gg, bb] = validateColorComponents(rgb, {\n maxLength: TRIA,\n maxRange: MAX_RGB\n });\n }\n let r = rr / MAX_RGB;\n let g = gg / MAX_RGB;\n let b = bb / MAX_RGB;\n const COND_POW = 0.04045;\n if (r > COND_POW) {\n r = Math.pow((r + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n r /= LINEAR_COEF;\n }\n if (g > COND_POW) {\n g = Math.pow((g + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n g /= LINEAR_COEF;\n }\n if (b > COND_POW) {\n b = Math.pow((b + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n b /= LINEAR_COEF;\n }\n return [r, g, b];\n};\n\n/**\n * convert rgb to xyz\n * @param {Array.} rgb - [r, g, b, ?alpha] r|g|b: 0..255 alpha: 0..1\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const convertRgbToXyz = (rgb, skip = false) => {\n let r, g, b, alpha;\n if (skip) {\n [r, g, b, alpha] = rgb;\n } else {\n [r, g, b, alpha] = validateColorComponents(rgb, {\n alpha: true,\n maxRange: MAX_RGB\n });\n }\n const [rr, gg, bb] = convertRgbToLinearRgb([r, g, b], true);\n const [x, y, z] = transformMatrix(MATRIX_L_RGB_TO_XYZ, [rr, gg, bb], true);\n return [x, y, z, alpha];\n};\n\n/**\n * convert rgb to xyz-d50\n * @param {Array.} rgb - [r, g, b, ?alpha] r|g|b: 0..255 alpha: 0..1\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const convertRgbToXyzD50 = rgb => {\n const [xx, yy, zz, alpha] = convertRgbToXyz(rgb);\n const [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [xx, yy, zz], true);\n return [x, y, z, alpha];\n};\n\n/**\n * convert rgb to hex color\n * @param {Array.} rgb - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1\n * @returns {string} - hex color\n */\nexport const convertRgbToHex = rgb => {\n const [r, g, b, alpha] = validateColorComponents(rgb, {\n alpha: true,\n maxRange: MAX_RGB\n });\n const rr = numberToHexString(r);\n const gg = numberToHexString(g);\n const bb = numberToHexString(b);\n const aa = numberToHexString(alpha * MAX_RGB);\n let hex;\n if (aa === 'ff') {\n hex = `#${rr}${gg}${bb}`;\n } else {\n hex = `#${rr}${gg}${bb}${aa}`;\n }\n return hex;\n};\n\n/**\n * convert linear rgb to rgb\n * @param {Array.} rgb - [r, g, b] r|g|b: 0..1\n * @param {boolean} round - round result\n * @returns {Array.} - [r, g, b] r|g|b: 0..255\n */\nexport const convertLinearRgbToRgb = (rgb, round = false) => {\n let [r, g, b] = validateColorComponents(rgb, {\n maxLength: TRIA\n });\n const COND_POW = 809 / 258400;\n if (r > COND_POW) {\n r = Math.pow(r, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n r *= LINEAR_COEF;\n }\n r *= MAX_RGB;\n if (g > COND_POW) {\n g = Math.pow(g, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n g *= LINEAR_COEF;\n }\n g *= MAX_RGB;\n if (b > COND_POW) {\n b = Math.pow(b, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n b *= LINEAR_COEF;\n }\n b *= MAX_RGB;\n return [\n round ? Math.round(r) : r,\n round ? Math.round(g) : g,\n round ? Math.round(b) : b\n ];\n};\n\n/**\n * convert linear rgb to hex color\n * @param {Array.} rgb - [r, g, b, alpha] r|g|b|alpha: 0..1\n * @param {boolean} skip - skip validate\n * @returns {string} - hex color\n */\nexport const convertLinearRgbToHex = (rgb, skip = false) => {\n let r, g, b, alpha;\n if (skip) {\n [r, g, b, alpha] = rgb;\n } else {\n [r, g, b, alpha] = validateColorComponents(rgb, {\n minLength: QUAT\n });\n }\n [r, g, b] = convertLinearRgbToRgb([r, g, b], true);\n const rr = numberToHexString(r);\n const gg = numberToHexString(g);\n const bb = numberToHexString(b);\n const aa = numberToHexString(alpha * MAX_RGB);\n let hex;\n if (aa === 'ff') {\n hex = `#${rr}${gg}${bb}`;\n } else {\n hex = `#${rr}${gg}${bb}${aa}`;\n }\n return hex;\n};\n\n/**\n * convert xyz to hex color\n * @param {Array.} xyz - [x, y, z, alpha]\n * @returns {string} - hex color\n */\nexport const convertXyzToHex = xyz => {\n const [x, y, z, alpha] = validateColorComponents(xyz, {\n minLength: QUAT,\n validateRange: false\n });\n const [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n const hex = convertLinearRgbToHex([\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1),\n alpha\n ], true);\n return hex;\n};\n\n/**\n * convert xyz D50 to hex color\n * @param {Array.} xyz - [x, y, z, alpha]\n * @returns {string} - hex color\n */\nexport const convertXyzD50ToHex = xyz => {\n const [x, y, z, alpha] = validateColorComponents(xyz, {\n minLength: QUAT,\n validateRange: false\n });\n const xyzD65 = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n const [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, xyzD65, true);\n const hex = convertLinearRgbToHex([\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1),\n alpha\n ]);\n return hex;\n};\n\n/**\n * convert xyz to rgb\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1\n */\nexport const convertXyzToRgb = (xyz, skip = false) => {\n let x, y, z, alpha;\n if (skip) {\n [x, y, z, alpha] = xyz;\n } else {\n [x, y, z, alpha] = validateColorComponents(xyz, {\n validateRange: false\n });\n }\n let [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n [r, g, b] = convertLinearRgbToRgb([\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1)\n ], true);\n return [r, g, b, alpha];\n};\n\n/**\n * convert xyz to xyz-d50\n * @param {Array.} xyz - [x, y, z, alpha]\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const convertXyzToXyzD50 = xyz => {\n const [xx, yy, zz, alpha] = validateColorComponents(xyz, {\n validateRange: false\n });\n const [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [xx, yy, zz], true);\n return [x, y, z, alpha];\n};\n\n/**\n * convert xyz to hsl\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [h, s, l, alpha]\n */\nexport const convertXyzToHsl = (xyz, skip = false) => {\n const [rr, gg, bb, alpha] = convertXyzToRgb(xyz, skip);\n const r = rr / MAX_RGB;\n const g = gg / MAX_RGB;\n const b = bb / MAX_RGB;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n const l = (max + min) * HALF * MAX_PCT;\n let h, s;\n if (Math.round(l) === 0 || Math.round(l) === MAX_PCT) {\n h = NONE;\n s = NONE;\n } else {\n s = d / (1 - Math.abs(max + min - 1)) * MAX_PCT;\n if (s === 0) {\n h = NONE;\n } else {\n switch (max) {\n case r:\n h = (g - b) / d;\n break;\n case g:\n h = (b - r) / d + DUO;\n break;\n case b:\n default:\n h = (r - g) / d + QUAT;\n break;\n }\n h = h * SEXA % DEG;\n if (h < 0) {\n h += DEG;\n }\n }\n }\n return [h, s, l, alpha];\n};\n\n/**\n * convert xyz to hwb\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [h, w, b, alpha]\n */\nexport const convertXyzToHwb = (xyz, skip = false) => {\n const [r, g, b, alpha] = convertXyzToRgb(xyz, skip);\n const w = Math.min(r, g, b) / MAX_RGB;\n const bk = 1 - Math.max(r, g, b) / MAX_RGB;\n let h;\n if (w + bk === 1) {\n h = NONE;\n } else {\n [h] = convertXyzToHsl(xyz);\n }\n return [\n h,\n w * MAX_PCT,\n bk * MAX_PCT,\n alpha\n ];\n};\n\n/**\n * convert xyz to oklab\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [l, a, b, alpha]\n */\nexport const convertXyzToOklab = (xyz, skip = false) => {\n let x, y, z, alpha;\n if (skip) {\n [x, y, z, alpha] = xyz;\n } else {\n [x, y, z, alpha] = validateColorComponents(xyz, {\n validateRange: false\n });\n }\n const lms = transformMatrix(MATRIX_XYZ_TO_LMS, [x, y, z], true);\n const xyzLms = lms.map(c => Math.cbrt(c));\n let [l, a, b] = transformMatrix(MATRIX_LMS_TO_OKLAB, xyzLms, true);\n l = Math.min(Math.max(l, 0), 1);\n const lPct = Math.round(parseFloat(l.toFixed(QUAT)) * MAX_PCT);\n if (lPct === 0 || lPct === MAX_PCT) {\n a = NONE;\n b = NONE;\n }\n return [l, a, b, alpha];\n};\n\n/**\n * convert xyz to oklch\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [l, c, h, alpha]\n */\nexport const convertXyzToOklch = (xyz, skip = false) => {\n const [l, a, b, aa] = convertXyzToOklab(xyz, skip);\n let c, h;\n const lPct = Math.round(parseFloat(l.toFixed(QUAT)) * MAX_PCT);\n if (lPct === 0 || lPct === MAX_PCT) {\n c = NONE;\n h = NONE;\n } else {\n c =\n Math.max(Math.sqrt(Math.pow(a, POW_SQR) + Math.pow(b, POW_SQR)), 0);\n if (parseFloat(c.toFixed(QUAT)) === 0) {\n h = NONE;\n } else {\n h = Math.atan2(b, a) * DEG * HALF / Math.PI;\n if (h < 0) {\n h += DEG;\n }\n }\n }\n return [l, c, h, aa];\n};\n\n/**\n * convert xyz D50 to rgb\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1\n */\nexport const convertXyzD50ToRgb = (xyz, skip = false) => {\n let x, y, z, alpha;\n if (skip) {\n [x, y, z, alpha] = xyz;\n } else {\n [x, y, z, alpha] = validateColorComponents(xyz, {\n minLength: QUAT,\n validateRange: false\n });\n }\n const xyzD65 = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n const [r, g, b] = convertXyzToRgb(xyzD65, true);\n return [r, g, b, alpha];\n};\n\n/**\n * convert xyz-d50 to lab\n * @param {Array.} xyz - [x, y, z, a]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [l, a, b, alpha]\n */\nexport const convertXyzD50ToLab = (xyz, skip = false) => {\n let x, y, z, alpha;\n if (skip) {\n [x, y, z, alpha] = xyz;\n } else {\n [x, y, z, alpha] = validateColorComponents(xyz, {\n validateRange: false\n });\n }\n const xyzD50 = [x, y, z].map((val, i) => val / D50[i]);\n const [f0, f1, f2] = xyzD50.map(val => val > LAB_EPSILON\n ? Math.cbrt(val)\n : (val * LAB_KAPPA + HEX) / LAB_L\n );\n const l = Math.min(Math.max((LAB_L * f1) - HEX, 0), MAX_PCT);\n let a, b;\n if (l === 0 || l === MAX_PCT) {\n a = NONE;\n b = NONE;\n } else {\n a = (f0 - f1) * LAB_A;\n b = (f1 - f2) * LAB_B;\n }\n return [l, a, b, alpha];\n};\n\n/**\n * convert xyz-d50 to lch\n * @param {Array.} xyz - [x, y, z, alpha]\n * @param {boolean} skip - skip validate\n * @returns {Array.} - [l, c, h, alpha]\n */\nexport const convertXyzD50ToLch = (xyz, skip = false) => {\n const [l, a, b, alpha] = convertXyzD50ToLab(xyz, skip);\n let c, h;\n if (l === 0 || l === MAX_PCT) {\n c = NONE;\n h = NONE;\n } else {\n c = Math.max(Math.sqrt(Math.pow(a, POW_SQR) + Math.pow(b, POW_SQR)), 0);\n h = Math.atan2(b, a) * DEG * HALF / Math.PI;\n if (h < 0) {\n h += DEG;\n }\n }\n return [l, c, h, alpha];\n};\n\n/**\n * convert hex color to rgb\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1\n */\nexport const convertHexToRgb = value => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n if (!(/^#[\\da-f]{6}$/.test(value) || /^#[\\da-f]{3}$/.test(value) ||\n /^#[\\da-f]{8}$/.test(value) || /^#[\\da-f]{4}$/.test(value))) {\n throw new SyntaxError(`Invalid property value: ${value}`);\n }\n const arr = [];\n if (/^#[\\da-f]{6}$/.test(value)) {\n const [, r, g, b] = value.match(/^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/);\n arr.push(\n parseInt(r, HEX),\n parseInt(g, HEX),\n parseInt(b, HEX),\n 1\n );\n } else if (/^#[\\da-f]{3}$/.test(value)) {\n const [, r, g, b] = value.match(/^#([\\da-f])([\\da-f])([\\da-f])$/);\n arr.push(\n parseInt(`${r}${r}`, HEX),\n parseInt(`${g}${g}`, HEX),\n parseInt(`${b}${b}`, HEX),\n 1\n );\n } else if (/^#[\\da-f]{8}$/.test(value)) {\n const [, r, g, b, alpha] =\n value.match(/^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/);\n arr.push(\n parseInt(r, HEX),\n parseInt(g, HEX),\n parseInt(b, HEX),\n parseHexAlpha(alpha)\n );\n } else if (/^#[\\da-f]{4}$/.test(value)) {\n const [, r, g, b, alpha] =\n value.match(/^#([\\da-f])([\\da-f])([\\da-f])([\\da-f])$/);\n arr.push(\n parseInt(`${r}${r}`, HEX),\n parseInt(`${g}${g}`, HEX),\n parseInt(`${b}${b}`, HEX),\n parseHexAlpha(`${alpha}${alpha}`)\n );\n }\n return arr;\n};\n\n/**\n * convert hex color to linear rgb\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, alpha] r|g|b|alpha: 0..1\n */\nexport const convertHexToLinearRgb = value => {\n const [rr, gg, bb, alpha] = convertHexToRgb(value);\n const [r, g, b] = convertRgbToLinearRgb([rr, gg, bb], true);\n return [r, g, b, alpha];\n};\n\n/**\n * convert hex color to xyz\n * @param {string} value - color value\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const convertHexToXyz = value => {\n const [r, g, b, alpha] = convertHexToLinearRgb(value);\n const [x, y, z] = transformMatrix(MATRIX_L_RGB_TO_XYZ, [r, g, b], true);\n return [x, y, z, alpha];\n};\n\n/**\n * parse rgb()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|string} - ['rgb', r, g, b, alpha], '(empty)'\n */\nexport const parseRgb = (value, opt = {}) => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n const reg = new RegExp(`^rgba?\\\\(\\\\s*(${SYN_MOD}|${SYN_RGB_LV3})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const [, val] = value.match(reg);\n let [v1, v2, v3, v4] = val.replace(/[,/]/g, ' ').split(/\\s+/);\n let r, g, b;\n if (v1 === NONE) {\n r = 0;\n } else {\n if (v1[0] === '.') {\n v1 = `0${v1}`;\n }\n if (v1.endsWith('%')) {\n r = parseFloat(v1) * MAX_RGB / MAX_PCT;\n } else {\n r = parseFloat(v1);\n }\n r = Math.min(Math.max(roundToPrecision(r, OCT), 0), MAX_RGB);\n }\n if (v2 === NONE) {\n g = 0;\n } else {\n if (v2[0] === '.') {\n v2 = `0${v2}`;\n }\n if (v2.endsWith('%')) {\n g = parseFloat(v2) * MAX_RGB / MAX_PCT;\n } else {\n g = parseFloat(v2);\n }\n g = Math.min(Math.max(roundToPrecision(g, OCT), 0), MAX_RGB);\n }\n if (v3 === NONE) {\n b = 0;\n } else {\n if (v3[0] === '.') {\n v3 = `0${v3}`;\n }\n if (v3.endsWith('%')) {\n b = parseFloat(v3) * MAX_RGB / MAX_PCT;\n } else {\n b = parseFloat(v3);\n }\n b = Math.min(Math.max(roundToPrecision(b, OCT), 0), MAX_RGB);\n }\n const alpha = parseAlpha(v4);\n return [\n 'rgb',\n r,\n g,\n b,\n format === VAL_MIX && v4 === NONE ? NONE : alpha\n ];\n};\n\n/**\n * parse hsl()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['rgb', r, g, b, alpha], '(empty)', null\n */\nexport const parseHsl = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n if (!REG_HSL.test(value)) {\n switch (format) {\n case 'hsl':\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const [, val] = value.match(REG_HSL);\n let [h, s, l, alpha] = val.replace(/[,/]/g, ' ').split(/\\s+/);\n if (h === NONE) {\n if (format !== 'hsl') {\n h = 0;\n }\n } else {\n h = angleToDeg(h);\n }\n if (s === NONE) {\n if (format !== 'hsl') {\n s = 0;\n }\n } else {\n if (s[0] === '.') {\n s = `0${s}`;\n }\n s = Math.min(Math.max(parseFloat(s), 0), MAX_PCT);\n }\n if (l === NONE) {\n if (format !== 'hsl') {\n l = 0;\n }\n } else {\n if (l[0] === '.') {\n l = `0${l}`;\n }\n l = Math.min(Math.max(parseFloat(l), 0), MAX_PCT);\n }\n if (alpha !== NONE || format !== 'hsl') {\n alpha = parseAlpha(alpha);\n }\n if (format === 'hsl') {\n return [format, h, s, l, alpha];\n }\n const ll = l / MAX_PCT;\n const sa = s / MAX_PCT * Math.min(ll, 1 - ll);\n const rk = (h / DEG * DOZ) % DOZ;\n const gk = (8 + h / DEG * DOZ) % DOZ;\n const bk = (4 + h / DEG * DOZ) % DOZ;\n const r =\n ll - sa * Math.max(-1, Math.min(rk - TRIA, TRIA ** POW_SQR - rk, 1));\n const g =\n ll - sa * Math.max(-1, Math.min(gk - TRIA, TRIA ** POW_SQR - gk, 1));\n const b =\n ll - sa * Math.max(-1, Math.min(bk - TRIA, TRIA ** POW_SQR - bk, 1));\n return [\n 'rgb',\n Math.min(Math.max(roundToPrecision(r * MAX_RGB, OCT), 0), MAX_RGB),\n Math.min(Math.max(roundToPrecision(g * MAX_RGB, OCT), 0), MAX_RGB),\n Math.min(Math.max(roundToPrecision(b * MAX_RGB, OCT), 0), MAX_RGB),\n alpha\n ];\n};\n\n/**\n * parse hwb()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['rgb', r, g, b, alpha], '(empty)', null\n */\nexport const parseHwb = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n if (!REG_HWB.test(value)) {\n switch (format) {\n case 'hwb':\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const [, val] = value.match(REG_HWB);\n let [h, w, b, alpha] = val.replace('/', ' ').split(/\\s+/);\n if (h === NONE) {\n if (format !== 'hwb') {\n h = 0;\n }\n } else {\n h = angleToDeg(h);\n }\n if (w === NONE) {\n if (format !== 'hwb') {\n w = 0;\n }\n } else {\n if (w[0] === '.') {\n w = `0${w}`;\n }\n w = Math.min(Math.max(parseFloat(w), 0), MAX_PCT) / MAX_PCT;\n }\n if (b === NONE) {\n if (format !== 'hwb') {\n b = 0;\n }\n } else {\n if (b[0] === '.') {\n b = `0${b}`;\n }\n b = Math.min(Math.max(parseFloat(b), 0), MAX_PCT) / MAX_PCT;\n }\n if (alpha !== NONE || format !== 'hwb') {\n alpha = parseAlpha(alpha);\n }\n if (format === 'hwb') {\n return [\n format,\n h,\n w === NONE ? w : w * MAX_PCT,\n b === NONE ? b : b * MAX_PCT,\n alpha\n ];\n }\n if (w + b >= 1) {\n const v = roundToPrecision(w / (w + b) * MAX_RGB, OCT);\n return ['rgb', v, v, v, alpha];\n }\n const factor = (1 - w - b) / MAX_RGB;\n let [, rr, gg, bb] = parseHsl(`hsl(${h} 100 50)`);\n rr = roundToPrecision((rr * factor + w) * MAX_RGB, OCT);\n gg = roundToPrecision((gg * factor + w) * MAX_RGB, OCT);\n bb = roundToPrecision((bb * factor + w) * MAX_RGB, OCT);\n return [\n 'rgb',\n Math.min(Math.max(rr, 0), MAX_RGB),\n Math.min(Math.max(gg, 0), MAX_RGB),\n Math.min(Math.max(bb, 0), MAX_RGB),\n alpha\n ];\n};\n\n/**\n + parse lab()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - [xyz-d50, x, y, z, alpha], ['lab', l, a, b, alpha], '(empty)', null\n */\nexport const parseLab = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n if (!REG_LAB.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const COEF_PCT = 1.25;\n const COND_POW = 8;\n const [, val] = value.match(REG_LAB);\n let [l, a, b, alpha] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n if (!REG_SPEC.test(format)) {\n l = 0;\n }\n } else {\n if (l[0] === '.') {\n l = `0${l}`;\n }\n if (l.endsWith('%')) {\n l = parseFloat(l);\n if (l > MAX_PCT) {\n l = MAX_PCT;\n }\n } else {\n l = parseFloat(l);\n }\n if (l < 0) {\n l = 0;\n }\n }\n if (a === NONE) {\n if (!REG_SPEC.test(format)) {\n a = 0;\n }\n } else {\n if (a[0] === '.') {\n a = `0${a}`;\n }\n if (a.endsWith('%')) {\n a = parseFloat(a) * COEF_PCT;\n } else {\n a = parseFloat(a);\n }\n }\n if (b === NONE) {\n if (!REG_SPEC.test(format)) {\n b = 0;\n }\n } else {\n if (b.endsWith('%')) {\n b = parseFloat(b) * COEF_PCT;\n } else {\n b = parseFloat(b);\n }\n }\n if (alpha !== NONE || !REG_SPEC.test(format)) {\n alpha = parseAlpha(alpha);\n }\n if (REG_SPEC.test(format)) {\n return [\n 'lab',\n l === NONE ? l : roundToPrecision(l, HEX),\n a === NONE ? a : roundToPrecision(a, HEX),\n b === NONE ? b : roundToPrecision(b, HEX),\n alpha\n ];\n }\n const fl = (l + HEX) / LAB_L;\n const fa = (a / LAB_A + fl);\n const fb = (fl - b / LAB_B);\n const powFl = Math.pow(fl, POW_CUBE);\n const powFa = Math.pow(fa, POW_CUBE);\n const powFb = Math.pow(fb, POW_CUBE);\n const xyz = [\n powFa > LAB_EPSILON ? powFa : (fa * LAB_L - HEX) / LAB_KAPPA,\n l > COND_POW ? powFl : l / LAB_KAPPA,\n powFb > LAB_EPSILON ? powFb : (fb * LAB_L - HEX) / LAB_KAPPA\n ];\n const [x, y, z] = xyz.map((val, i) => val * D50[i]);\n return ['xyz-d50',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha\n ];\n};\n\n/**\n + parse lch()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['xyz-d50', x, y, z, alpha], ['lch', l, c, h, alpha], '(empty)', null\n */\nexport const parseLch = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n if (!REG_LCH.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const COEF_PCT = 1.5;\n const [, val] = value.match(REG_LCH);\n let [l, c, h, alpha] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n if (!REG_SPEC.test(format)) {\n l = 0;\n }\n } else {\n if (l[0] === '.') {\n l = `0${l}`;\n }\n l = parseFloat(l);\n if (l < 0) {\n l = 0;\n }\n }\n if (c === NONE) {\n if (!REG_SPEC.test(format)) {\n c = 0;\n }\n } else {\n if (c[0] === '.') {\n c = `0${c}`;\n }\n if (c.endsWith('%')) {\n c = parseFloat(c) * COEF_PCT;\n } else {\n c = parseFloat(c);\n }\n }\n if (h === NONE) {\n if (!REG_SPEC.test(format)) {\n h = 0;\n }\n } else {\n h = angleToDeg(h);\n }\n if (alpha !== NONE || !REG_SPEC.test(format)) {\n alpha = parseAlpha(alpha);\n }\n if (REG_SPEC.test(format)) {\n return [\n 'lch',\n l === NONE ? l : roundToPrecision(l, HEX),\n c === NONE ? c : roundToPrecision(c, HEX),\n h === NONE ? h : roundToPrecision(h, HEX),\n alpha\n ];\n }\n const a = c * Math.cos(h * Math.PI / (DEG * HALF));\n const b = c * Math.sin(h * Math.PI / (DEG * HALF));\n const [, x, y, z] = parseLab(`lab(${l} ${a} ${b})`);\n return [\n 'xyz-d50',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha\n ];\n};\n\n/**\n * parse oklab()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['xyz-d65', x, y, z, alpha], ['oklab', l, a, b, alpha], '(empty)', null\n */\nexport const parseOklab = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n if (!REG_OKLAB.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const COEF_PCT = 0.4;\n const [, val] = value.match(REG_OKLAB);\n let [l, a, b, alpha] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n if (!REG_SPEC.test(format)) {\n l = 0;\n }\n } else {\n if (l[0] === '.') {\n l = `0${l}`;\n }\n if (l.endsWith('%')) {\n l = parseFloat(l) / MAX_PCT;\n } else {\n l = parseFloat(l);\n }\n if (l < 0) {\n l = 0;\n }\n }\n if (a === NONE) {\n if (!REG_SPEC.test(format)) {\n a = 0;\n }\n } else {\n if (a[0] === '.') {\n a = `0${a}`;\n }\n if (a.endsWith('%')) {\n a = parseFloat(a) * COEF_PCT / MAX_PCT;\n } else {\n a = parseFloat(a);\n }\n }\n if (b === NONE) {\n if (!REG_SPEC.test(format)) {\n b = 0;\n }\n } else {\n if (b.endsWith('%')) {\n b = parseFloat(b) * COEF_PCT / MAX_PCT;\n } else {\n b = parseFloat(b);\n }\n }\n if (alpha !== NONE || !REG_SPEC.test(format)) {\n alpha = parseAlpha(alpha);\n }\n if (REG_SPEC.test(format)) {\n return [\n 'oklab',\n l === NONE ? l : roundToPrecision(l, HEX),\n a === NONE ? a : roundToPrecision(a, HEX),\n b === NONE ? b : roundToPrecision(b, HEX),\n alpha\n ];\n }\n const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);\n const xyzLms = lms.map(c => Math.pow(c, POW_CUBE));\n const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms, true);\n return [\n 'xyz-d65',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha\n ];\n};\n\n/**\n * parse oklch()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['xyz-d65', x, y, z, alpha], ['oklch', l, c, h, alpha], '(empty)', null\n */\nexport const parseOklch = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n if (!REG_OKLCH.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const COEF_PCT = 0.4;\n const [, val] = value.match(REG_OKLCH);\n let [l, c, h, alpha] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n if (!REG_SPEC.test(format)) {\n l = 0;\n }\n } else {\n if (l[0] === '.') {\n l = `0${l}`;\n }\n if (l.endsWith('%')) {\n l = parseFloat(l) / MAX_PCT;\n } else {\n l = parseFloat(l);\n }\n if (l < 0) {\n l = 0;\n }\n }\n if (c === NONE) {\n if (!REG_SPEC.test(format)) {\n c = 0;\n }\n } else {\n if (c[0] === '.') {\n c = `0${c}`;\n }\n if (c.endsWith('%')) {\n c = parseFloat(c) * COEF_PCT / MAX_PCT;\n } else {\n c = parseFloat(c);\n }\n if (c < 0) {\n c = 0;\n }\n }\n if (h === NONE) {\n if (!REG_SPEC.test(format)) {\n h = 0;\n }\n } else {\n h = angleToDeg(h);\n }\n if (alpha !== NONE || !REG_SPEC.test(format)) {\n alpha = parseAlpha(alpha);\n }\n if (REG_SPEC.test(format)) {\n return [\n 'oklch',\n l === NONE ? l : roundToPrecision(l, HEX),\n c === NONE ? c : roundToPrecision(c, HEX),\n h === NONE ? h : roundToPrecision(h, HEX),\n alpha\n ];\n }\n const a = c * Math.cos(h * Math.PI / (DEG * HALF));\n const b = c * Math.sin(h * Math.PI / (DEG * HALF));\n const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);\n const xyzLms = lms.map(cl => Math.pow(cl, POW_CUBE));\n const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms, true);\n return [\n 'xyz-d65',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha\n ];\n};\n\n/**\n * parse color()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.colorSpace] - color space\n * @param {boolean} [opt.d50] - xyz in d50 white point\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['xyz-(d50|d65)', x, y, z, alpha], [cs, r, g, b, alpha], '(empty)', null\n */\nexport const parseColorFunc = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { colorSpace, d50, format } = opt;\n if (!REG_FN_COLOR.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const [, val] = value.match(REG_FN_COLOR);\n let [cs, v1, v2, v3, v4] = val.replace('/', ' ').split(/\\s+/);\n let r, g, b;\n if (cs === 'xyz') {\n cs = 'xyz-d65';\n }\n if (v1 === NONE) {\n r = 0;\n } else {\n if (v1[0] === '.') {\n v1 = `0${v1}`;\n }\n r = v1.endsWith('%') ? parseFloat(v1) / MAX_PCT : parseFloat(v1);\n }\n if (v2 === NONE) {\n g = 0;\n } else {\n if (v2[0] === '.') {\n v2 = `0${v2}`;\n }\n g = v2.endsWith('%') ? parseFloat(v2) / MAX_PCT : parseFloat(v2);\n }\n if (v3 === NONE) {\n b = 0;\n } else {\n if (v3[0] === '.') {\n v3 = `0${v3}`;\n }\n b = v3.endsWith('%') ? parseFloat(v3) / MAX_PCT : parseFloat(v3);\n }\n const alpha = parseAlpha(v4);\n if (REG_SPEC.test(format) || (format === VAL_MIX && cs === colorSpace)) {\n return [\n cs,\n v1 === NONE ? NONE : roundToPrecision(r, DEC),\n v2 === NONE ? NONE : roundToPrecision(g, DEC),\n v3 === NONE ? NONE : roundToPrecision(b, DEC),\n v4 === NONE ? NONE : alpha\n ];\n }\n let x, y, z;\n // srgb\n if (cs === 'srgb') {\n [x, y, z] = convertRgbToXyz([r * MAX_RGB, g * MAX_RGB, b * MAX_RGB]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // srgb-linear\n } else if (cs === 'srgb-linear') {\n [x, y, z] = transformMatrix(MATRIX_L_RGB_TO_XYZ, [r, g, b]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // display-p3\n } else if (cs === 'display-p3') {\n const linearRgb = convertRgbToLinearRgb([\n r * MAX_RGB,\n g * MAX_RGB,\n b * MAX_RGB\n ]);\n [x, y, z] = transformMatrix(MATRIX_P3_TO_XYZ, linearRgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // rec2020\n } else if (cs === 'rec2020') {\n const ALPHA = 1.09929682680944;\n const BETA = 0.018053968510807;\n const REC_COEF = 0.45;\n const rgb = [r, g, b].map(c => {\n let cl;\n if (c < BETA * REC_COEF * DEC) {\n cl = c / (REC_COEF * DEC);\n } else {\n cl = Math.pow((c + ALPHA - 1) / ALPHA, 1 / REC_COEF);\n }\n return cl;\n });\n [x, y, z] = transformMatrix(MATRIX_REC2020_TO_XYZ, rgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // a98-rgb\n } else if (cs === 'a98-rgb') {\n const POW_A98 = 563 / 256;\n const rgb = [r, g, b].map(c => {\n const cl = Math.pow(c, POW_A98);\n return cl;\n });\n [x, y, z] = transformMatrix(MATRIX_A98_TO_XYZ, rgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // prophoto-rgb\n } else if (cs === 'prophoto-rgb') {\n const POW_PROPHOTO = 1.8;\n const rgb = [r, g, b].map(c => {\n let cl;\n if (c > 1 / (HEX * DUO)) {\n cl = Math.pow(c, POW_PROPHOTO);\n } else {\n cl = c / HEX;\n }\n return cl;\n });\n [x, y, z] = transformMatrix(MATRIX_PROPHOTO_TO_XYZ_D50, rgb);\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n }\n // xyz, xyz-d50, xyz-d65\n } else if (/^xyz(?:-d(?:50|65))?$/.test(cs)) {\n [x, y, z] = [r, g, b];\n if (cs === 'xyz-d50') {\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n }\n } else if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n }\n return [\n d50 ? 'xyz-d50' : 'xyz-d65',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n format === VAL_MIX && v4 === NONE ? NONE : alpha\n ];\n};\n\n/**\n * parse color value\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {boolean} [opt.d50] - xyz in d50 white point\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - ['xyz-(d50|d65)', x, y, z, alpha], ['rgb', r, g, b, alpha]\n * - value, '(empty)', null\n */\nexport const parseColorValue = (value, opt = {}) => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { d50, format } = opt;\n // unknown color and/or invalid color\n if (!REG_COLOR.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n let x, y, z, alpha;\n // complement currentcolor as a missing color\n if (REG_CURRENT.test(value)) {\n if (format === VAL_COMP) {\n return ['rgb', 0, 0, 0, 0];\n }\n if (format === VAL_SPEC) {\n return value;\n }\n x = 0;\n y = 0;\n z = 0;\n alpha = 0;\n // named-color\n } else if (/^[a-z]+$/.test(value)) {\n if (Object.prototype.hasOwnProperty.call(NAMED_COLORS, value)) {\n if (format === VAL_SPEC) {\n return value;\n }\n const [r, g, b] = NAMED_COLORS[value];\n alpha = 1;\n if (format === VAL_COMP) {\n return ['rgb', r, g, b, alpha];\n }\n [x, y, z] = convertRgbToXyz([r, g, b], true);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n } else {\n if (format === VAL_COMP) {\n return ['rgb', 0, 0, 0, 0];\n }\n if (format === VAL_SPEC) {\n if (value === 'transparent') {\n return value;\n }\n return '';\n }\n if (format === VAL_MIX) {\n if (value === 'transparent') {\n return ['rgb', 0, 0, 0, 0];\n }\n return null;\n }\n x = 0;\n y = 0;\n z = 0;\n alpha = 0;\n }\n // hex-color\n } else if (value[0] === '#') {\n if (REG_SPEC.test(format)) {\n const rgb = convertHexToRgb(value);\n return ['rgb', ...rgb];\n }\n [x, y, z, alpha] = convertHexToXyz(value);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // lab()\n } else if (value.startsWith('lab')) {\n if (REG_SPEC.test(format)) {\n return parseLab(value, opt);\n }\n [, x, y, z, alpha] = parseLab(value);\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n }\n // lch()\n } else if (value.startsWith('lch')) {\n if (REG_SPEC.test(format)) {\n return parseLch(value, opt);\n }\n [, x, y, z, alpha] = parseLch(value);\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n }\n // oklab()\n } else if (value.startsWith('oklab')) {\n if (REG_SPEC.test(format)) {\n return parseOklab(value, opt);\n }\n [, x, y, z, alpha] = parseOklab(value);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // oklch()\n } else if (value.startsWith('oklch')) {\n if (REG_SPEC.test(format)) {\n return parseOklch(value, opt);\n }\n [, x, y, z, alpha] = parseOklch(value);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n } else {\n let r, g, b;\n // hsl()\n if (value.startsWith('hsl')) {\n [, r, g, b, alpha] = parseHsl(value);\n // hwb()\n } else if (value.startsWith('hwb')) {\n [, r, g, b, alpha] = parseHwb(value);\n // rgb()\n } else {\n [, r, g, b, alpha] = parseRgb(value, opt);\n }\n if (REG_SPEC.test(format)) {\n return [\n 'rgb',\n Math.round(r),\n Math.round(g),\n Math.round(b),\n alpha\n ];\n }\n [x, y, z] = convertRgbToXyz([r, g, b]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n }\n return [\n d50 ? 'xyz-d50' : 'xyz-d65',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha\n ];\n};\n\n/**\n * resolve color value\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.colorSpace] - color space\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - [cs, v1, v2, v3, alpha], value, '(empty)', null\n */\nexport const resolveColorValue = (value, opt = {}) => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { colorSpace, format } = opt;\n // unknown color and/or invalid color\n if (!REG_COLOR.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n let cs, r, g, b, alpha;\n // complement currentcolor as a missing color\n if (REG_CURRENT.test(value)) {\n if (format === VAL_SPEC) {\n return value;\n }\n r = 0;\n g = 0;\n b = 0;\n alpha = 0;\n // named-color\n } else if (/^[a-z]+$/.test(value)) {\n if (Object.prototype.hasOwnProperty.call(NAMED_COLORS, value)) {\n if (format === VAL_SPEC) {\n return value;\n }\n [r, g, b] = NAMED_COLORS[value];\n alpha = 1;\n } else {\n if (format === VAL_SPEC) {\n if (value === 'transparent') {\n return value;\n }\n return '';\n }\n if (format === VAL_MIX) {\n if (value === 'transparent') {\n return ['rgb', 0, 0, 0, 0];\n }\n return null;\n }\n r = 0;\n g = 0;\n b = 0;\n alpha = 0;\n }\n // hex-color\n } else if (value[0] === '#') {\n [r, g, b, alpha] = convertHexToRgb(value);\n // rgb()\n } else if (value.startsWith('rgb')) {\n [, r, g, b, alpha] = parseRgb(value, opt);\n // hsl()\n } else if (value.startsWith('hsl')) {\n [, r, g, b, alpha] = parseHsl(value, opt);\n // hwb()\n } else if (value.startsWith('hwb')) {\n [, r, g, b, alpha] = parseHwb(value, opt);\n // lab(), lch()\n } else if (/^l(?:ab|ch)/.test(value)) {\n let x, y, z;\n if (value.startsWith('lab')) {\n [cs, x, y, z, alpha] = parseLab(value, opt);\n } else {\n [cs, x, y, z, alpha] = parseLch(value, opt);\n }\n if (REG_SPEC.test(format)) {\n return [cs, x, y, z, alpha];\n }\n [r, g, b, alpha] = convertXyzD50ToRgb([x, y, z, alpha]);\n // oklab(), oklch()\n } else if (/^okl(?:ab|ch)/.test(value)) {\n let x, y, z;\n if (value.startsWith('oklab')) {\n [cs, x, y, z, alpha] = parseOklab(value, opt);\n } else {\n [cs, x, y, z, alpha] = parseOklch(value, opt);\n }\n if (REG_SPEC.test(format)) {\n return [cs, x, y, z, alpha];\n }\n [r, g, b, alpha] = convertXyzToRgb([x, y, z, alpha]);\n }\n if (format === VAL_MIX && colorSpace === 'srgb') {\n return [\n 'srgb',\n r / MAX_RGB,\n g / MAX_RGB,\n b / MAX_RGB,\n alpha\n ];\n }\n return [\n 'rgb',\n Math.round(r),\n Math.round(g),\n Math.round(b),\n alpha\n ];\n};\n\n/**\n * resolve color()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.colorSpace] - color space\n * @param {string} [opt.format] - output format\n * @returns {Array.|?string}\n * - [cs, v1, v2, v3, alpha], '(empty)', null\n */\nexport const resolveColorFunc = (value, opt = {}) => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { colorSpace, format } = opt;\n if (!REG_FN_COLOR.test(value)) {\n switch (format) {\n case VAL_MIX: {\n return null;\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n }\n const [cs, x, y, z, alpha] = parseColorFunc(value, opt);\n if (REG_SPEC.test(format)) {\n return [cs, x, y, z, alpha];\n }\n let r, g, b;\n if (format === VAL_MIX) {\n if (cs === colorSpace) {\n return [\n cs,\n x === NONE ? x : x,\n y === NONE ? y : y,\n z === NONE ? z : z,\n alpha\n ];\n }\n [r, g, b] = convertXyzToRgb([x, y, z], true);\n } else {\n [r, g, b] = convertXyzToRgb([x, y, z], true);\n }\n return ['rgb', r, g, b, alpha];\n};\n\n/**\n * convert color value to linear rgb\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.colorSpace] - color space\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [r, g, b, alpha] r|g|b|alpha: 0..1\n */\nexport const convertColorToLinearRgb = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { colorSpace, format } = opt;\n let cs, r, g, b, alpha, x, y, z;\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [cs, x, y, z, alpha] = xyz;\n if (cs === colorSpace) {\n return [x, y, z, alpha];\n }\n [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n } else if (value.startsWith(FN_COLOR)) {\n const [, val] = value.match(REG_FN_COLOR);\n const [cs] = val.replace('/', ' ').split(/\\s+/);\n if (cs === 'srgb-linear') {\n [, r, g, b, alpha] = resolveColorFunc(value, {\n format: VAL_COMP\n });\n } else {\n [, x, y, z, alpha] = parseColorFunc(value);\n [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n }\n } else {\n [, x, y, z, alpha] = parseColorValue(value);\n [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n }\n return [\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1),\n alpha\n ];\n};\n\n/**\n * convert color value to rgb\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1\n */\nexport const convertColorToRgb = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let r, g, b, alpha;\n if (format === VAL_MIX) {\n let rgb;\n if (value.startsWith(FN_COLOR)) {\n rgb = resolveColorFunc(value, opt);\n } else {\n rgb = resolveColorValue(value, opt);\n }\n if (rgb === null) {\n return rgb;\n }\n [, r, g, b, alpha] = rgb;\n } else if (value.startsWith(FN_COLOR)) {\n const [, val] = value.match(REG_FN_COLOR);\n const [cs] = val.replace('/', ' ').split(/\\s+/);\n if (cs === 'srgb') {\n [, r, g, b, alpha] = resolveColorFunc(value, {\n format: VAL_COMP\n });\n r *= MAX_RGB;\n g *= MAX_RGB;\n b *= MAX_RGB;\n } else {\n [, r, g, b, alpha] = resolveColorFunc(value);\n }\n } else if (/^(?:ok)?l(?:ab|ch)/.test(value)) {\n [r, g, b, alpha] = convertColorToLinearRgb(value);\n [r, g, b] = convertLinearRgbToRgb([r, g, b]);\n } else {\n [, r, g, b, alpha] = resolveColorValue(value, {\n format: VAL_COMP\n });\n }\n return [r, g, b, alpha];\n};\n\n/**\n * convert color value to xyz\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {boolean} [opt.d50] - xyz in d50 white point\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const convertColorToXyz = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { d50, format } = opt;\n let x, y, z, alpha;\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n const [, val] = value.match(REG_FN_COLOR);\n const [cs] = val.replace('/', ' ').split(/\\s+/);\n if (d50) {\n if (cs === 'xyz-d50') {\n [, x, y, z, alpha] = resolveColorFunc(value, {\n format: VAL_COMP\n });\n } else {\n [, x, y, z, alpha] = parseColorFunc(value, opt);\n }\n } else if (/^xyz(?:-d65)?$/.test(cs)) {\n [, x, y, z, alpha] = resolveColorFunc(value, {\n format: VAL_COMP\n });\n } else {\n [, x, y, z, alpha] = parseColorFunc(value);\n }\n } else {\n [, x, y, z, alpha] = parseColorValue(value, opt);\n }\n return [x, y, z, alpha];\n};\n\n/**\n * convert color value to hsl\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [h, s, l, alpha]\n */\nexport const convertColorToHsl = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let h, s, l, alpha, x, y, z;\n if (REG_HSL.test(value)) {\n [, h, s, l, alpha] = parseHsl(value, {\n format: 'hsl'\n });\n if (format === 'hsl') {\n return [\n Math.round(h),\n Math.round(s),\n Math.round(l),\n alpha\n ];\n }\n return [h, s, l, alpha];\n }\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value);\n } else {\n [, x, y, z, alpha] = parseColorValue(value);\n }\n [h, s, l] = convertXyzToHsl([x, y, z], true);\n if (format === 'hsl') {\n return [\n Math.round(h),\n Math.round(s),\n Math.round(l),\n alpha\n ];\n }\n return [h, s, l, alpha];\n};\n\n/**\n * convert color value to hwb\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [h, w, b, alpha]\n */\nexport const convertColorToHwb = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let h, w, b, alpha, x, y, z;\n if (REG_HWB.test(value)) {\n [, h, w, b, alpha] = parseHwb(value, {\n format: 'hwb'\n });\n if (format === 'hwb') {\n return [\n Math.round(h),\n Math.round(w),\n Math.round(b),\n alpha\n ];\n }\n return [h, w, b, alpha];\n }\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value);\n } else {\n [, x, y, z, alpha] = parseColorValue(value);\n }\n [h, w, b] = convertXyzToHwb([x, y, z], true);\n if (format === 'hwb') {\n return [\n Math.round(h),\n Math.round(w),\n Math.round(b),\n alpha\n ];\n }\n return [h, w, b, alpha];\n};\n\n/**\n * convert color value to lab\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [l, a, b, alpha]\n */\nexport const convertColorToLab = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let l, a, b, alpha, x, y, z;\n if (REG_LAB.test(value)) {\n [, l, a, b, alpha] = parseLab(value, {\n format: VAL_COMP\n });\n return [l, a, b, alpha];\n }\n if (format === VAL_MIX) {\n let xyz;\n opt.d50 = true;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value, {\n d50: true\n });\n } else {\n [, x, y, z, alpha] = parseColorValue(value, {\n d50: true\n });\n }\n [l, a, b] = convertXyzD50ToLab([x, y, z], true);\n return [l, a, b, alpha];\n};\n\n/**\n * convert color value to lch\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [l, c, h, alpha]\n */\nexport const convertColorToLch = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let l, c, h, alpha, x, y, z;\n if (REG_LCH.test(value)) {\n [, l, c, h, alpha] = parseLch(value, {\n format: VAL_COMP\n });\n return [l, c, h, alpha];\n }\n if (format === VAL_MIX) {\n let xyz;\n opt.d50 = true;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value, {\n d50: true\n });\n } else {\n [, x, y, z, alpha] = parseColorValue(value, {\n d50: true\n });\n }\n [l, c, h] = convertXyzD50ToLch([x, y, z], true);\n return [l, c, h, alpha];\n};\n\n/**\n * convert color value to oklab\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [l, a, b, alpha]\n */\nexport const convertColorToOklab = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let l, a, b, alpha, x, y, z;\n if (REG_OKLAB.test(value)) {\n [, l, a, b, alpha] = parseOklab(value, {\n format: VAL_COMP\n });\n return [l, a, b, alpha];\n }\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value);\n } else {\n [, x, y, z, alpha] = parseColorValue(value);\n }\n [l, a, b] = convertXyzToOklab([x, y, z], true);\n return [l, a, b, alpha];\n};\n\n/**\n * convert color value to oklch\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] - output format\n * @returns {Array.} - [l, c, h, alpha]\n */\nexport const convertColorToOklch = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n let l, c, h, alpha, x, y, z;\n if (REG_OKLCH.test(value)) {\n [, l, c, h, alpha] = parseOklch(value, {\n format: VAL_COMP\n });\n return [l, c, h, alpha];\n }\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz === null) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value);\n } else {\n [, x, y, z, alpha] = parseColorValue(value);\n }\n [l, c, h] = convertXyzToOklch([x, y, z], true);\n return [l, c, h, alpha];\n};\n\n/**\n * resolve color-mix()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {string} [opt.format] format - output format\n * @returns {Array.|?string}\n * - [cs, v1, v2, v3, alpha], '(empty)', null\n */\nexport const resolveColorMix = (value, opt = {}) => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format } = opt;\n const nestedItems = [];\n if (!REG_MIX.test(value)) {\n if (value.startsWith(FN_MIX) && REG_MIX_NEST.test(value)) {\n const regColorSpace = new RegExp(`^(?:${CS_RGB}|${CS_XYZ})$`);\n const items = value.match(REG_MIX_NEST);\n for (const item of items) {\n let val = resolveColorMix(item, {\n format: format === VAL_SPEC ? format : VAL_COMP\n });\n // computed value\n if (Array.isArray(val)) {\n const [v1, v2, v3, v4, v5] = val;\n if (v2 === 0 && v3 === 0 && v4 === 0 && v5 === 0) {\n value = '';\n break;\n }\n if (regColorSpace.test(v1)) {\n if (v5 === 1) {\n val = `color(${v1} ${v2} ${v3} ${v4})`;\n } else {\n val = `color(${v1} ${v2} ${v3} ${v4} / ${v5})`;\n }\n } else if (v5 === 1) {\n val = `${v1}(${v2} ${v3} ${v4})`;\n } else {\n val = `${v1}(${v2} ${v3} ${v4} / ${v5})`;\n }\n } else if (!REG_MIX.test(val)) {\n value = '';\n break;\n }\n nestedItems.push(val);\n value = value.replace(item, val);\n }\n if (!value) {\n if (format === VAL_SPEC) {\n return '';\n }\n return ['rgb', 0, 0, 0, 0];\n }\n } else if (format === VAL_SPEC) {\n return '';\n } else {\n return ['rgb', 0, 0, 0, 0];\n }\n }\n let colorSpace, hueArc, colorA, pctA, colorB, pctB;\n if (nestedItems.length && format === VAL_SPEC) {\n const regColorSpace = new RegExp(`^color-mix\\\\(\\\\s*in\\\\s+(${CS_MIX})\\\\s*,`);\n const [, cs] = value.match(regColorSpace);\n if (REG_CS_HUE.test(cs)) {\n [, colorSpace, hueArc] = REG_CS_HUE.exec(cs);\n } else {\n colorSpace = cs;\n }\n if (nestedItems.length === 2) {\n const itemA = nestedItems[0].replace(/(?=[()])/g, '\\\\');\n const regA = new RegExp(`(${itemA})(?:\\\\s+(${PCT}))?`);\n if (regA.test(value)) {\n [, colorA, pctA] = value.match(regA);\n }\n const itemB = nestedItems[1].replace(/(?=[()])/g, '\\\\');\n const regB = new RegExp(`(${itemB})(?:\\\\s+(${PCT}))?`);\n if (regB.test(value)) {\n [, colorB, pctB] = value.match(regB);\n }\n } else {\n const colorPart = `(?:${SYN_COLOR_TYPE})(?:\\\\s+${PCT})?`;\n const item = nestedItems[0].replace(/(?=[()])/g, '\\\\');\n const itemPart = `${item}(?:\\\\s+${PCT})?`;\n const itemPartCapt = `(${item})(?:\\\\s+(${PCT}))?`;\n const regColorPart = new RegExp(`^(${SYN_COLOR_TYPE})(?:\\\\s+(${PCT}))?$`);\n const regItemPart = new RegExp(`^${itemPartCapt}$`);\n const regPosition = new RegExp(`${itemPartCapt}\\\\s*\\\\)$`);\n // item is at the end\n if (regPosition.test(value)) {\n const reg = new RegExp(`(${colorPart})\\\\s*,\\\\s*(${itemPart})\\\\s*\\\\)$`);\n const [, colorPartA, colorPartB] = value.match(reg);\n [, colorA, pctA] = colorPartA.match(regColorPart);\n [, colorB, pctB] = colorPartB.match(regItemPart);\n } else {\n const reg = new RegExp(`(${itemPart})\\\\s*,\\\\s*(${colorPart})\\\\s*\\\\)$`);\n const [, colorPartA, colorPartB] = value.match(reg);\n [, colorA, pctA] = colorPartA.match(regItemPart);\n [, colorB, pctB] = colorPartB.match(regColorPart);\n }\n }\n } else {\n const [, cs, colorPartA, colorPartB] = value.match(REG_MIX_CAPT);\n const reg = new RegExp(`^(${SYN_COLOR_TYPE})(?:\\\\s+(${PCT}))?$`);\n [, colorA, pctA] = colorPartA.match(reg);\n [, colorB, pctB] = colorPartB.match(reg);\n if (REG_CS_HUE.test(cs)) {\n [, colorSpace, hueArc] = REG_CS_HUE.exec(cs);\n } else {\n colorSpace = cs;\n }\n }\n // normalize percentages and set multipler\n let pA, pB, m;\n if (pctA && pctB) {\n const p1 = parseFloat(pctA) / MAX_PCT;\n const p2 = parseFloat(pctB) / MAX_PCT;\n if (p1 < 0 || p1 > 1 || p2 < 0 || p2 > 1) {\n if (format === VAL_SPEC) {\n return '';\n }\n return ['rgb', 0, 0, 0, 0];\n }\n const factor = p1 + p2;\n if (factor === 0) {\n if (format === VAL_SPEC) {\n return '';\n }\n return ['rgb', 0, 0, 0, 0];\n }\n pA = p1 / factor;\n pB = p2 / factor;\n m = factor < 1 ? factor : 1;\n } else {\n if (pctA) {\n pA = parseFloat(pctA) / MAX_PCT;\n if (pA < 0 || pA > 1) {\n if (format === VAL_SPEC) {\n return '';\n }\n return ['rgb', 0, 0, 0, 0];\n }\n pB = 1 - pA;\n } else if (pctB) {\n pB = parseFloat(pctB) / MAX_PCT;\n if (pB < 0 || pB > 1) {\n if (format === VAL_SPEC) {\n return '';\n }\n return ['rgb', 0, 0, 0, 0];\n }\n pA = 1 - pB;\n } else {\n pA = HALF;\n pB = HALF;\n }\n m = 1;\n }\n if (colorSpace === 'xyz') {\n colorSpace = 'xyz-d65';\n }\n // specified value\n if (format === VAL_SPEC) {\n let valueA, valueB;\n if (colorA.startsWith(FN_MIX)) {\n valueA = colorA;\n } else if (colorA.startsWith(FN_COLOR)) {\n valueA = parseColorFunc(colorA, opt);\n if (Array.isArray(valueA)) {\n const [v1, v2, v3, v4, v5] = [...valueA];\n if (v5 === 1) {\n valueA = `color(${v1} ${v2} ${v3} ${v4})`;\n } else {\n valueA = `color(${v1} ${v2} ${v3} ${v4} / ${v5})`;\n }\n }\n } else {\n valueA = parseColorValue(colorA, opt);\n if (valueA === '') {\n return valueA;\n }\n if (Array.isArray(valueA)) {\n const [v1, v2, v3, v4, v5] = [...valueA];\n if (v5 === 1) {\n if (v1 === 'rgb') {\n valueA = `${v1}(${v2}, ${v3}, ${v4})`;\n } else {\n valueA = `${v1}(${v2} ${v3} ${v4})`;\n }\n } else if (v1 === 'rgb') {\n valueA = `${v1}a(${v2}, ${v3}, ${v4}, ${v5})`;\n } else {\n valueA = `${v1}(${v2} ${v3} ${v4} / ${v5})`;\n }\n }\n }\n if (colorB.startsWith(FN_MIX)) {\n valueB = colorB;\n } else if (colorB.startsWith(FN_COLOR)) {\n valueB = parseColorFunc(colorB, opt);\n if (Array.isArray(valueB)) {\n const [v1, v2, v3, v4, v5] = [...valueB];\n if (v5 === 1) {\n valueB = `color(${v1} ${v2} ${v3} ${v4})`;\n } else {\n valueB = `color(${v1} ${v2} ${v3} ${v4} / ${v5})`;\n }\n }\n } else {\n valueB = parseColorValue(colorB, opt);\n if (valueB === '') {\n return valueB;\n }\n if (Array.isArray(valueB)) {\n const [v1, v2, v3, v4, v5] = [...valueB];\n if (v5 === 1) {\n if (v1 === 'rgb') {\n valueB = `${v1}(${v2}, ${v3}, ${v4})`;\n } else {\n valueB = `${v1}(${v2} ${v3} ${v4})`;\n }\n } else if (v1 === 'rgb') {\n valueB = `${v1}a(${v2}, ${v3}, ${v4}, ${v5})`;\n } else {\n valueB = `${v1}(${v2} ${v3} ${v4} / ${v5})`;\n }\n }\n }\n if (pctA && pctB) {\n valueA += ` ${parseFloat(pctA)}%`;\n valueB += ` ${parseFloat(pctB)}%`;\n } else if (pctA) {\n const pA = parseFloat(pctA);\n if (pA !== MAX_PCT * HALF) {\n valueA += ` ${pA}%`;\n }\n } else if (pctB) {\n const pA = MAX_PCT - parseFloat(pctB);\n if (pA !== MAX_PCT * HALF) {\n valueA += ` ${pA}%`;\n }\n }\n if (hueArc) {\n return `color-mix(in ${colorSpace} ${hueArc} hue, ${valueA}, ${valueB})`;\n } else {\n return `color-mix(in ${colorSpace}, ${valueA}, ${valueB})`;\n }\n }\n let r, g, b, alpha;\n // in srgb, srgb-linear\n if (/^srgb(?:-linear)?$/.test(colorSpace)) {\n let rgbA, rgbB;\n if (colorSpace === 'srgb') {\n if (REG_CURRENT.test(colorA)) {\n rgbA = [NONE, NONE, NONE, NONE];\n } else {\n rgbA = convertColorToRgb(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n rgbB = [NONE, NONE, NONE, NONE];\n } else {\n rgbB = convertColorToRgb(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n } else {\n if (REG_CURRENT.test(colorA)) {\n rgbA = [NONE, NONE, NONE, NONE];\n } else {\n rgbA = convertColorToLinearRgb(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n rgbB = [NONE, NONE, NONE, NONE];\n } else {\n rgbB = convertColorToLinearRgb(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n }\n if (rgbA === null || rgbB === null) {\n return ['rgb', 0, 0, 0, 0];\n }\n let [rA, gA, bA, alphaA] = rgbA;\n let [rB, gB, bB, alphaB] = rgbB;\n const rNone = rA === NONE && rB === NONE;\n const gNone = gA === NONE && gB === NONE;\n const bNone = bA === NONE && bB === NONE;\n const alphaNone = alphaA === NONE && alphaB === NONE;\n [[rA, gA, bA, alphaA], [rB, gB, bB, alphaB]] =\n normalizeColorComponents([rA, gA, bA, alphaA], [rB, gB, bB, alphaB],\n true);\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = (factorA + factorB);\n if (alpha === 0) {\n r = rA * pA + rB * pB;\n g = gA * pA + gB * pB;\n b = bA * pA + bB * pB;\n } else {\n r = (rA * factorA + rB * factorB) / alpha;\n g = (gA * factorA + gB * factorB) / alpha;\n b = (bA * factorA + bB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n if (format === VAL_COMP) {\n return [\n colorSpace,\n rNone ? NONE : roundToPrecision(r, HEX),\n gNone ? NONE : roundToPrecision(g, HEX),\n bNone ? NONE : roundToPrecision(b, HEX),\n alphaNone ? NONE : alpha * m\n ];\n }\n r *= MAX_RGB;\n g *= MAX_RGB;\n b *= MAX_RGB;\n // in xyz, xyz-d65, xyz-d50\n } else if (REG_CS_XYZ.test(colorSpace)) {\n let xyzA, xyzB;\n if (REG_CURRENT.test(colorA)) {\n xyzA = [NONE, NONE, NONE, NONE];\n } else {\n xyzA = convertColorToXyz(colorA, {\n colorSpace,\n d50: colorSpace === 'xyz-d50',\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n xyzB = [NONE, NONE, NONE, NONE];\n } else {\n xyzB = convertColorToXyz(colorB, {\n colorSpace,\n d50: colorSpace === 'xyz-d50',\n format: VAL_MIX\n });\n }\n if (xyzA === null || xyzB === null) {\n return ['rgb', 0, 0, 0, 0];\n }\n let [xA, yA, zA, alphaA] = xyzA;\n let [xB, yB, zB, alphaB] = xyzB;\n const xNone = xA === NONE && xB === NONE;\n const yNone = yA === NONE && yB === NONE;\n const zNone = zA === NONE && zB === NONE;\n const alphaNone = alphaA === NONE && alphaB === NONE;\n [[xA, yA, zA, alphaA], [xB, yB, zB, alphaB]] =\n normalizeColorComponents([xA, yA, zA, alphaA], [xB, yB, zB, alphaB],\n true);\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = (factorA + factorB);\n let x, y, z;\n if (alpha === 0) {\n x = xA * pA + xB * pB;\n y = yA * pA + yB * pB;\n z = zA * pA + zB * pB;\n } else {\n x = (xA * factorA + xB * factorB) / alpha;\n y = (yA * factorA + yB * factorB) / alpha;\n z = (zA * factorA + zB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n if (format === VAL_COMP) {\n return [\n colorSpace,\n xNone ? NONE : roundToPrecision(x, HEX),\n yNone ? NONE : roundToPrecision(y, HEX),\n zNone ? NONE : roundToPrecision(z, HEX),\n alphaNone ? NONE : alpha * m\n ];\n }\n if (colorSpace === 'xyz-d50') {\n [r, g, b] = convertXyzD50ToRgb([x, y, z], true);\n } else {\n [r, g, b] = convertXyzToRgb([x, y, z], true);\n }\n // in hsl, hwb\n } else if (/^h(?:sl|wb)$/.test(colorSpace)) {\n let hslA, hslB;\n if (colorSpace === 'hsl') {\n if (REG_CURRENT.test(colorA)) {\n hslA = [NONE, NONE, NONE, NONE];\n } else {\n hslA = convertColorToHsl(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n hslB = [NONE, NONE, NONE, NONE];\n } else {\n hslB = convertColorToHsl(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n } else {\n if (REG_CURRENT.test(colorA)) {\n hslA = [NONE, NONE, NONE, NONE];\n } else {\n hslA = convertColorToHwb(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n hslB = [NONE, NONE, NONE, NONE];\n } else {\n hslB = convertColorToHwb(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n }\n if (hslA === null || hslB === null) {\n return ['rgb', 0, 0, 0, 0];\n }\n let [hA, sA, lA, alphaA] = hslA;\n let [hB, sB, lB, alphaB] = hslB;\n const alphaNone = alphaA === NONE && alphaB === NONE;\n [[hA, sA, lA, alphaA], [hB, sB, lB, alphaB]] =\n normalizeColorComponents([hA, sA, lA, alphaA], [hB, sB, lB, alphaB],\n true);\n if (hueArc) {\n [hA, hB] = interpolateHue(hA, hB, hueArc);\n }\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = (factorA + factorB);\n const h = (hA * pA + hB * pB) % DEG;\n let s, l;\n if (alpha === 0) {\n s = sA * pA + sB * pB;\n l = lA * pA + lB * pB;\n } else {\n s = (sA * factorA + sB * factorB) / alpha;\n l = (lA * factorA + lB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n [r, g, b] = convertColorToRgb(`${colorSpace}(${h} ${s} ${l})`);\n if (format === VAL_COMP) {\n return [\n 'srgb',\n roundToPrecision(r / MAX_RGB, HEX),\n roundToPrecision(g / MAX_RGB, HEX),\n roundToPrecision(b / MAX_RGB, HEX),\n alphaNone ? NONE : alpha * m\n ];\n }\n // in lab, oklab\n } else if (/^(?:ok)?lab$/.test(colorSpace)) {\n let labA, labB;\n if (colorSpace === 'lab') {\n if (REG_CURRENT.test(colorA)) {\n labA = [NONE, NONE, NONE, NONE];\n } else {\n labA = convertColorToLab(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n labB = [NONE, NONE, NONE, NONE];\n } else {\n labB = convertColorToLab(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n } else {\n if (REG_CURRENT.test(colorA)) {\n labA = [NONE, NONE, NONE, NONE];\n } else {\n labA = convertColorToOklab(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n labB = [NONE, NONE, NONE, NONE];\n } else {\n labB = convertColorToOklab(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n }\n if (labA === null || labB === null) {\n return ['rgb', 0, 0, 0, 0];\n }\n let [lA, aA, bA, alphaA] = labA;\n let [lB, aB, bB, alphaB] = labB;\n const lNone = lA === NONE && lB === NONE;\n const aNone = aA === NONE && aB === NONE;\n const bNone = bA === NONE && bB === NONE;\n const alphaNone = alphaA === NONE && alphaB === NONE;\n [[lA, aA, bA, alphaA], [lB, aB, bB, alphaB]] =\n normalizeColorComponents([lA, aA, bA, alphaA], [lB, aB, bB, alphaB],\n true);\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = (factorA + factorB);\n let l, aO, bO;\n if (alpha === 0) {\n l = lA * pA + lB * pB;\n aO = aA * pA + aB * pB;\n bO = bA * pA + bB * pB;\n } else {\n l = (lA * factorA + lB * factorB) / alpha;\n aO = (aA * factorA + aB * factorB) / alpha;\n bO = (bA * factorA + bB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n if (format === VAL_COMP) {\n return [\n colorSpace,\n lNone ? NONE : roundToPrecision(l, HEX),\n aNone ? NONE : roundToPrecision(aO, HEX),\n bNone ? NONE : roundToPrecision(bO, HEX),\n alphaNone ? NONE : alpha * m\n ];\n }\n [, r, g, b] = resolveColorValue(`${colorSpace}(${l} ${aO} ${bO})`);\n // in lch, oklch\n } else if (/^(?:ok)?lch$/.test(colorSpace)) {\n let lchA, lchB;\n if (colorSpace === 'lch') {\n if (REG_CURRENT.test(colorA)) {\n lchA = [NONE, NONE, NONE, NONE];\n } else {\n lchA = convertColorToLch(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n lchB = [NONE, NONE, NONE, NONE];\n } else {\n lchB = convertColorToLch(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n } else {\n if (REG_CURRENT.test(colorA)) {\n lchA = [NONE, NONE, NONE, NONE];\n } else {\n lchA = convertColorToOklch(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n lchB = [NONE, NONE, NONE, NONE];\n } else {\n lchB = convertColorToOklch(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n }\n if (lchA === null || lchB === null) {\n return ['rgb', 0, 0, 0, 0];\n }\n let [lA, cA, hA, alphaA] = lchA;\n let [lB, cB, hB, alphaB] = lchB;\n const lNone = lA === NONE && lB === NONE;\n const cNone = cA === NONE && cB === NONE;\n const hNone = hA === NONE && hB === NONE;\n const alphaNone = alphaA === NONE && alphaB === NONE;\n [[lA, cA, hA, alphaA], [lB, cB, hB, alphaB]] =\n normalizeColorComponents([lA, cA, hA, alphaA], [lB, cB, hB, alphaB],\n true);\n if (hueArc) {\n [hA, hB] = interpolateHue(hA, hB, hueArc);\n }\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = (factorA + factorB);\n const h = (hA * pA + hB * pB) % DEG;\n let l, c;\n if (alpha === 0) {\n l = lA * pA + lB * pB;\n c = cA * pA + cB * pB;\n } else {\n l = (lA * factorA + lB * factorB) / alpha;\n c = (cA * factorA + cB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n if (format === VAL_COMP) {\n return [\n colorSpace,\n lNone ? NONE : roundToPrecision(l, HEX),\n cNone ? NONE : roundToPrecision(c, HEX),\n hNone ? NONE : roundToPrecision(h, HEX),\n alphaNone ? NONE : alpha * m\n ];\n }\n [, r, g, b] = resolveColorValue(`${colorSpace}(${l} ${c} ${h})`);\n }\n return [\n 'rgb',\n Math.round(r),\n Math.round(g),\n Math.round(b),\n parseFloat((alpha * m).toFixed(3))\n ];\n};\n", "/**\n * convert.js\n */\n\nimport { LRUCache } from 'lru-cache';\nimport {\n convertColorToHsl, convertColorToHwb, convertColorToLab, convertColorToLch,\n convertColorToOklab, convertColorToOklch, convertColorToRgb,\n numberToHexString, parseColorFunc, parseColorValue\n} from './color.js';\nimport { isString } from './common.js';\nimport { cssCalc } from './css-calc.js';\nimport { cssVar } from './css-var.js';\nimport { resolveRelativeColor } from './relative-color.js';\nimport { resolve } from './resolve.js';\nimport { valueToJsonString } from './util.js';\n\n/* constants */\nimport {\n SYN_FN_MATH_CALC, SYN_FN_REL, SYN_FN_VAR, VAL_COMP\n} from './constant.js';\n\n/* regexp */\nconst REG_FN_MATH_CALC = new RegExp(SYN_FN_MATH_CALC);\nconst REG_FN_REL = new RegExp(SYN_FN_REL);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\n\n/* cached results */\nexport const cachedResults = new LRUCache({\n max: 4096\n});\n\n/**\n * pre process\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {?string} - value\n */\nexport const preProcess = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n if (!value) {\n return null;\n }\n } else {\n return null;\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{preProcess:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n if (REG_FN_VAR.test(value)) {\n value = cssVar(value, opt);\n if (!value) {\n if (cacheKey) {\n cachedResults.set(cacheKey, null);\n }\n return null;\n }\n }\n if (REG_FN_REL.test(value)) {\n value = resolveRelativeColor(value, opt);\n } else if (REG_FN_MATH_CALC.test(value)) {\n value = cssCalc(value, opt);\n }\n if (value && value.startsWith('color-mix')) {\n value = resolve(value, {\n format: VAL_COMP\n });\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, value);\n }\n return value;\n};\n\n/**\n * convert number to hex string\n * @param {number} value - color value\n * @returns {string} - hex string: 00..ff\n */\nexport const numberToHex = value => {\n const cacheKey = typeof value === 'number' && `{numberToHex:${value}}`;\n if (cacheKey && cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n const hex = numberToHexString(value);\n if (cacheKey) {\n cachedResults.set(cacheKey, hex);\n }\n return hex;\n};\n\n/**\n * convert color to hex\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {boolean} [opt.alpha] - return in #rrggbbaa notation\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {?string} - #rrggbb | #rrggbbaa | null\n */\nexport const colorToHex = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return null;\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { alpha, customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToHex:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n let hex;\n if (alpha) {\n opt.format = 'hexAlpha';\n hex = resolve(value, opt);\n } else {\n opt.format = 'hex';\n hex = resolve(value, opt);\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, hex);\n }\n return hex;\n};\n\n/**\n * convert color to hsl\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [h, s, l, alpha]\n */\nexport const colorToHsl = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToHsl:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n opt.format = 'hsl';\n const hsl = convertColorToHsl(value, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, hsl);\n }\n return hsl;\n};\n\n/**\n * convert color to hwb\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [h, w, b, alpha]\n */\nexport const colorToHwb = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToHwb:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n opt.format = 'hwb';\n const hwb = convertColorToHwb(value, opt);\n cachedResults.set(cacheKey, hwb);\n return hwb;\n};\n\n/**\n * convert color to lab\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [l, a, b, alpha]\n */\nexport const colorToLab = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToLab:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n const lab = convertColorToLab(value, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, lab);\n }\n return lab;\n};\n\n/**\n * convert color to lch\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [l, c, h, alpha]\n */\nexport const colorToLch = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToLch:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n const lch = convertColorToLch(value, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, lch);\n }\n return lch;\n};\n\n/**\n * convert color to oklab\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [l, a, b, alpha]\n */\nexport const colorToOklab = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToOklab:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n const lab = convertColorToOklab(value, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, lab);\n }\n return lab;\n};\n\n/**\n * convert color to oklch\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [l, c, h, alpha]\n */\nexport const colorToOklch = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToOklch:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n const lch = convertColorToOklch(value, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, lch);\n }\n return lch;\n};\n\n/**\n * convert color to rgb\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [r, g, b, alpha]\n */\nexport const colorToRgb = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToRgb:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n const rgb = convertColorToRgb(value, opt);\n if (cacheKey) {\n cachedResults.set(cacheKey, rgb);\n }\n return rgb;\n};\n\n/**\n * convert color to xyz\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.d50] - white poin in d50\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const colorToXyz = (value, opt = {}) => {\n if (isString(value)) {\n value = preProcess(value, opt);\n if (value) {\n value = value.toLowerCase();\n } else {\n return [0, 0, 0, 0];\n }\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { customProperty } = opt;\n let cacheKey;\n if (typeof customProperty?.callback !== 'function') {\n cacheKey = `{colorToXyz:${value},opt:${valueToJsonString(opt)}}`;\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey);\n }\n }\n let xyz;\n if (value.startsWith('color(')) {\n [, ...xyz] = parseColorFunc(value, opt);\n } else {\n [, ...xyz] = parseColorValue(value, opt);\n }\n if (cacheKey) {\n cachedResults.set(cacheKey, xyz);\n }\n return xyz;\n};\n\n/**\n * convert color to xyz-d50\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @param {object} [opt.customProperty] - custom properties\n * @param {object} [opt.dimension] - dimension\n * @returns {Array.} - [x, y, z, alpha]\n */\nexport const colorToXyzD50 = (value, opt = {}) => {\n opt.d50 = true;\n return colorToXyz(value, opt);\n};\n\n/* convert */\nexport const convert = {\n colorToHex,\n colorToHsl,\n colorToHwb,\n colorToLab,\n colorToLch,\n colorToOklab,\n colorToOklch,\n colorToRgb,\n colorToXyz,\n colorToXyzD50,\n numberToHex\n};\n"], + "mappings": "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AAG,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAEC,GAAE,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAEC,GAAE,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAEC,GAAE,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAEC,GAAE,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEC,GAAE,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAEC,GAAE,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,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", "names": ["index_exports", "__export", "convert", "cssCalc", "isColor", "resolve", "__toCommonJS", "perf", "warned", "PROCESS", "emitWarning", "msg", "type", "code", "fn", "AC", "AS", "_", "warnACPolyfill", "reason", "printACPolyfillWarning", "shouldWarn", "TYPE", "isPosInt", "n", "getUintArray", "max", "ZeroArray", "size", "Stack", "_Stack", "#constructing", "HeapCls", "s", "LRUCache", "_LRUCache", "#max", "#maxSize", "#dispose", "#disposeAfter", "#fetchMethod", "#memoMethod", "#size", "#calculatedSize", "#keyMap", "#keyList", "#valList", "#next", "#prev", "#head", "#tail", "#free", "#disposed", "#sizes", "#starts", "#ttls", "#hasDispose", "#hasFetchMethod", "#hasDisposeAfter", "c", "p", "#isBackgroundFetch", "k", "index", "options", "context", "#backgroundFetch", "#moveToTail", "#indexes", "#rindexes", "#isStale", "ttl", "ttlResolution", "ttlAutopurge", "updateAgeOnGet", "updateAgeOnHas", "allowStale", "dispose", "disposeAfter", "noDisposeOnSet", "noUpdateTTL", "maxSize", "maxEntrySize", "sizeCalculation", "fetchMethod", "memoMethod", "noDeleteOnFetchRejection", "noDeleteOnStaleGet", "allowStaleOnFetchRejection", "allowStaleOnFetchAbort", "ignoreFetchAbort", "UintArray", "#initializeSizeTracking", "#initializeTTLTracking", "key", "ttls", "starts", "#setItemTTL", "start", "t", "#delete", "#updateItemAge", "#statusTTL", "status", "cachedNow", "getNow", "age", "sizes", "#removeItemSize", "#requireSize", "v", "#addItemSize", "#evict", "_i", "_s", "_st", "_k", "_v", "i", "#isValidIndex", "getOptions", "value", "thisp", "deleted", "entry", "remain", "arr", "setOptions", "oldVal", "oldValue", "dt", "task", "val", "free", "head", "hasOptions", "peekOptions", "ac", "signal", "fetchOpts", "cb", "updateCache", "aborted", "ignoreAbort", "fetchFail", "bf", "eb", "er", "allowStaleAborted", "noDelete", "pcall", "res", "rej", "fmp", "b", "fetchOptions", "forceRefresh", "stale", "isStale", "staleVal", "memoOptions", "vv", "fetching", "#connect", "#clear", "pi", "ni", "isString", "o", "ParseError", "e", "t", "o", "ParseErrorWithToken", "r", "n", "stringify", "n", "t", "o", "r", "i", "s", "checkIfFourCodePointsWouldStartCDO", "isDigitCodePoint", "isUppercaseLetterCodePoint", "isLowercaseLetterCodePoint", "isHexDigitCodePoint", "isLetterCodePoint", "isIdentStartCodePoint", "isNonASCII_IdentCodePoint", "isIdentCodePoint", "isSurrogate", "isNewLine", "isWhitespace", "checkIfTwoCodePointsAreAValidEscape", "checkIfThreeCodePointsWouldStartAnIdentSequence", "checkIfThreeCodePointsWouldStartANumber", "checkIfTwoCodePointsStartAComment", "checkIfThreeCodePointsWouldStartCDC", "c", "a", "u", "mirrorVariantType", "mirrorVariant", "consumeComment", "ParseErrorWithToken", "e", "consumeEscapedCodePoint", "ParseError", "consumeIdentSequence", "consumeHashToken", "consumeNumber", "consumeNumericToken", "consumeWhiteSpace", "Reader", "consumeStringToken", "checkIfCodePointsMatchURLIdent", "consumeBadURL", "consumeUrlToken", "consumeIdentLikeToken", "checkIfThreeCodePointsWouldStartAUnicodeRange", "consumeUnicodeRangeToken", "tokenize", "tokenizer", "d", "p", "noop", "mutateUnit", "n", "t", "e", "o", "ensureThatValueRoundTripsAsIdent", "insertEscapedCodePoint", "r", "i", "s", "isIdentStartCodePoint", "isIdentCodePoint", "isHexDigitCodePoint", "d", "c", "isToken", "isTokenNumeric", "isTokenWhiteSpaceOrComment", "isTokenComma", "c", "isTokenComment", "isTokenDelim", "isTokenDimension", "isTokenEOF", "isTokenFunction", "isTokenHash", "isTokenIdent", "isTokenNumber", "isTokenPercentage", "isTokenWhitespace", "c", "isTokenOpenParen", "isTokenCloseParen", "isTokenOpenSquare", "isTokenOpenCurly", "c", "f", "walkerIndexGenerator", "n", "e", "t", "o", "s", "consumeComponentValue", "isTokenOpenParen", "isTokenOpenCurly", "isTokenOpenSquare", "consumeSimpleBlock", "isTokenFunction", "consumeFunction", "isTokenWhitespace", "consumeWhitespace", "isTokenComment", "consumeComment", "TokenNode", "ContainerNodeBaseClass", "FunctionNode", "_FunctionNode", "isTokenEOF", "c", "isToken", "stringify", "i", "ParseError", "isTokenCloseParen", "isTokenWhiteSpaceOrComment", "consumeAllCommentsAndWhitespace", "r", "SimpleBlockNode", "_SimpleBlockNode", "mirrorVariant", "mirrorVariantType", "a", "WhitespaceNode", "_WhitespaceNode", "CommentNode", "_CommentNode", "_TokenNode", "parseComponentValue", "parseCommaSeparatedListOfComponentValues", "t", "o", "s", "i", "isTokenEOF", "c", "r", "a", "isTokenComma", "n", "consumeComponentValue", "forEach", "n", "t", "o", "walkerIndexGenerator", "i", "r", "walk", "replaceComponentValues", "e", "isSimpleBlockNode", "SimpleBlockNode", "isFunctionNode", "FunctionNode", "isWhitespaceNode", "WhitespaceNode", "isCommentNode", "CommentNode", "isWhiteSpaceOrCommentNode", "isTokenNode", "TokenNode", "E", "toLowerCaseAZ", "e", "S", "I", "y", "M", "T", "k", "x", "P", "O", "W", "L", "U", "Z", "$", "z", "q", "G", "convertUnit", "n", "isTokenDimension", "t", "u", "a", "o", "c", "mutateUnit", "toCanonicalUnit", "addition", "r", "isTokenNumber", "TokenNode", "isTokenPercentage", "division", "isCalculation", "solve", "isTokenNode", "multiplication", "resolveGlobalsAndConstants", "i", "isTokenIdent", "unary", "isTokenNumeric", "resultToCalculation", "dimensionToCalculation", "percentageToCalculation", "numberToCalculation", "solveACos", "solveASin", "solveATan", "isDimensionOrNumber", "arrayOfSameNumeric", "twoOfSameNumeric", "solveATan2", "solveAbs", "solveClamp", "l", "solveCos", "solveExp", "solveHypot", "solveMax", "solveMin", "solveMod", "solvePow", "solveRem", "solveRound", "solveSign", "solveSin", "solveSqrt", "solveTan", "subtraction", "solveLog", "j", "isNone", "isWhitespaceNode", "isCommentNode", "solveRandom", "sfc32", "crc32", "stringify", "R", "singleNodeSolver", "twoCommaSeparatedNodesSolver", "calc$1", "isWhiteSpaceOrCommentNode", "s", "isTokenComma", "v", "m", "calcWrapper", "p", "C", "g", "FunctionNode", "maxWrapper", "D", "B", "variadicNodesSolver", "twoCommaSeparatedArguments", "f", "singleArgument", "V", "isSimpleBlockNode", "isTokenOpenParen", "isFunctionNode", "isTokenDelim", "variadicArguments", "patchNaN", "WhitespaceNode", "patchInfinity", "patchMinusZero", "patchPrecision", "patchCanonicalUnit", "patchCalcResult", "tokenizeGlobals", "isToken", "tokenizer", "calc", "calcFromComponentValues", "parseCommaSeparatedListOfComponentValues", "tokenize", "replaceComponentValues", "Y", "VAL_COMP", "VAL_SPEC", "_DIGIT", "_COMP", "_STEP", "_TRIG", "_EXP", "_SIGN", "_MATH", "_CALC", "_VAR", "ANGLE", "NUM", "NONE", "PCT", "SYN_FN_MATH", "SYN_FN_MATH_CALC", "SYN_FN_MATH_VAR", "SYN_FN_VAR", "_ALPHA", "_ALPHA_LV3", "_COLOR_FUNC", "_COLOR_KEY", "_CS_HUE", "_CS_HUE_ARC", "_NUM_ANGLE", "_NUM_ANGLE_NONE", "_NUM_PCT_NONE", "CS_HUE", "CS_HUE_CAPT", "CS_LAB", "CS_LCH", "CS_SRGB", "CS_RGB", "CS_XYZ", "CS_MIX", "FN_COLOR", "FN_MIX", "FN_REL", "FN_REL_CAPT", "FN_VAR", "SYN_FN_COLOR", "SYN_FN_REL", "SYN_HSL", "SYN_HSL_LV3", "SYN_LCH", "SYN_MOD", "SYN_RGB_LV3", "SYN_COLOR_TYPE", "SYN_MIX_PART", "SYN_MIX", "SYN_MIX_CAPT", "PAREN_CLOSE", "COMMENT", "DIM", "EOF", "FUNC", "PAREN_OPEN", "W_SPACE", "c", "HEX", "MAX_PCT", "REG_FN_MATH_CALC", "SYN_FN_MATH_CALC", "REG_FN_VAR", "SYN_FN_VAR", "REG_OPERATOR", "REG_START_MATH", "SYN_FN_MATH", "REG_START_MATH_VAR", "SYN_FN_MATH_VAR", "REG_TYPE_DIM", "NUM", "REG_TYPE_DIM_PCT", "REG_TYPE_PCT", "cachedResults", "LRUCache", "Calculator", "#hasNum", "#numSum", "#numMul", "#hasPct", "#pctSum", "#pctMul", "#hasDim", "#dimSum", "#dimSub", "#dimMul", "#dimDiv", "#hasEtc", "#etcSum", "#etcSub", "#etcMul", "#etcDiv", "value", "values", "arr", "a", "b", "res", "valA", "unitA", "valB", "unitB", "num", "i", "dim", "mul", "div", "calc", "sum", "sub", "item", "sortCalcValues", "finalize", "start", "end", "sortedValues", "cal", "operator", "sortedValue", "val", "resolvedValue", "finalizedValues", "l", "serializeCalc", "opt", "format", "isString", "VAL_SPEC", "cacheKey", "valueToJsonString", "items", "tokenize", "token", "type", "v", "startIndex", "endIndex", "index", "slicedValues", "serializedValue", "serializedCalc", "resolveDimension", "detail", "unit", "relativeValue", "dimension", "pixelValue", "parseTokens", "tokens", "mathFunc", "nest", "lastValue", "cssCalc", "FN_VAR", "roundToPrecision", "PAREN_CLOSE", "COMMENT", "EOF", "IDENT", "W_SPACE", "c", "REG_FN_MATH_CALC", "SYN_FN_MATH_CALC", "REG_FN_VAR", "SYN_FN_VAR", "cachedResults", "LRUCache", "resolveCustomProperty", "tokens", "opt", "customProperty", "items", "token", "type", "value", "FN_VAR", "restTokens", "item", "resolveAsColor", "lastValue", "isColor", "resolvedValue", "cssVar", "cssCalc", "parseTokens", "res", "format", "isString", "VAL_SPEC", "cacheKey", "valueToJsonString", "tokenize", "values", "color", "multiplyMatrices", "t", "n", "D50_to_D65", "D65_to_D50", "HSL_to_sRGB", "_", "o", "HSL_to_sRGB_channel", "e", "HWB_to_sRGB", "a", "LCH_to_Lab", "Lab_to_LCH", "Lab_to_XYZ", "r", "OKLCH_to_OKLab", "OKLab_to_OKLCH", "OKLab_to_XYZ", "XYZ_to_Lab", "compute_f", "l", "i", "XYZ_to_OKLab", "c", "u", "XYZ_to_lin_P3", "s", "h", "m", "XYZ_to_lin_sRGB", "D", "g", "gam_2020_channel", "gam_sRGB", "gam_sRGB_channel", "gam_P3", "b", "gam_ProPhoto_channel", "gam_a98rgb_channel", "f", "X", "lin_2020_channel", "Y", "lin_sRGB", "lin_sRGB_channel", "lin_P3", "Z", "lin_P3_to_XYZ", "M", "lin_ProPhoto_channel", "p", "lin_a98rgb_channel", "d", "L", "lin_sRGB_to_XYZ", "sRGB_to_HSL", "sRGB_to_Hue", "sRGB_to_XYZ_D50", "XYZ_D50_to_sRGB", "HSL_to_XYZ_D50", "XYZ_D50_to_HSL", "HWB_to_XYZ_D50", "XYZ_D50_to_HWB", "Lab_to_XYZ_D50", "XYZ_D50_to_Lab", "LCH_to_XYZ_D50", "XYZ_D50_to_LCH", "OKLab_to_XYZ_D50", "XYZ_D50_to_OKLab", "OKLCH_to_XYZ_D50", "XYZ_D50_to_OKLCH", "lin_sRGB_to_XYZ_D50", "XYZ_D50_to_lin_sRGB", "a98_RGB_to_XYZ_D50", "XYZ_D50_to_a98_RGB", "P3_to_XYZ_D50", "XYZ_D50_to_P3", "rec_2020_to_XYZ_D50", "XYZ_D50_to_rec_2020", "ProPhoto_RGB_to_XYZ_D50", "XYZ_D50_to_ProPhoto", "XYZ_D65_to_XYZ_D50", "XYZ_D50_to_XYZ_D65", "inGamut", "t", "clip", "mapGamutRayTrace", "t", "n", "_", "o", "e", "a", "r", "l", "rayTraceBox", "clip", "i", "c", "R", "luminance", "contrast_ratio_wcag_2_1", "se", "ue", "convertNaNToZero", "colorData_to_XYZ_D50", "sRGB_to_XYZ_D50", "lin_sRGB_to_XYZ_D50", "P3_to_XYZ_D50", "rec_2020_to_XYZ_D50", "a98_RGB_to_XYZ_D50", "ProPhoto_RGB_to_XYZ_D50", "HSL_to_XYZ_D50", "HWB_to_XYZ_D50", "Lab_to_XYZ_D50", "OKLab_to_XYZ_D50", "LCH_to_XYZ_D50", "OKLCH_to_XYZ_D50", "XYZ_D65_to_XYZ_D50", "ce", "colorDataTo", "a", "e", "XYZ_D50_to_sRGB", "XYZ_D50_to_lin_sRGB", "XYZ_D50_to_P3", "XYZ_D50_to_rec_2020", "XYZ_D50_to_ProPhoto", "XYZ_D50_to_a98_RGB", "XYZ_D50_to_HSL", "XYZ_D50_to_HWB", "XYZ_D50_to_Lab", "XYZ_D50_to_LCH", "XYZ_D50_to_OKLCH", "XYZ_D50_to_OKLab", "XYZ_D50_to_XYZ_D65", "carryForwardMissingComponents", "convertPowerlessComponentsToMissingComponents", "reducePrecision", "carryForwardMissingComponents", "a", "o", "n", "normalizeRelativeColorDataChannels", "se", "dummyNumberToken", "noneToZeroInRelativeColorDataChannels", "c", "reducePrecision", "normalize", "a", "ie", "toLowerCaseAZ", "e", "normalize_Color_ChannelValues", "t", "l", "s", "isTokenIdent", "ue", "c", "isTokenPercentage", "n", "isTokenNumber", "he", "color$1", "r", "u", "h", "m", "p", "N", "se", "b", "o", "v", "isWhitespaceNode", "isCommentNode", "isTokenNode", "isTokenDelim", "isFunctionNode", "Y", "calcFromComponentValues", "isTokenNumeric", "colorSpaceNameToColorNotation", "colorDataTo", "normalizeRelativeColorDataChannels", "noneToZeroInRelativeColorDataChannels", "TokenNode", "f", "d", "me", "pe", "Ne", "colorMix", "isTokenComma", "colorMixPolar", "colorMixComponents", "colorMixRectangular", "i", "fillInMissingComponent", "premultiply", "interpolate", "un_premultiply", "g", "hex", "normalizeHue", "isTokenDimension", "normalize_legacy_HSL_ChannelValues", "normalize_modern_HSL_ChannelValues", "threeChannelLegacySyntax", "threeChannelSpaceSeparated", "y", "_", "hsl", "hslCommaSeparated", "hslSpaceSeparated", "normalize_HWB_ChannelValues", "normalize_Lab_ChannelValues", "lab", "normalize_LCH_ChannelValues", "lch", "be", "R", "namedColor", "normalize_OKLab_ChannelValues", "oklab", "normalize_OKLCH_ChannelValues", "oklch", "normalize_legacy_sRGB_ChannelValues", "normalize_modern_sRGB_ChannelValues", "rgb", "rgbCommaSeparated", "rgbSpaceSeparated", "XYZ_D50_to_sRGB_Gamut", "XYZ_D50_to_sRGB", "inGamut", "clip", "XYZ_D50_to_OKLCH", "gam_sRGB", "mapGamutRayTrace", "oklch_to_lin_srgb", "lin_srgb_to_oklch", "OKLCH_to_OKLab", "OKLab_to_XYZ", "XYZ_to_lin_sRGB", "lin_sRGB_to_XYZ", "XYZ_to_OKLab", "OKLab_to_OKLCH", "contrastColor", "convertNaNToZero", "colorData_to_XYZ_D50", "contrast_ratio_wcag_2_1", "color", "isFunctionNode", "toLowerCaseAZ", "rgb", "hsl", "a", "threeChannelSpaceSeparated", "normalize_HWB_ChannelValues", "se", "lab", "lch", "oklab", "oklch", "color$1", "colorMix", "contrastColor", "isTokenNode", "isTokenHash", "hex", "isTokenIdent", "namedColor", "ue", "PAREN_CLOSE", "COMMENT", "DIM", "EOF", "FUNC", "IDENT", "NUM", "PAREN_OPEN", "PCT", "W_SPACE", "c", "NONE_KEY", "OCT", "DEC", "HEX", "MAX_PCT", "MAX_RGB", "REG_COLOR_CAPT", "FN_REL", "SYN_COLOR_TYPE", "SYN_MIX", "REG_CS_HSL", "REG_CS_CIE", "CS_LAB", "CS_LCH", "REG_FN_VAR", "SYN_FN_VAR", "REG_REL", "REG_REL_CAPT", "FN_REL_CAPT", "REG_START_MATH", "SYN_FN_MATH", "REG_START_REL", "cachedResults", "LRUCache", "resolveColorChannels", "tokens", "opt", "colorSpace", "format", "colorChannel", "mathFunc", "channels", "i", "nest", "func", "token", "type", "value", "detail", "numValue", "channel", "resolvedValue", "resolveDimension", "lastValue", "isString", "channelValues", "serializeCalc", "extractOriginColor", "currentColor", "cacheKey", "valueToJsonString", "originColor", "restValue", "NAMED_COLORS", "VAL_SPEC", "resolvedOriginColor", "resolve", "tokenize", "channelValue", "v1", "v2", "v3", "v4", "tokenValue", "resolveRelativeColor", "FN_VAR", "components", "parseComponentValue", "parsedComponents", "color", "alpha", "colorNotation", "syntaxFlags", "NONE", "roundToPrecision", "r", "g", "colorToRgb", "cs", "RGB_TRANSPARENT", "REG_FN_MATH_CALC", "SYN_FN_MATH_CALC", "REG_FN_REL", "SYN_FN_REL", "REG_FN_VAR", "SYN_FN_VAR", "cachedResults", "LRUCache", "resolve", "color", "opt", "isString", "currentColor", "customProperty", "format", "VAL_COMP", "key", "cacheKey", "valueToJsonString", "res", "cs", "r", "g", "b", "alpha", "VAL_SPEC", "cssVar", "resolveRelativeColor", "cssCalc", "FN_MIX", "resolveColorMix", "FN_COLOR", "resolveColorFunc", "resolveColorValue", "rgb", "hex", "convertRgbToHex", "value", "DEC", "HEX", "DEG", "DEG_HALF", "REG_COLOR", "SYN_COLOR_TYPE", "REG_MIX", "SYN_MIX", "isColor", "value", "isString", "NAMED_COLORS", "resolve", "VAL_SPEC", "valueToJsonString", "func", "key", "val", "replacedValue", "roundToPrecision", "bit", "interpolateHue", "hueA", "hueB", "arc", "VAL_MIX", "PPTH", "HALF", "DUO", "TRIA", "QUAT", "OCT", "DEC", "DOZ", "HEX", "SEXA", "DEG", "MAX_PCT", "MAX_RGB", "POW_SQR", "POW_CUBE", "POW_LINEAR", "LINEAR_COEF", "LINEAR_OFFSET", "LAB_L", "LAB_A", "LAB_B", "LAB_EPSILON", "LAB_KAPPA", "D50", "MATRIX_D50_TO_D65", "MATRIX_D65_TO_D50", "MATRIX_L_RGB_TO_XYZ", "MATRIX_XYZ_TO_L_RGB", "MATRIX_XYZ_TO_LMS", "MATRIX_LMS_TO_XYZ", "MATRIX_OKLAB_TO_LMS", "MATRIX_LMS_TO_OKLAB", "MATRIX_P3_TO_XYZ", "MATRIX_REC2020_TO_XYZ", "MATRIX_A98_TO_XYZ", "MATRIX_PROPHOTO_TO_XYZ_D50", "REG_COLOR", "SYN_COLOR_TYPE", "REG_CS_HUE", "CS_HUE_CAPT", "REG_CS_XYZ", "REG_CURRENT", "REG_FN_COLOR", "SYN_FN_COLOR", "REG_HSL", "SYN_HSL", "SYN_HSL_LV3", "REG_HWB", "REG_LAB", "SYN_MOD", "REG_LCH", "SYN_LCH", "REG_MIX", "SYN_MIX", "REG_MIX_CAPT", "SYN_MIX_CAPT", "REG_MIX_NEST", "REG_OKLAB", "REG_OKLCH", "REG_SPEC", "NAMED_COLORS", "validateColorComponents", "arr", "opt", "alpha", "minLength", "maxLength", "minRange", "maxRange", "validateRange", "l", "i", "v", "transformMatrix", "mtx", "vct", "skip", "r1c1", "r1c2", "r1c3", "r2c1", "r2c2", "r2c3", "r3c1", "r3c2", "r3c3", "v1", "v2", "v3", "p1", "p2", "p3", "normalizeColorComponents", "colorA", "colorB", "NONE", "numberToHexString", "value", "hex", "angleToDeg", "angle", "isString", "GRAD", "RAD", "reg", "NUM", "ANGLE", "val", "unit", "deg", "parseAlpha", "parseHexAlpha", "alphaMap", "convertRgbToLinearRgb", "rgb", "rr", "gg", "bb", "r", "g", "b", "COND_POW", "convertRgbToXyz", "x", "y", "z", "convertRgbToHex", "rgb", "r", "g", "b", "alpha", "validateColorComponents", "MAX_RGB", "rr", "numberToHexString", "gg", "bb", "aa", "hex", "convertLinearRgbToRgb", "round", "TRIA", "COND_POW", "POW_LINEAR", "LINEAR_OFFSET", "LINEAR_COEF", "convertXyzToRgb", "xyz", "skip", "x", "y", "z", "alpha", "validateColorComponents", "r", "g", "b", "transformMatrix", "MATRIX_XYZ_TO_L_RGB", "convertLinearRgbToRgb", "convertXyzToHsl", "xyz", "skip", "rr", "gg", "bb", "alpha", "convertXyzToRgb", "r", "MAX_RGB", "g", "b", "max", "min", "d", "l", "HALF", "MAX_PCT", "h", "s", "NONE", "DUO", "QUAT", "SEXA", "DEG", "convertXyzToHwb", "w", "bk", "convertXyzToOklab", "x", "y", "z", "validateColorComponents", "xyzLms", "transformMatrix", "MATRIX_XYZ_TO_LMS", "c", "a", "MATRIX_LMS_TO_OKLAB", "lPct", "convertXyzToOklch", "aa", "POW_SQR", "convertXyzD50ToRgb", "xyzD65", "MATRIX_D50_TO_D65", "convertXyzD50ToLab", "xyzD50", "val", "i", "D50", "f0", "f1", "f2", "LAB_EPSILON", "LAB_KAPPA", "HEX", "LAB_L", "LAB_A", "LAB_B", "convertXyzD50ToLch", "convertHexToRgb", "value", "isString", "arr", "parseHexAlpha", "convertHexToLinearRgb", "convertRgbToLinearRgb", "convertHexToXyz", "MATRIX_L_RGB_TO_XYZ", "parseRgb", "opt", "format", "reg", "SYN_MOD", "SYN_RGB_LV3", "VAL_MIX", "VAL_SPEC", "v1", "v2", "v3", "v4", "roundToPrecision", "OCT", "parseAlpha", "parseHsl", "REG_HSL", "angleToDeg", "ll", "sa", "rk", "DOZ", "gk", "TRIA", "parseHwb", "REG_HWB", "v", "factor", "parseLab", "REG_LAB", "COEF_PCT", "COND_POW", "REG_SPEC", "fl", "fa", "fb", "powFl", "POW_CUBE", "powFa", "powFb", "parseLch", "REG_LCH", "parseOklab", "REG_OKLAB", "MATRIX_OKLAB_TO_LMS", "MATRIX_LMS_TO_XYZ", "parseOklch", "REG_OKLCH", "cl", "parseColorFunc", "colorSpace", "d50", "REG_FN_COLOR", "cs", "DEC", "convertRgbToXyz", "MATRIX_D65_TO_D50", "linearRgb", "MATRIX_P3_TO_XYZ", "ALPHA", "BETA", "REC_COEF", "rgb", "MATRIX_REC2020_TO_XYZ", "POW_A98", "MATRIX_A98_TO_XYZ", "MATRIX_PROPHOTO_TO_XYZ_D50", "parseColorValue", "REG_COLOR", "REG_CURRENT", "VAL_COMP", "NAMED_COLORS", "resolveColorValue", "resolveColorFunc", "convertColorToLinearRgb", "FN_COLOR", "MATRIX_XYZ_TO_L_RGB", "convertColorToRgb", "convertLinearRgbToRgb", "convertColorToXyz", "convertColorToHsl", "convertColorToHwb", "convertColorToLab", "convertColorToLch", "convertColorToOklab", "convertColorToOklch", "resolveColorMix", "nestedItems", "REG_MIX", "FN_MIX", "REG_MIX_NEST", "regColorSpace", "CS_RGB", "CS_XYZ", "items", "item", "v5", "hueArc", "colorA", "pctA", "colorB", "pctB", "CS_MIX", "REG_CS_HUE", "itemA", "regA", "PCT", "itemB", "regB", "colorPart", "SYN_COLOR_TYPE", "itemPart", "itemPartCapt", "regColorPart", "regItemPart", "colorPartA", "colorPartB", "REG_MIX_CAPT", "pA", "pB", "m", "p1", "p2", "valueA", "valueB", "rgbA", "rgbB", "rA", "gA", "bA", "alphaA", "rB", "gB", "bB", "alphaB", "rNone", "gNone", "bNone", "alphaNone", "normalizeColorComponents", "factorA", "factorB", "REG_CS_XYZ", "xyzA", "xyzB", "xA", "yA", "zA", "xB", "yB", "zB", "xNone", "yNone", "zNone", "hslA", "hslB", "hA", "sA", "lA", "hB", "sB", "lB", "interpolateHue", "labA", "labB", "aA", "aB", "lNone", "aNone", "aO", "bO", "lchA", "lchB", "cA", "cB", "cNone", "hNone", "REG_FN_MATH_CALC", "SYN_FN_MATH_CALC", "REG_FN_REL", "SYN_FN_REL", "REG_FN_VAR", "SYN_FN_VAR", "cachedResults", "LRUCache", "preProcess", "value", "opt", "isString", "customProperty", "cacheKey", "valueToJsonString", "cssVar", "resolveRelativeColor", "cssCalc", "resolve", "VAL_COMP", "numberToHex", "hex", "numberToHexString", "colorToHex", "alpha", "colorToHsl", "hsl", "convertColorToHsl", "colorToHwb", "hwb", "convertColorToHwb", "colorToLab", "lab", "convertColorToLab", "colorToLch", "lch", "convertColorToLch", "colorToOklab", "convertColorToOklab", "colorToOklch", "convertColorToOklch", "colorToRgb", "rgb", "convertColorToRgb", "colorToXyz", "xyz", "parseColorFunc", "parseColorValue", "colorToXyzD50", "convert"] } diff --git a/dist/esm/css-color.min.js b/dist/esm/css-color.min.js deleted file mode 100644 index a4f441b..0000000 --- a/dist/esm/css-color.min.js +++ /dev/null @@ -1,261 +0,0 @@ -var kt=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Ss=new Set,_r=typeof process=="object"&&process?process:{},Ps=(e,t,n,r)=>{typeof _r.emitWarning=="function"?_r.emitWarning(e,t,n,r):console.error(`[${n}] ${t}: ${e}`)},$n=globalThis.AbortController,$s=globalThis.AbortSignal;if(typeof $n>"u"){$s=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(r,s){this._onabort.push(s)}},$n=class{constructor(){t()}signal=new $s;abort(r){if(!this.signal.aborted){this.signal.reason=r,this.signal.aborted=!0;for(let s of this.signal._onabort)s(r);this.signal.onabort?.(r)}}};let e=_r.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{e&&(e=!1,Ps("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}var Oi=e=>!Ss.has(e),Du=Symbol("type"),ht=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),ks=e=>ht(e)?e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?Dt:null:null,Dt=class extends Array{constructor(t){super(t),this.fill(0)}},wr=class e{heap;length;static#a=!1;static create(t){let n=ks(t);if(!n)return[];e.#a=!0;let r=new e(t,n);return e.#a=!1,r}constructor(t,n){if(!e.#a)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new n(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},Te=class e{#a;#h;#m;#u;#N;#C;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#p;#s;#t;#e;#c;#l;#o;#i;#d;#f;#_;#w;#x;#y;#$;#g;static unsafeExposeInternals(t){return{starts:t.#w,ttls:t.#x,sizes:t.#_,keyMap:t.#s,keyList:t.#t,valList:t.#e,next:t.#c,prev:t.#l,get head(){return t.#o},get tail(){return t.#i},free:t.#d,isBackgroundFetch:n=>t.#r(n),backgroundFetch:(n,r,s,o)=>t.#M(n,r,s,o),moveToTail:n=>t.#k(n),indexes:n=>t.#F(n),rindexes:n=>t.#E(n),isStale:n=>t.#b(n)}}get max(){return this.#a}get maxSize(){return this.#h}get calculatedSize(){return this.#p}get size(){return this.#n}get fetchMethod(){return this.#N}get memoMethod(){return this.#C}get dispose(){return this.#m}get disposeAfter(){return this.#u}constructor(t){let{max:n=0,ttl:r,ttlResolution:s=1,ttlAutopurge:o,updateAgeOnGet:i,updateAgeOnHas:a,allowStale:c,dispose:l,disposeAfter:u,noDisposeOnSet:h,noUpdateTTL:d,maxSize:g=0,maxEntrySize:w=0,sizeCalculation:N,fetchMethod:b,memoMethod:m,noDeleteOnFetchRejection:C,noDeleteOnStaleGet:_,allowStaleOnFetchRejection:y,allowStaleOnFetchAbort:E,ignoreFetchAbort:k}=t;if(n!==0&&!ht(n))throw new TypeError("max option must be a nonnegative integer");let S=n?ks(n):Array;if(!S)throw new Error("invalid max value: "+n);if(this.#a=n,this.#h=g,this.maxEntrySize=w||this.#h,this.sizeCalculation=N,this.sizeCalculation){if(!this.#h&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(m!==void 0&&typeof m!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#C=m,b!==void 0&&typeof b!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#N=b,this.#$=!!b,this.#s=new Map,this.#t=new Array(n).fill(void 0),this.#e=new Array(n).fill(void 0),this.#c=new S(n),this.#l=new S(n),this.#o=0,this.#i=0,this.#d=wr.create(n),this.#n=0,this.#p=0,typeof l=="function"&&(this.#m=l),typeof u=="function"?(this.#u=u,this.#f=[]):(this.#u=void 0,this.#f=void 0),this.#y=!!this.#m,this.#g=!!this.#u,this.noDisposeOnSet=!!h,this.noUpdateTTL=!!d,this.noDeleteOnFetchRejection=!!C,this.allowStaleOnFetchRejection=!!y,this.allowStaleOnFetchAbort=!!E,this.ignoreFetchAbort=!!k,this.maxEntrySize!==0){if(this.#h!==0&&!ht(this.#h))throw new TypeError("maxSize must be a positive integer if specified");if(!ht(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#z()}if(this.allowStale=!!c,this.noDeleteOnStaleGet=!!_,this.updateAgeOnGet=!!i,this.updateAgeOnHas=!!a,this.ttlResolution=ht(s)||s===0?s:1,this.ttlAutopurge=!!o,this.ttl=r||0,this.ttl){if(!ht(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#R()}if(this.#a===0&&this.ttl===0&&this.#h===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#a&&!this.#h){let H="LRU_CACHE_UNBOUNDED";Oi(H)&&(Ss.add(H),Ps("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",H,e))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#R(){let t=new Dt(this.#a),n=new Dt(this.#a);this.#x=t,this.#w=n,this.#B=(o,i,a=kt.now())=>{if(n[o]=i!==0?a:0,t[o]=i,i!==0&&this.ttlAutopurge){let c=setTimeout(()=>{this.#b(o)&&this.#v(this.#t[o],"expire")},i+1);c.unref&&c.unref()}},this.#S=o=>{n[o]=t[o]!==0?kt.now():0},this.#A=(o,i)=>{if(t[i]){let a=t[i],c=n[i];if(!a||!c)return;o.ttl=a,o.start=c,o.now=r||s();let l=o.now-c;o.remainingTTL=a-l}};let r=0,s=()=>{let o=kt.now();if(this.ttlResolution>0){r=o;let i=setTimeout(()=>r=0,this.ttlResolution);i.unref&&i.unref()}return o};this.getRemainingTTL=o=>{let i=this.#s.get(o);if(i===void 0)return 0;let a=t[i],c=n[i];if(!a||!c)return 1/0;let l=(r||s())-c;return a-l},this.#b=o=>{let i=n[o],a=t[o];return!!a&&!!i&&(r||s())-i>a}}#S=()=>{};#A=()=>{};#B=()=>{};#b=()=>!1;#z(){let t=new Dt(this.#a);this.#p=0,this.#_=t,this.#P=n=>{this.#p-=t[n],t[n]=0},this.#L=(n,r,s,o)=>{if(this.#r(r))return 0;if(!ht(s))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(s=o(r,n),!ht(s))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return s},this.#D=(n,r,s)=>{if(t[n]=r,this.#h){let o=this.#h-t[n];for(;this.#p>o;)this.#T(!0)}this.#p+=t[n],s&&(s.entrySize=r,s.totalCalculatedSize=this.#p)}}#P=t=>{};#D=(t,n,r)=>{};#L=(t,n,r,s)=>{if(r||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#n)for(let n=this.#i;!(!this.#O(n)||((t||!this.#b(n))&&(yield n),n===this.#o));)n=this.#l[n]}*#E({allowStale:t=this.allowStale}={}){if(this.#n)for(let n=this.#o;!(!this.#O(n)||((t||!this.#b(n))&&(yield n),n===this.#i));)n=this.#c[n]}#O(t){return t!==void 0&&this.#s.get(this.#t[t])===t}*entries(){for(let t of this.#F())this.#e[t]!==void 0&&this.#t[t]!==void 0&&!this.#r(this.#e[t])&&(yield[this.#t[t],this.#e[t]])}*rentries(){for(let t of this.#E())this.#e[t]!==void 0&&this.#t[t]!==void 0&&!this.#r(this.#e[t])&&(yield[this.#t[t],this.#e[t]])}*keys(){for(let t of this.#F()){let n=this.#t[t];n!==void 0&&!this.#r(this.#e[t])&&(yield n)}}*rkeys(){for(let t of this.#E()){let n=this.#t[t];n!==void 0&&!this.#r(this.#e[t])&&(yield n)}}*values(){for(let t of this.#F())this.#e[t]!==void 0&&!this.#r(this.#e[t])&&(yield this.#e[t])}*rvalues(){for(let t of this.#E())this.#e[t]!==void 0&&!this.#r(this.#e[t])&&(yield this.#e[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,n={}){for(let r of this.#F()){let s=this.#e[r],o=this.#r(s)?s.__staleWhileFetching:s;if(o!==void 0&&t(o,this.#t[r],this))return this.get(this.#t[r],n)}}forEach(t,n=this){for(let r of this.#F()){let s=this.#e[r],o=this.#r(s)?s.__staleWhileFetching:s;o!==void 0&&t.call(n,o,this.#t[r],this)}}rforEach(t,n=this){for(let r of this.#E()){let s=this.#e[r],o=this.#r(s)?s.__staleWhileFetching:s;o!==void 0&&t.call(n,o,this.#t[r],this)}}purgeStale(){let t=!1;for(let n of this.#E({allowStale:!0}))this.#b(n)&&(this.#v(this.#t[n],"expire"),t=!0);return t}info(t){let n=this.#s.get(t);if(n===void 0)return;let r=this.#e[n],s=this.#r(r)?r.__staleWhileFetching:r;if(s===void 0)return;let o={value:s};if(this.#x&&this.#w){let i=this.#x[n],a=this.#w[n];if(i&&a){let c=i-(kt.now()-a);o.ttl=c,o.start=Date.now()}}return this.#_&&(o.size=this.#_[n]),o}dump(){let t=[];for(let n of this.#F({allowStale:!0})){let r=this.#t[n],s=this.#e[n],o=this.#r(s)?s.__staleWhileFetching:s;if(o===void 0||r===void 0)continue;let i={value:o};if(this.#x&&this.#w){i.ttl=this.#x[n];let a=kt.now()-this.#w[n];i.start=Math.floor(Date.now()-a)}this.#_&&(i.size=this.#_[n]),t.unshift([r,i])}return t}load(t){this.clear();for(let[n,r]of t){if(r.start){let s=Date.now()-r.start;r.start=kt.now()-s}this.set(n,r.value,r)}}set(t,n,r={}){if(n===void 0)return this.delete(t),this;let{ttl:s=this.ttl,start:o,noDisposeOnSet:i=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:c}=r,{noUpdateTTL:l=this.noUpdateTTL}=r,u=this.#L(t,n,r.size||0,a);if(this.maxEntrySize&&u>this.maxEntrySize)return c&&(c.set="miss",c.maxEntrySizeExceeded=!0),this.#v(t,"set"),this;let h=this.#n===0?void 0:this.#s.get(t);if(h===void 0)h=this.#n===0?this.#i:this.#d.length!==0?this.#d.pop():this.#n===this.#a?this.#T(!1):this.#n,this.#t[h]=t,this.#e[h]=n,this.#s.set(t,h),this.#c[this.#i]=h,this.#l[h]=this.#i,this.#i=h,this.#n++,this.#D(h,u,c),c&&(c.set="add"),l=!1;else{this.#k(h);let d=this.#e[h];if(n!==d){if(this.#$&&this.#r(d)){d.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:g}=d;g!==void 0&&!i&&(this.#y&&this.#m?.(g,t,"set"),this.#g&&this.#f?.push([g,t,"set"]))}else i||(this.#y&&this.#m?.(d,t,"set"),this.#g&&this.#f?.push([d,t,"set"]));if(this.#P(h),this.#D(h,u,c),this.#e[h]=n,c){c.set="replace";let g=d&&this.#r(d)?d.__staleWhileFetching:d;g!==void 0&&(c.oldValue=g)}}else c&&(c.set="update")}if(s!==0&&!this.#x&&this.#R(),this.#x&&(l||this.#B(h,s,o),c&&this.#A(c,h)),!i&&this.#g&&this.#f){let d=this.#f,g;for(;g=d?.shift();)this.#u?.(...g)}return this}pop(){try{for(;this.#n;){let t=this.#e[this.#o];if(this.#T(!0),this.#r(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#g&&this.#f){let t=this.#f,n;for(;n=t?.shift();)this.#u?.(...n)}}}#T(t){let n=this.#o,r=this.#t[n],s=this.#e[n];return this.#$&&this.#r(s)?s.__abortController.abort(new Error("evicted")):(this.#y||this.#g)&&(this.#y&&this.#m?.(s,r,"evict"),this.#g&&this.#f?.push([s,r,"evict"])),this.#P(n),t&&(this.#t[n]=void 0,this.#e[n]=void 0,this.#d.push(n)),this.#n===1?(this.#o=this.#i=0,this.#d.length=0):this.#o=this.#c[n],this.#s.delete(r),this.#n--,n}has(t,n={}){let{updateAgeOnHas:r=this.updateAgeOnHas,status:s}=n,o=this.#s.get(t);if(o!==void 0){let i=this.#e[o];if(this.#r(i)&&i.__staleWhileFetching===void 0)return!1;if(this.#b(o))s&&(s.has="stale",this.#A(s,o));else return r&&this.#S(o),s&&(s.has="hit",this.#A(s,o)),!0}else s&&(s.has="miss");return!1}peek(t,n={}){let{allowStale:r=this.allowStale}=n,s=this.#s.get(t);if(s===void 0||!r&&this.#b(s))return;let o=this.#e[s];return this.#r(o)?o.__staleWhileFetching:o}#M(t,n,r,s){let o=n===void 0?void 0:this.#e[n];if(this.#r(o))return o;let i=new $n,{signal:a}=r;a?.addEventListener("abort",()=>i.abort(a.reason),{signal:i.signal});let c={signal:i.signal,options:r,context:s},l=(N,b=!1)=>{let{aborted:m}=i.signal,C=r.ignoreFetchAbort&&N!==void 0;if(r.status&&(m&&!b?(r.status.fetchAborted=!0,r.status.fetchError=i.signal.reason,C&&(r.status.fetchAbortIgnored=!0)):r.status.fetchResolved=!0),m&&!C&&!b)return h(i.signal.reason);let _=g;return this.#e[n]===g&&(N===void 0?_.__staleWhileFetching?this.#e[n]=_.__staleWhileFetching:this.#v(t,"fetch"):(r.status&&(r.status.fetchUpdated=!0),this.set(t,N,c.options))),N},u=N=>(r.status&&(r.status.fetchRejected=!0,r.status.fetchError=N),h(N)),h=N=>{let{aborted:b}=i.signal,m=b&&r.allowStaleOnFetchAbort,C=m||r.allowStaleOnFetchRejection,_=C||r.noDeleteOnFetchRejection,y=g;if(this.#e[n]===g&&(!_||y.__staleWhileFetching===void 0?this.#v(t,"fetch"):m||(this.#e[n]=y.__staleWhileFetching)),C)return r.status&&y.__staleWhileFetching!==void 0&&(r.status.returnedStale=!0),y.__staleWhileFetching;if(y.__returned===y)throw N},d=(N,b)=>{let m=this.#N?.(t,o,c);m&&m instanceof Promise&&m.then(C=>N(C===void 0?void 0:C),b),i.signal.addEventListener("abort",()=>{(!r.ignoreFetchAbort||r.allowStaleOnFetchAbort)&&(N(void 0),r.allowStaleOnFetchAbort&&(N=C=>l(C,!0)))})};r.status&&(r.status.fetchDispatched=!0);let g=new Promise(d).then(l,u),w=Object.assign(g,{__abortController:i,__staleWhileFetching:o,__returned:void 0});return n===void 0?(this.set(t,w,{...c.options,status:void 0}),n=this.#s.get(t)):this.#e[n]=w,w}#r(t){if(!this.#$)return!1;let n=t;return!!n&&n instanceof Promise&&n.hasOwnProperty("__staleWhileFetching")&&n.__abortController instanceof $n}async fetch(t,n={}){let{allowStale:r=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,ttl:i=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:c=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:h=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:w=this.allowStaleOnFetchAbort,context:N,forceRefresh:b=!1,status:m,signal:C}=n;if(!this.#$)return m&&(m.fetch="get"),this.get(t,{allowStale:r,updateAgeOnGet:s,noDeleteOnStaleGet:o,status:m});let _={allowStale:r,updateAgeOnGet:s,noDeleteOnStaleGet:o,ttl:i,noDisposeOnSet:a,size:c,sizeCalculation:l,noUpdateTTL:u,noDeleteOnFetchRejection:h,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:w,ignoreFetchAbort:g,status:m,signal:C},y=this.#s.get(t);if(y===void 0){m&&(m.fetch="miss");let E=this.#M(t,y,_,N);return E.__returned=E}else{let E=this.#e[y];if(this.#r(E)){let Y=r&&E.__staleWhileFetching!==void 0;return m&&(m.fetch="inflight",Y&&(m.returnedStale=!0)),Y?E.__staleWhileFetching:E.__returned=E}let k=this.#b(y);if(!b&&!k)return m&&(m.fetch="hit"),this.#k(y),s&&this.#S(y),m&&this.#A(m,y),E;let S=this.#M(t,y,_,N),z=S.__staleWhileFetching!==void 0&&r;return m&&(m.fetch=k?"stale":"refresh",z&&k&&(m.returnedStale=!0)),z?S.__staleWhileFetching:S.__returned=S}}async forceFetch(t,n={}){let r=await this.fetch(t,n);if(r===void 0)throw new Error("fetch() returned undefined");return r}memo(t,n={}){let r=this.#C;if(!r)throw new Error("no memoMethod provided to constructor");let{context:s,forceRefresh:o,...i}=n,a=this.get(t,i);if(!o&&a!==void 0)return a;let c=r(t,a,{options:i,context:s});return this.set(t,c,i),c}get(t,n={}){let{allowStale:r=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,status:i}=n,a=this.#s.get(t);if(a!==void 0){let c=this.#e[a],l=this.#r(c);return i&&this.#A(i,a),this.#b(a)?(i&&(i.get="stale"),l?(i&&r&&c.__staleWhileFetching!==void 0&&(i.returnedStale=!0),r?c.__staleWhileFetching:void 0):(o||this.#v(t,"expire"),i&&r&&(i.returnedStale=!0),r?c:void 0)):(i&&(i.get="hit"),l?c.__staleWhileFetching:(this.#k(a),s&&this.#S(a),c))}else i&&(i.get="miss")}#I(t,n){this.#l[n]=t,this.#c[t]=n}#k(t){t!==this.#i&&(t===this.#o?this.#o=this.#c[t]:this.#I(this.#l[t],this.#c[t]),this.#I(this.#i,t),this.#i=t)}delete(t){return this.#v(t,"delete")}#v(t,n){let r=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(r=!0,this.#n===1)this.#H(n);else{this.#P(s);let o=this.#e[s];if(this.#r(o)?o.__abortController.abort(new Error("deleted")):(this.#y||this.#g)&&(this.#y&&this.#m?.(o,t,n),this.#g&&this.#f?.push([o,t,n])),this.#s.delete(t),this.#t[s]=void 0,this.#e[s]=void 0,s===this.#i)this.#i=this.#l[s];else if(s===this.#o)this.#o=this.#c[s];else{let i=this.#l[s];this.#c[i]=this.#c[s];let a=this.#c[s];this.#l[a]=this.#l[s]}this.#n--,this.#d.push(s)}}if(this.#g&&this.#f?.length){let s=this.#f,o;for(;o=s?.shift();)this.#u?.(...o)}return r}clear(){return this.#H("delete")}#H(t){for(let n of this.#E({allowStale:!0})){let r=this.#e[n];if(this.#r(r))r.__abortController.abort(new Error("deleted"));else{let s=this.#t[n];this.#y&&this.#m?.(r,s,t),this.#g&&this.#f?.push([r,s,t])}}if(this.#s.clear(),this.#e.fill(void 0),this.#t.fill(void 0),this.#x&&this.#w&&(this.#x.fill(0),this.#w.fill(0)),this.#_&&this.#_.fill(0),this.#o=0,this.#i=0,this.#d.length=0,this.#p=0,this.#n=0,this.#g&&this.#f){let n=this.#f,r;for(;r=n?.shift();)this.#u?.(...r)}}};var M=e=>typeof e=="string"||e instanceof String;var ft=class extends Error{sourceStart;sourceEnd;parserState;constructor(t,n,r,s){super(t),this.name="ParseError",this.sourceStart=n,this.sourceEnd=r,this.parserState=s}},Ze=class extends ft{token;constructor(t,n,r,s,o){super(t,n,r,s),this.token=o}},it={UnexpectedNewLineInString:"Unexpected newline while consuming a string token.",UnexpectedEOFInString:"Unexpected EOF while consuming a string token.",UnexpectedEOFInComment:"Unexpected EOF while consuming a comment.",UnexpectedEOFInURL:"Unexpected EOF while consuming a url token.",UnexpectedEOFInEscapedCodePoint:"Unexpected EOF while consuming an escaped code point.",UnexpectedCharacterInURL:"Unexpected character while consuming a url token.",InvalidEscapeSequenceInURL:"Invalid escape sequence while consuming a url token.",InvalidEscapeSequenceAfterBackslash:'Invalid escape sequence after "\\"'},Ru=typeof globalThis<"u"&&"structuredClone"in globalThis;function Se(...e){let t="";for(let n=0;n=48&&e<=57}function Hi(e){return e>=65&&e<=90}function zi(e){return e>=97&&e<=122}function Ct(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70}function Wi(e){return zi(e)||Hi(e)}function Lt(e){return Wi(e)||Xi(e)||e===95}function Ar(e){return Lt(e)||Me(e)||e===le}function Xi(e){return e===183||e===8204||e===8205||e===8255||e===8256||e===8204||192<=e&&e<=214||216<=e&&e<=246||248<=e&&e<=893||895<=e&&e<=8191||8304<=e&&e<=8591||11264<=e&&e<=12271||12289<=e&&e<=55295||63744<=e&&e<=64975||65008<=e&&e<=65533||e===0||!!Ot(e)||e>=65536}function Pn(e){return e===Rt||e===Mt||e===12}function _t(e){return e===32||e===Rt||e===9||e===Mt||e===12}function Ot(e){return e>=55296&&e<=57343}function It(e){return e.source.codePointAt(e.cursor)===92&&!Pn(e.source.codePointAt(e.cursor+1)??-1)}function kn(e,t){return t.source.codePointAt(t.cursor)===le?t.source.codePointAt(t.cursor+1)===le||!!Lt(t.source.codePointAt(t.cursor+1)??-1)||t.source.codePointAt(t.cursor+1)===92&&!Pn(t.source.codePointAt(t.cursor+2)??-1):!!Lt(t.source.codePointAt(t.cursor)??-1)||It(t)}function Ds(e){return e.source.codePointAt(e.cursor)===Bt||e.source.codePointAt(e.cursor)===le?!!Me(e.source.codePointAt(e.cursor+1)??-1)||e.source.codePointAt(e.cursor+1)===46&&Me(e.source.codePointAt(e.cursor+2)??-1):e.source.codePointAt(e.cursor)===46?Me(e.source.codePointAt(e.cursor+1)??-1):Me(e.source.codePointAt(e.cursor)??-1)}function Yi(e){return e.source.codePointAt(e.cursor)===47&&e.source.codePointAt(e.cursor+1)===42}function Gi(e){return e.source.codePointAt(e.cursor)===le&&e.source.codePointAt(e.cursor+1)===le&&e.source.codePointAt(e.cursor+2)===62}var p,F,Dn;function Ts(e){switch(e){case p.OpenParen:return p.CloseParen;case p.CloseParen:return p.OpenParen;case p.OpenCurly:return p.CloseCurly;case p.CloseCurly:return p.OpenCurly;case p.OpenSquare:return p.CloseSquare;case p.CloseSquare:return p.OpenSquare;default:return null}}function Ms(e){switch(e[0]){case p.OpenParen:return[p.CloseParen,")",-1,-1,void 0];case p.CloseParen:return[p.OpenParen,"(",-1,-1,void 0];case p.OpenCurly:return[p.CloseCurly,"}",-1,-1,void 0];case p.CloseCurly:return[p.OpenCurly,"{",-1,-1,void 0];case p.OpenSquare:return[p.CloseSquare,"]",-1,-1,void 0];case p.CloseSquare:return[p.OpenSquare,"[",-1,-1,void 0];default:return null}}function Vi(e,t){for(t.advanceCodePoint(2);;){let n=t.readCodePoint();if(n===void 0){let r=[p.Comment,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return e.onParseError(new Ze(it.UnexpectedEOFInComment,t.representationStart,t.representationEnd,["4.3.2. Consume comments","Unexpected EOF"],r)),r}if(n===42&&t.source.codePointAt(t.cursor)!==void 0&&t.source.codePointAt(t.cursor)===47){t.advanceCodePoint();break}}return[p.Comment,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0]}function Tn(e,t){let n=t.readCodePoint();if(n===void 0)return e.onParseError(new ft(it.UnexpectedEOFInEscapedCodePoint,t.representationStart,t.representationEnd,["4.3.7. Consume an escaped code point","Unexpected EOF"])),Tt;if(Ct(n)){let r=[n],s;for(;(s=t.source.codePointAt(t.cursor))!==void 0&&Ct(s)&&r.length<6;)r.push(s),t.advanceCodePoint();_t(t.source.codePointAt(t.cursor)??-1)&&(t.source.codePointAt(t.cursor)===Mt&&t.source.codePointAt(t.cursor+1)===Rt&&t.advanceCodePoint(),t.advanceCodePoint());let o=parseInt(String.fromCodePoint(...r),16);return o===0||Ot(o)||o>1114111?Tt:o}return n===0||Ot(n)?Tt:n}function Mn(e,t){let n=[];for(;;){let r=t.source.codePointAt(t.cursor)??-1;if(r===0||Ot(r))n.push(Tt),t.advanceCodePoint(+(r>65535)+1);else if(Ar(r))n.push(r),t.advanceCodePoint(+(r>65535)+1);else{if(!It(t))return n;t.advanceCodePoint(),n.push(Tn(e,t))}}}function Ui(e,t){t.advanceCodePoint();let n=t.source.codePointAt(t.cursor);if(n!==void 0&&(Ar(n)||It(t))){let r=Dn.Unrestricted;kn(0,t)&&(r=Dn.ID);let s=Mn(e,t);return[p.Hash,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:String.fromCodePoint(...s),type:r}]}return[p.Delim,"#",t.representationStart,t.representationEnd,{value:"#"}]}function Zi(e,t){let n=F.Integer;for(t.source.codePointAt(t.cursor)!==Bt&&t.source.codePointAt(t.cursor)!==le||t.advanceCodePoint();Me(t.source.codePointAt(t.cursor)??-1);)t.advanceCodePoint();if(t.source.codePointAt(t.cursor)===46&&Me(t.source.codePointAt(t.cursor+1)??-1))for(t.advanceCodePoint(2),n=F.Number;Me(t.source.codePointAt(t.cursor)??-1);)t.advanceCodePoint();if(t.source.codePointAt(t.cursor)===101||t.source.codePointAt(t.cursor)===69){if(Me(t.source.codePointAt(t.cursor+1)??-1))t.advanceCodePoint(2);else{if(t.source.codePointAt(t.cursor+1)!==le&&t.source.codePointAt(t.cursor+1)!==Bt||!Me(t.source.codePointAt(t.cursor+2)??-1))return n;t.advanceCodePoint(3)}for(n=F.Number;Me(t.source.codePointAt(t.cursor)??-1);)t.advanceCodePoint()}return n}function yr(e,t){let n;{let o=t.source.codePointAt(t.cursor);o===le?n="-":o===Bt&&(n="+")}let r=Zi(0,t),s=parseFloat(t.source.slice(t.representationStart,t.representationEnd+1));if(kn(0,t)){let o=Mn(e,t);return[p.Dimension,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:s,signCharacter:n,type:r,unit:String.fromCodePoint(...o)}]}return t.source.codePointAt(t.cursor)===37?(t.advanceCodePoint(),[p.Percentage,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:s,signCharacter:n}]):[p.Number,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:s,signCharacter:n,type:r}]}function Ki(e){for(;_t(e.source.codePointAt(e.cursor)??-1);)e.advanceCodePoint();return[p.Whitespace,e.source.slice(e.representationStart,e.representationEnd+1),e.representationStart,e.representationEnd,void 0]}(function(e){e.Comment="comment",e.AtKeyword="at-keyword-token",e.BadString="bad-string-token",e.BadURL="bad-url-token",e.CDC="CDC-token",e.CDO="CDO-token",e.Colon="colon-token",e.Comma="comma-token",e.Delim="delim-token",e.Dimension="dimension-token",e.EOF="EOF-token",e.Function="function-token",e.Hash="hash-token",e.Ident="ident-token",e.Number="number-token",e.Percentage="percentage-token",e.Semicolon="semicolon-token",e.String="string-token",e.URL="url-token",e.Whitespace="whitespace-token",e.OpenParen="(-token",e.CloseParen=")-token",e.OpenSquare="[-token",e.CloseSquare="]-token",e.OpenCurly="{-token",e.CloseCurly="}-token",e.UnicodeRange="unicode-range-token"})(p||(p={})),function(e){e.Integer="integer",e.Number="number"}(F||(F={})),function(e){e.Unrestricted="unrestricted",e.ID="id"}(Dn||(Dn={}));var vr=class{cursor=0;source="";representationStart=0;representationEnd=-1;constructor(t){this.source=t}advanceCodePoint(t=1){this.cursor=this.cursor+t,this.representationEnd=this.cursor-1}readCodePoint(){let t=this.source.codePointAt(this.cursor);if(t!==void 0)return this.cursor=this.cursor+1,this.representationEnd=this.cursor-1,t}unreadCodePoint(t=1){this.cursor=this.cursor-t,this.representationEnd=this.cursor-1}resetRepresentation(){this.representationStart=this.cursor,this.representationEnd=-1}};function qi(e,t){let n="",r=t.readCodePoint();for(;;){let s=t.readCodePoint();if(s===void 0){let o=[p.String,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:n}];return e.onParseError(new Ze(it.UnexpectedEOFInString,t.representationStart,t.representationEnd,["4.3.5. Consume a string token","Unexpected EOF"],o)),o}if(Pn(s)){t.unreadCodePoint();let o=[p.BadString,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return e.onParseError(new Ze(it.UnexpectedNewLineInString,t.representationStart,t.source.codePointAt(t.cursor)===Mt&&t.source.codePointAt(t.cursor+1)===Rt?t.representationEnd+2:t.representationEnd+1,["4.3.5. Consume a string token","Unexpected newline"],o)),o}if(s===r)return[p.String,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:n}];if(s!==92)s===0||Ot(s)?n+=String.fromCodePoint(Tt):n+=String.fromCodePoint(s);else{if(t.source.codePointAt(t.cursor)===void 0)continue;if(Pn(t.source.codePointAt(t.cursor)??-1)){t.source.codePointAt(t.cursor)===Mt&&t.source.codePointAt(t.cursor+1)===Rt&&t.advanceCodePoint(),t.advanceCodePoint();continue}n+=String.fromCodePoint(Tn(e,t))}}}function ji(e){return!(e.length!==3||e[0]!==117&&e[0]!==85||e[1]!==114&&e[1]!==82||e[2]!==108&&e[2]!==76)}function Fr(e,t){for(;;){let n=t.source.codePointAt(t.cursor);if(n===void 0)return;if(n===41)return void t.advanceCodePoint();It(t)?(t.advanceCodePoint(),Tn(e,t)):t.advanceCodePoint()}}function Ji(e,t){for(;_t(t.source.codePointAt(t.cursor)??-1);)t.advanceCodePoint();let n="";for(;;){if(t.source.codePointAt(t.cursor)===void 0){let o=[p.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:n}];return e.onParseError(new Ze(it.UnexpectedEOFInURL,t.representationStart,t.representationEnd,["4.3.6. Consume a url token","Unexpected EOF"],o)),o}if(t.source.codePointAt(t.cursor)===41)return t.advanceCodePoint(),[p.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:n}];if(_t(t.source.codePointAt(t.cursor)??-1)){for(t.advanceCodePoint();_t(t.source.codePointAt(t.cursor)??-1);)t.advanceCodePoint();if(t.source.codePointAt(t.cursor)===void 0){let o=[p.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:n}];return e.onParseError(new Ze(it.UnexpectedEOFInURL,t.representationStart,t.representationEnd,["4.3.6. Consume a url token","Consume as much whitespace as possible","Unexpected EOF"],o)),o}return t.source.codePointAt(t.cursor)===41?(t.advanceCodePoint(),[p.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:n}]):(Fr(e,t),[p.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0])}let s=t.source.codePointAt(t.cursor);if(s===34||s===39||s===40||(r=s??-1)===11||r===127||0<=r&&r<=8||14<=r&&r<=31){Fr(e,t);let o=[p.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return e.onParseError(new Ze(it.UnexpectedCharacterInURL,t.representationStart,t.representationEnd,["4.3.6. Consume a url token",`Unexpected U+0022 QUOTATION MARK ("), U+0027 APOSTROPHE ('), U+0028 LEFT PARENTHESIS (() or non-printable code point`],o)),o}if(s===92){if(It(t)){t.advanceCodePoint(),n+=String.fromCodePoint(Tn(e,t));continue}Fr(e,t);let o=[p.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return e.onParseError(new Ze(it.InvalidEscapeSequenceInURL,t.representationStart,t.representationEnd,["4.3.6. Consume a url token","U+005C REVERSE SOLIDUS (\\)","The input stream does not start with a valid escape sequence"],o)),o}t.source.codePointAt(t.cursor)===0||Ot(t.source.codePointAt(t.cursor)??-1)?(n+=String.fromCodePoint(Tt),t.advanceCodePoint()):(n+=t.source[t.cursor],t.advanceCodePoint())}var r}function Er(e,t){let n=Mn(e,t);if(t.source.codePointAt(t.cursor)!==40)return[p.Ident,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:String.fromCodePoint(...n)}];if(ji(n)){t.advanceCodePoint();let r=0;for(;;){let s=_t(t.source.codePointAt(t.cursor)??-1),o=_t(t.source.codePointAt(t.cursor+1)??-1);if(s&&o){r+=1,t.advanceCodePoint(1);continue}let i=s?t.source.codePointAt(t.cursor+1):t.source.codePointAt(t.cursor);if(i===34||i===39)return r>0&&t.unreadCodePoint(r),[p.Function,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:String.fromCodePoint(...n)}];break}return Ji(e,t)}return t.advanceCodePoint(),[p.Function,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:String.fromCodePoint(...n)}]}function Qi(e){return!(e.source.codePointAt(e.cursor)!==117&&e.source.codePointAt(e.cursor)!==85||e.source.codePointAt(e.cursor+1)!==Bt||e.source.codePointAt(e.cursor+2)!==63&&!Ct(e.source.codePointAt(e.cursor+2)??-1))}function ea(e,t){t.advanceCodePoint(2);let n=[],r=[],s;for(;(s=t.source.codePointAt(t.cursor))!==void 0&&n.length<6&&Ct(s);)n.push(s),t.advanceCodePoint();for(;(s=t.source.codePointAt(t.cursor))!==void 0&&n.length<6&&s===63;)r.length===0&&r.push(...n),n.push(48),r.push(70),t.advanceCodePoint();if(!r.length&&t.source.codePointAt(t.cursor)===le&&Ct(t.source.codePointAt(t.cursor+1)??-1))for(t.advanceCodePoint();(s=t.source.codePointAt(t.cursor))!==void 0&&r.length<6&&Ct(s);)r.push(s),t.advanceCodePoint();if(!r.length){let a=parseInt(String.fromCodePoint(...n),16);return[p.UnicodeRange,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{startOfRange:a,endOfRange:a}]}let o=parseInt(String.fromCodePoint(...n),16),i=parseInt(String.fromCodePoint(...r),16);return[p.UnicodeRange,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{startOfRange:o,endOfRange:i}]}function We(e,t){let n=$r(e,t),r=[];for(;!n.endOfFile();)r.push(n.nextToken());return r.push(n.nextToken()),r}function $r(e,t){let n=e.css.valueOf(),r=e.unicodeRangesAllowed??!1,s=new vr(n),o={onParseError:t?.onParseError??ta};return{nextToken:function(){s.resetRepresentation();let a=s.source.codePointAt(s.cursor);if(a===void 0)return[p.EOF,"",-1,-1,void 0];if(a===47&&Yi(s))return Vi(o,s);if(r&&(a===117||a===85)&&Qi(s))return ea(0,s);if(Lt(a))return Er(o,s);if(Me(a))return yr(o,s);switch(a){case 44:return s.advanceCodePoint(),[p.Comma,",",s.representationStart,s.representationEnd,void 0];case 58:return s.advanceCodePoint(),[p.Colon,":",s.representationStart,s.representationEnd,void 0];case 59:return s.advanceCodePoint(),[p.Semicolon,";",s.representationStart,s.representationEnd,void 0];case 40:return s.advanceCodePoint(),[p.OpenParen,"(",s.representationStart,s.representationEnd,void 0];case 41:return s.advanceCodePoint(),[p.CloseParen,")",s.representationStart,s.representationEnd,void 0];case 91:return s.advanceCodePoint(),[p.OpenSquare,"[",s.representationStart,s.representationEnd,void 0];case 93:return s.advanceCodePoint(),[p.CloseSquare,"]",s.representationStart,s.representationEnd,void 0];case 123:return s.advanceCodePoint(),[p.OpenCurly,"{",s.representationStart,s.representationEnd,void 0];case 125:return s.advanceCodePoint(),[p.CloseCurly,"}",s.representationStart,s.representationEnd,void 0];case 39:case 34:return qi(o,s);case 35:return Ui(o,s);case Bt:case 46:return Ds(s)?yr(o,s):(s.advanceCodePoint(),[p.Delim,s.source[s.representationStart],s.representationStart,s.representationEnd,{value:s.source[s.representationStart]}]);case Rt:case Mt:case 12:case 9:case 32:return Ki(s);case le:return Ds(s)?yr(o,s):Gi(s)?(s.advanceCodePoint(3),[p.CDC,"-->",s.representationStart,s.representationEnd,void 0]):kn(0,s)?Er(o,s):(s.advanceCodePoint(),[p.Delim,"-",s.representationStart,s.representationEnd,{value:"-"}]);case 60:return Ii(s)?(s.advanceCodePoint(4),[p.CDO,"",s.representationStart,s.representationEnd,void 0]):kn(0,s)?vr(o,s):(s.advanceCodePoint(),[p.Delim,"-",s.representationStart,s.representationEnd,{value:"-"}]);case 60:return Ui(s)?(s.advanceCodePoint(4),[p.CDO,"