@ixfx/components 0.4.3 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/index.d.ts +395 -1176
- package/bundle/index.d.ts.map +1 -1
- package/bundle/index.js +7699 -20648
- package/bundle/index.js.map +1 -1
- package/dist/ac-text.d.ts +12 -7
- package/dist/ac-text.d.ts.map +1 -1
- package/dist/ac-text.js +2 -3
- package/dist/ac-text.js.map +1 -1
- package/dist/{button-C3fLMKUv.js → button-DxYee1ZH.js} +2 -2
- package/dist/{button-C3fLMKUv.js.map → button-DxYee1ZH.js.map} +1 -1
- package/dist/button.d.ts +1 -2
- package/dist/button.d.ts.map +1 -1
- package/dist/button.js +1 -2
- package/dist/checkbox.d.ts +0 -1
- package/dist/checkbox.d.ts.map +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/checkbox.js.map +1 -1
- package/dist/{colour-picker-0sgAha1T.js → colour-picker-BacNRabo.js} +14 -16
- package/dist/colour-picker-BacNRabo.js.map +1 -0
- package/dist/colour-picker.d.ts +1 -1
- package/dist/colour-picker.js +1 -1
- package/dist/crumbs.d.ts +5 -2
- package/dist/crumbs.d.ts.map +1 -1
- package/dist/crumbs.js +45 -20
- package/dist/crumbs.js.map +1 -1
- package/dist/data-display.d.ts +1 -2
- package/dist/data-display.d.ts.map +1 -1
- package/dist/data-display.js +25 -23
- package/dist/data-display.js.map +1 -1
- package/dist/{data-provider-DgI909FP.js → data-provider-35TyWclX.js} +2 -2
- package/dist/data-provider-35TyWclX.js.map +1 -0
- package/dist/{decorate-DdjvVHS-.js → decorate-VRK8rslU.js} +2 -2
- package/dist/{decorate-DdjvVHS-.js.map → decorate-VRK8rslU.js.map} +1 -1
- package/dist/editable-label.d.ts +1 -2
- package/dist/editable-label.d.ts.map +1 -1
- package/dist/editable-label.js +1 -1
- package/dist/editable-label.js.map +1 -1
- package/dist/{hex-editor-WZrjRtvL.js → hex-editor-Bk6rxhfg.js} +9 -11
- package/dist/hex-editor-Bk6rxhfg.js.map +1 -0
- package/dist/{hex-editor-CMIxtNgT.d.ts → hex-editor-Caq8vNQk.d.ts} +2 -3
- package/dist/hex-editor-Caq8vNQk.d.ts.map +1 -0
- package/dist/hex.d.ts +1 -1
- package/dist/hex.js +1 -1
- package/dist/highlight-B-eQrhhb.js.map +1 -1
- package/dist/{icon-Ndo40kNO.js → icon-B22XVlCt.js} +6 -4
- package/dist/{icon-Ndo40kNO.js.map → icon-B22XVlCt.js.map} +1 -1
- package/dist/{icon-Bd5BiU4b.d.ts → icon-DpA9x2Ve.d.ts} +2 -3
- package/dist/icon-DpA9x2Ve.d.ts.map +1 -0
- package/dist/icons.d.ts +2 -2
- package/dist/icons.js +1 -1
- package/dist/{incr-search-CeERfijK.js → incr-search-2pz21xtR.js} +9 -6
- package/dist/incr-search-2pz21xtR.js.map +1 -0
- package/dist/incr-search.d.ts +1 -1
- package/dist/incr-search.js +1 -1
- package/dist/{index-CowKi2mo.d.ts → index-BeuCXtiO.d.ts} +3 -4
- package/dist/index-BeuCXtiO.d.ts.map +1 -0
- package/dist/{index-D87kRcEs.d.ts → index-BtGFYfaK.d.ts} +2 -1
- package/dist/index-BtGFYfaK.d.ts.map +1 -0
- package/dist/{index-s_IhSnwc.d.ts → index-CoqtMSd9.d.ts} +6 -4
- package/dist/index-CoqtMSd9.d.ts.map +1 -0
- package/dist/{index-9fGVAg1d.d.ts → index-Cxwxtj6g.d.ts} +3 -3
- package/dist/index-Cxwxtj6g.d.ts.map +1 -0
- package/dist/index-D_ftz_IT.d.ts +184 -0
- package/dist/index-D_ftz_IT.d.ts.map +1 -0
- package/dist/{index-_RTQSKHi.d.ts → index-DfEkTGvT.d.ts} +11 -11
- package/dist/index-DfEkTGvT.d.ts.map +1 -0
- package/dist/index.d.ts +44 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +304 -3075
- package/dist/index.js.map +1 -1
- package/dist/keyboard-B5xD7Fz-.js +36 -0
- package/dist/keyboard-B5xD7Fz-.js.map +1 -0
- package/dist/{labelled-input-base-ORb1rGq6.d.ts → labelled-input-base-DiTme1JO.d.ts} +1 -2
- package/dist/labelled-input-base-DiTme1JO.d.ts.map +1 -0
- package/dist/{labelled-input-base-9K_w3oLj.js → labelled-input-base-hoKGwyKT.js} +2 -2
- package/dist/{labelled-input-base-9K_w3oLj.js.map → labelled-input-base-hoKGwyKT.js.map} +1 -1
- package/dist/labelled-radial-input.d.ts +5 -4
- package/dist/labelled-radial-input.d.ts.map +1 -1
- package/dist/labelled-radial-input.js +7 -3
- package/dist/labelled-radial-input.js.map +1 -1
- package/dist/labelled-range-input.d.ts +1 -1
- package/dist/labelled-range-input.js +27 -3
- package/dist/labelled-range-input.js.map +1 -1
- package/dist/led.d.ts +1 -2
- package/dist/led.d.ts.map +1 -1
- package/dist/led.js +1 -1
- package/dist/led.js.map +1 -1
- package/dist/{menu-vjoiHZ13.js → menu-g6yd7ddN.js} +8 -9
- package/dist/menu-g6yd7ddN.js.map +1 -0
- package/dist/{menu-item-COx-Azgj.d.ts → menu-item-DSyf9f_L.d.ts} +4 -4
- package/dist/menu-item-DSyf9f_L.d.ts.map +1 -0
- package/dist/{menu-item-BrIuORYD.js → menu-item-NUKwJ4s5.js} +3 -4
- package/dist/{menu-item-BrIuORYD.js.map → menu-item-NUKwJ4s5.js.map} +1 -1
- package/dist/menu.d.ts +2 -2
- package/dist/menu.js +2 -2
- package/dist/miller.d.ts +8 -5
- package/dist/miller.d.ts.map +1 -1
- package/dist/miller.js +22 -24
- package/dist/miller.js.map +1 -1
- package/dist/narrowed-text.d.ts +7 -3
- package/dist/narrowed-text.d.ts.map +1 -1
- package/dist/narrowed-text.js +73 -47
- package/dist/narrowed-text.js.map +1 -1
- package/dist/panel.d.ts +1 -1
- package/dist/panel.d.ts.map +1 -1
- package/dist/panel.js +2 -2
- package/dist/panel.js.map +1 -1
- package/dist/plots.d.ts +2 -2
- package/dist/plots.js +1 -1
- package/dist/polar-pad.d.ts +15 -3
- package/dist/polar-pad.d.ts.map +1 -1
- package/dist/polar-pad.js +64 -11
- package/dist/polar-pad.js.map +1 -1
- package/dist/{radial-input-CpQPs1Mp.d.ts → radial-input-DXMN55Nz.d.ts} +6 -4
- package/dist/radial-input-DXMN55Nz.d.ts.map +1 -0
- package/dist/{radial-input-DZ7eQCcM.js → radial-input-DxCrt_NE.js} +41 -19
- package/dist/radial-input-DxCrt_NE.js.map +1 -0
- package/dist/radial-input.d.ts +1 -1
- package/dist/radial-input.js +1 -1
- package/dist/range-input.d.ts +15 -4
- package/dist/range-input.d.ts.map +1 -1
- package/dist/range-input.js +23 -2
- package/dist/range-input.js.map +1 -1
- package/dist/range.d.ts +15 -4
- package/dist/range.d.ts.map +1 -1
- package/dist/range.js +23 -2
- package/dist/range.js.map +1 -1
- package/dist/selecthorizontal.d.ts +1 -2
- package/dist/selecthorizontal.d.ts.map +1 -1
- package/dist/selecthorizontal.js +1 -1
- package/dist/selecthorizontal.js.map +1 -1
- package/dist/slider-input-DFpG23bS.js +1592 -0
- package/dist/slider-input-DFpG23bS.js.map +1 -0
- package/dist/slider-input-XppH3vcy.d.ts +160 -0
- package/dist/slider-input-XppH3vcy.d.ts.map +1 -0
- package/dist/slider-input.d.ts +2 -0
- package/dist/slider-input.js +2 -0
- package/dist/snap-container.d.ts +1 -2
- package/dist/snap-container.d.ts.map +1 -1
- package/dist/snap-container.js +6 -5
- package/dist/snap-container.js.map +1 -1
- package/dist/split-layout.d.ts +1 -2
- package/dist/split-layout.d.ts.map +1 -1
- package/dist/split-layout.js +6 -4
- package/dist/split-layout.js.map +1 -1
- package/dist/swipe.d.ts +12 -2
- package/dist/swipe.d.ts.map +1 -1
- package/dist/swipe.js +22 -3
- package/dist/swipe.js.map +1 -1
- package/dist/{tab-list-DLzb-m-I.d.ts → tab-list-BohmbvqF.d.ts} +14 -5
- package/dist/tab-list-BohmbvqF.d.ts.map +1 -0
- package/dist/tab-list-DzknpdSo.js +592 -0
- package/dist/tab-list-DzknpdSo.js.map +1 -0
- package/dist/tabs.d.ts +2 -2
- package/dist/tabs.js +1 -208
- package/dist/{tickled-controller-BjYCzGrU.d.ts → tickled-controller-BF2Ea0DE.d.ts} +2 -31
- package/dist/tickled-controller-BF2Ea0DE.d.ts.map +1 -0
- package/dist/tickled-styles-fNDdqf6l.js.map +1 -1
- package/dist/{timeline-2OFtN4Ta.js → timeline-B2fgDL4U.js} +37 -1438
- package/dist/timeline-B2fgDL4U.js.map +1 -0
- package/dist/timeline.d.ts +1 -1
- package/dist/timeline.js +1 -1
- package/dist/{tooltip-RGVIwHrZ.d.ts → tooltip-BlvBUQxx.d.ts} +3 -3
- package/dist/tooltip-BlvBUQxx.d.ts.map +1 -0
- package/dist/{tree-D84RUgFC.js → tree-BnvzhsAw.js} +8 -9
- package/dist/tree-BnvzhsAw.js.map +1 -0
- package/dist/{tree-component-BaCSPWg1.d.ts → tree-component-DCmmKZ4j.d.ts} +8 -124
- package/dist/tree-component-DCmmKZ4j.d.ts.map +1 -0
- package/dist/tree.d.ts +10 -4
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +1 -1
- package/dist/types-DO3gt5vg.d.ts +130 -0
- package/dist/types-DO3gt5vg.d.ts.map +1 -0
- package/dist/wheel-nudge-BlSCe_hD.js +86 -0
- package/dist/wheel-nudge-BlSCe_hD.js.map +1 -0
- package/dist/wheel-nudge-DGrNzWuE.d.ts +29 -0
- package/dist/wheel-nudge-DGrNzWuE.d.ts.map +1 -0
- package/dist/{xy-axis-BeWRMmbo.d.ts → xy-axis-5KhVTNoX.d.ts} +30 -7
- package/dist/xy-axis-5KhVTNoX.d.ts.map +1 -0
- package/dist/xy-axis-CxHC8z5E.js +1849 -0
- package/dist/xy-axis-CxHC8z5E.js.map +1 -0
- package/dist/xy-pad.d.ts +13 -2
- package/dist/xy-pad.d.ts.map +1 -1
- package/dist/xy-pad.js +47 -6
- package/dist/xy-pad.js.map +1 -1
- package/docs-user/radial-input.md +2 -2
- package/package.json +21 -20
- package/dist/colour-C3MQIjFJ-vRCdr8W-.js +0 -3732
- package/dist/colour-C3MQIjFJ-vRCdr8W-.js.map +0 -1
- package/dist/colour-picker-0sgAha1T.js.map +0 -1
- package/dist/data-provider-DgI909FP.js.map +0 -1
- package/dist/dist-CA13FvMn.js +0 -980
- package/dist/dist-CA13FvMn.js.map +0 -1
- package/dist/hex-editor-CMIxtNgT.d.ts.map +0 -1
- package/dist/hex-editor-WZrjRtvL.js.map +0 -1
- package/dist/icon-Bd5BiU4b.d.ts.map +0 -1
- package/dist/incr-search-CeERfijK.js.map +0 -1
- package/dist/index-9fGVAg1d.d.ts.map +0 -1
- package/dist/index-CowKi2mo.d.ts.map +0 -1
- package/dist/index-D87kRcEs.d.ts.map +0 -1
- package/dist/index-DgXpCg_G.d.ts +0 -1244
- package/dist/index-DgXpCg_G.d.ts.map +0 -1
- package/dist/index-_RTQSKHi.d.ts.map +0 -1
- package/dist/index-s_IhSnwc.d.ts.map +0 -1
- package/dist/keyboard-CimiEskD.js +0 -20
- package/dist/keyboard-CimiEskD.js.map +0 -1
- package/dist/labelled-input-base-ORb1rGq6.d.ts.map +0 -1
- package/dist/menu-item-COx-Azgj.d.ts.map +0 -1
- package/dist/menu-vjoiHZ13.js.map +0 -1
- package/dist/radial-input-CpQPs1Mp.d.ts.map +0 -1
- package/dist/radial-input-DZ7eQCcM.js.map +0 -1
- package/dist/tab-list-DLzb-m-I.d.ts.map +0 -1
- package/dist/tabs.js.map +0 -1
- package/dist/tickled-controller-BjYCzGrU.d.ts.map +0 -1
- package/dist/timeline-2OFtN4Ta.js.map +0 -1
- package/dist/tooltip-RGVIwHrZ.d.ts.map +0 -1
- package/dist/tree-D84RUgFC.js.map +0 -1
- package/dist/tree-component-BaCSPWg1.d.ts.map +0 -1
- package/dist/types-DSfbtHs3.d.ts +0 -8
- package/dist/types-DSfbtHs3.d.ts.map +0 -1
- package/dist/xy-axis-BeWRMmbo.d.ts.map +0 -1
- package/dist/xy-axis-no0OL_O1.js +0 -7893
- package/dist/xy-axis-no0OL_O1.js.map +0 -1
- /package/bundle/{chunk-D7D4PA-g.js → rolldown-runtime-D7D4PA-g.js} +0 -0
- /package/dist/{chunk-D7D4PA-g.js → rolldown-runtime-D7D4PA-g.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"colour-C3MQIjFJ-vRCdr8W-.js","names":["__defProp","guard"],"sources":["../node_modules/.pnpm/@ixfx+visual@0.56.13/node_modules/@ixfx/visual/dist/chunk-pbuEa-1d.js","../node_modules/.pnpm/@ixfx+geometry@0.56.13/node_modules/@ixfx/geometry/dist/guard-hlhkAOMZ.js","../node_modules/.pnpm/@ixfx+geometry@0.56.13/node_modules/@ixfx/geometry/dist/angles-BkBEzlEN.js","../node_modules/.pnpm/@ixfx+visual@0.56.13/node_modules/@ixfx/visual/dist/colour-C3MQIjFJ.js"],"sourcesContent":["//#region \\0rolldown/runtime.js\nvar __defProp = Object.defineProperty;\nvar __exportAll = (all, no_symbols) => {\n\tlet target = {};\n\tfor (var name in all) __defProp(target, name, {\n\t\tget: all[name],\n\t\tenumerable: true\n\t});\n\tif (!no_symbols) __defProp(target, Symbol.toStringTag, { value: \"Module\" });\n\treturn target;\n};\n//#endregion\nexport { __exportAll as t };\n","import { errorResult, numberTest, resultThrow } from \"@ixfx/guards\";\n//#region src/point/guard.ts\n/**\n* Returns true if xy (and z, if present) are _null_.\n* @param p\n* @returns True if all props are null\n*/\nfunction isNull(p) {\n\tif (isPoint3d(p)) {\n\t\tif (p.z !== null) return false;\n\t}\n\treturn p.x === null && p.y === null;\n}\n/***\n* Returns true if either x, y, z isNaN.\n*/\nfunction isNaN(p) {\n\tif (isPoint3d(p)) {\n\t\tif (!Number.isNaN(p.z)) return false;\n\t}\n\treturn Number.isNaN(p.x) || Number.isNaN(p.y);\n}\nfunction pointTest(p, name = `Point`, extraInfo = ``) {\n\tif (p === void 0) return errorResult(`'${name}' is undefined. Expected {x,y} got ${JSON.stringify(p)}`, extraInfo);\n\tif (p === null) return errorResult(`'${name}' is null. Expected {x,y} got ${JSON.stringify(p)}`, extraInfo);\n\tif (typeof p !== `object`) return errorResult(`'${name}' is type '${typeof p}'. Expected object.`, extraInfo);\n\tif (p.x === void 0) return errorResult(`'${name}.x' is undefined. Expected {x,y} got ${JSON.stringify(p)}`, extraInfo);\n\tif (p.y === void 0) return errorResult(`'${name}.y' is undefined. Expected {x,y} got ${JSON.stringify(p)}`, extraInfo);\n\tif (typeof p.x !== `number`) return errorResult(`'${name}.x' must be a number. Got ${typeof p.x}`, extraInfo);\n\tif (typeof p.y !== `number`) return errorResult(`'${name}.y' must be a number. Got ${typeof p.y}`, extraInfo);\n\tif (p.z !== void 0) {\n\t\tif (typeof p.z !== `number`) return errorResult(`${name}.z must be a number. Got: ${typeof p.z}`, extraInfo);\n\t\tif (Number.isNaN(p.z)) return errorResult(`'${name}.z' is NaN. Got: ${JSON.stringify(p)}`, extraInfo);\n\t}\n\tif (p.x === null) return errorResult(`'${name}.x' is null`, extraInfo);\n\tif (p.y === null) return errorResult(`'${name}.y' is null`, extraInfo);\n\tif (Number.isNaN(p.x)) return errorResult(`'${name}.x' is NaN`, extraInfo);\n\tif (Number.isNaN(p.y)) return errorResult(`'${name}.y' is NaN`, extraInfo);\n\treturn {\n\t\tsuccess: true,\n\t\tvalue: p\n\t};\n}\n/**\n* Throws an error if point is invalid\n* @param p\n* @param name\n*/\nfunction guard(p, name = `Point`, info) {\n\tresultThrow(pointTest(p, name, info));\n}\n/**\n* Throws if parameter is not a valid point, or either x or y is 0\n* @param pt\n* @returns Throws an error if not a valid point or zero.\n*/\nfunction guardNonZeroPoint(pt, name = `pt`) {\n\tguard(pt, name);\n\tresultThrow(numberTest(pt.x, `nonZero`, `${name}.x`), numberTest(pt.y, `nonZero`, `${name}.y`), () => {\n\t\tif (typeof pt.z !== `undefined`) return numberTest(pt.z, `nonZero`, `${name}.z`);\n\t});\n\treturn true;\n}\n/**\n* Returns _true_ if `p` has x & y properties.\n* Returns _false_ if `p` is undefined, null or does not contain properties.\n* Use {@link isPoint3d} to check further check for `z`.\n* @param p\n* @returns True if `p` has x & y props\n*/\nfunction isPoint(p) {\n\tif (p === void 0) return false;\n\tif (p === null) return false;\n\tif (p.x === void 0) return false;\n\tif (p.y === void 0) return false;\n\treturn true;\n}\n/**\n* Returns _true_ if `p` has x, y, & z properties.\n* Returns _false_ if `p` is undefined, null or does not contain properties.\n* @param p\n* @returns _True_ if `p` has x, y, & z props\n*/\nfunction isPoint3d(p) {\n\tif (p === void 0) return false;\n\tif (p === null) return false;\n\tif (p.x === void 0) return false;\n\tif (p.y === void 0) return false;\n\tif (p.z === void 0) return false;\n\treturn true;\n}\n/**\n* Returns true if both xy (and z, if present) are 0.\n* Use `Points.Empty` to return an empty point.\n* @param p\n* @returns _True_ is all props are 0\n*/\nfunction isEmpty(p) {\n\tif (isPoint3d(p)) {\n\t\tif (p.z !== 0) return false;\n\t}\n\treturn p.x === 0 && p.y === 0;\n}\n/**\n* Returns true if point is a placeholder, where xy (and z, if present)\n* are `NaN`.\n*\n* Use Points.Placeholder to return a placeholder point.\n* @param p\n* @returns True if all props are NaN\n*/\nfunction isPlaceholder(p) {\n\tif (isPoint3d(p)) {\n\t\tif (!Number.isNaN(p.z)) return false;\n\t}\n\treturn Number.isNaN(p.x) && Number.isNaN(p.y);\n}\n//#endregion\nexport { isNull as a, isPoint3d as c, isNaN as i, pointTest as l, guardNonZeroPoint as n, isPlaceholder as o, isEmpty as r, isPoint as s, guard as t };\n","import { c as isPoint3d } from \"./guard-hlhkAOMZ.js\";\nimport { movingAverageLight } from \"@ixfx/numbers\";\n//#region src/pi.ts\nconst piPi = Math.PI * 2;\n//#endregion\n//#region src/point/averager.ts\n/**\n* Averages a set of points, by default as a 'mean'.\n* \n* List of points has to all have Z property or none of them -- it's not\n* possible to mix 2D and 3D points.\n* @param points \n* @returns \n*/\nconst average$1 = (points, kind = `mean`) => {\n\tlet xSum = 0;\n\tlet ySum = 0;\n\tlet zSum = NaN;\n\tlet total = 0;\n\tif (kind !== `mean`) throw new Error(`Unknown averaging kind: '${kind}' expected: 'mean'`);\n\tfor (const p of points) {\n\t\txSum += p.x;\n\t\tySum += p.y;\n\t\tif (`z` in p && p.z !== void 0) zSum += p.z;\n\t\telse if (Number.isNaN(zSum)) throw new Error(`List of points should all have Z property, or none`);\n\t\ttotal++;\n\t}\n\txSum /= total;\n\tySum /= total;\n\tif (Number.isNaN(zSum)) return {\n\t\tx: xSum,\n\t\ty: ySum\n\t};\n\telse return {\n\t\tx: xSum,\n\t\ty: ySum,\n\t\tz: zSum / total\n\t};\n};\nfunction averager(kind, opts = {}) {\n\tlet x;\n\tlet y;\n\tlet z;\n\tswitch (kind) {\n\t\tcase `moving-average-light`: {\n\t\t\tconst scaling = opts.scaling ?? 3;\n\t\t\tx = movingAverageLight(scaling);\n\t\t\ty = movingAverageLight(scaling);\n\t\t\tz = movingAverageLight(scaling);\n\t\t\tbreak;\n\t\t}\n\t\tdefault: throw new Error(`Unknown averaging kind '${kind}'. Expected: 'moving-average-light'`);\n\t}\n\treturn (point) => {\n\t\tconst ax = x(point.x);\n\t\tconst ay = y(point.y);\n\t\tif (isPoint3d(point)) {\n\t\t\tconst az = z(point.z);\n\t\t\treturn Object.freeze({\n\t\t\t\tx: ax,\n\t\t\t\ty: ay,\n\t\t\t\tz: az\n\t\t\t});\n\t\t} else return Object.freeze({\n\t\t\tx: ax,\n\t\t\ty: ay\n\t\t});\n\t};\n}\n//#endregion\n//#region src/angles.ts\nfunction degreeToRadian(angleInDegrees) {\n\treturn Array.isArray(angleInDegrees) ? angleInDegrees.map((v) => v * (Math.PI / 180)) : angleInDegrees * (Math.PI / 180);\n}\n/**\n* Inverts the angle so it points in the opposite direction of a unit circle\n* @param angleInRadians\n* @returns Radians\n*/\nfunction radianInvert(angleInRadians) {\n\treturn (angleInRadians + Math.PI) % (2 * Math.PI);\n}\nfunction degreeToGradian(angleInDegrees) {\n\treturn angleInDegrees * 1.111111;\n}\n/**\n* Returns the gradian value converted to degrees.\n* By default it wraps, so any value 360 or greater wraps around.\n* @param angleInGradians\n* @param wrap\n* @returns Degrees\n*/\nfunction gradianToDegree(angleInGradians, wrap = true) {\n\tif (wrap) return angleInGradians * .9 % 360;\n\treturn angleInGradians * .9;\n}\nfunction radianToGradian(angleInRadians) {\n\treturn angleInRadians * 63.6619772368;\n}\nfunction gradianToRadian(angleInGradian) {\n\treturn angleInGradian * .0157079633;\n}\nfunction radianToDegree(angleInRadians) {\n\treturn Array.isArray(angleInRadians) ? angleInRadians.map((v) => v * 180 / Math.PI) : angleInRadians * 180 / Math.PI;\n}\n/**\n* Angle from x-axis to point (ie. `Math.atan2`)\n* @param point\n* @returns Radians\n*/\nconst radiansFromAxisX = (point) => Math.atan2(point.x, point.y);\n/**\n* Sum angles together, accounting for the 'wrap around'.\n*\n* `clockwise` of _true_ (default) means angles are added in clockwise direction\n*\n* ```js\n* // From 180deg, add 90deg in the clockwise direction\n* radiansSum(Math.PI, Math.PI/2, true);\n* ```\n*\n* Orientation of angles is as follows:\n* ```\n* 90deg\n* Pi/2\n* |\n* Pi ---+--- 0\n* 180 |\n* 3PI/2\n* 270deg\n* ```\n* {@link degreesSum} is the same, but uses degrees (0..360)\n* @param start Starting angle, in radian\n* @param amount Angle to add, in radian\n* @param clockwise Add in clockwise direction (default: _true_)\n* @returns Sum result, in radians\n*/\nfunction radiansSum(start, amount, clockwise = true) {\n\tif (clockwise) {\n\t\tlet x = start + amount;\n\t\tif (x >= piPi) x = x % piPi;\n\t\treturn x;\n\t} else {\n\t\tconst x = start - amount;\n\t\tif (x < 0) return piPi + x;\n\t\treturn x;\n\t}\n}\n/**\n* Sum angles together, accounting for the 'wrap around'.\n*\n* `clockwise` of _true_ (default) means angles are added in clockwise direction\n*\n* ```js\n* // From 180deg, add 90deg in the clockwise direction\n* radiansSum(180, 90, true);\n* ```\n*\n* {@link radiansSum} is the same, but uses radians (0..2 Pi)\n*\n* Orientation of angles is as follows:\n* ```\n* 90\n* |\n* 180 ---+--- 0\n* |\n* 270\n* ```\n* @param start Starting angle, in degrees\n* @param amount Angle to add, in degrees\n* @param clockwise Add in clockwise direction (default: _true_)\n* @returns Sum result, in degrees\n*/\nconst degreesSum = (start, amount, clockwise = true) => radianToDegree(radiansSum(degreeToRadian(start), degreeToRadian(amount), clockwise));\n/**\n* Computes the angle arc between a start and end angle,\n* given in radians. It properly accounts for the wrap-around\n* values.\n*\n* Note that clockwise direction yields a negative angle.\n* ```js\n* // Between 0-90deg in clockwise direction\n* radianArc(0, Math.PI/2, true); // Yields: 3Pi/2 (270 deg)\n*\n* // In counter-clockwise direction\n* radianArc(0, Math.PI/2, false); // Yields: Math.PI/2 (90deg)\n* ```\n*\n* See {@link degreeArc} to operate in degrees.\n*\n* Orientation of angles is as follows:\n* ```\n* 90deg\n* PI/2\n* |\n* Pi ---+--- 0 2PI\n* 180 |\n* 3PI/2\n* 270deg\n* ```\n* @param start Start angle, in radians\n* @param end End angle, in radians\n* @param direction Calculate in the specified direction (default: _short_)\n* @returns Angle of arc, in radians.\n*/\nfunction radianArc(start, end, direction = `short`) {\n\tconst mod = (n, m) => (n % m + m) % m;\n\tconst ccw = mod(end - start, piPi);\n\tconst cw = ccw === 0 ? 0 : ccw - piPi;\n\tswitch (direction) {\n\t\tcase `ccw`: return end > start && ccw === 0 ? piPi : ccw;\n\t\tcase `cw`: return end < start && ccw === 0 ? -piPi : cw;\n\t\tcase `short`:\n\t\t\tif (ccw === 0) return 0;\n\t\t\treturn Math.abs(ccw) <= Math.abs(cw) ? ccw : cw;\n\t\tcase `long`:\n\t\t\tif (ccw === 0) return start === end ? 0 : piPi;\n\t\t\treturn Math.abs(ccw) >= Math.abs(cw) ? ccw : cw;\n\t}\n}\n/**\n* Computes the angle arc between a `start` and `end` angle,\n* given in degrees. It properly accounts for the wrap-around\n* values.\n*\n* Clockwise movement is negative.\n*\n* Orientation of angles on a circle is as follows:\n* ```\n* 90\n* |\n* 180 ---+--- 0\n* |\n* 270\n* ```\n*\n* Example, from 'east' (0deg) to 'south' (270deg)\n* ```js\n* degreeArc(0, 270); // 'short' is default, result: -90\n* degreeArc(0, 270, `long`); // 270\n* degreeArc(0, 270, `short`); // -90\n* degreeArc(0, 270, `cw`); // clockwise: -90\n* degreeArc(0, 270, `ccw`); // counter-clockwise: 270\n* ```\n*\n* Or from 'east' (0deg) to 'north' (90deg):\n* ```js\n* degreeArc(0, 90); // 'short' is default, result: 90\n* degreeArc(0, 90, `long`); // -270\n* degreeArc(0, 90, `short`); // 90\n* degreeArc(0, 90, `cw`); // clockwise: -270\n* degreeArc(0, 90, `ccw`); // counter-clockwise: 90\n* ```\n*\n* Use {@link radianArc} to operate in radians (which this function calls behind the scenes).\n*\n* @param start Start angle, in degrees\n* @param end End angle, in degrees\n* @param direction Calculate in the specified direction (default: _short_)\n* @returns Angle of arc, in degrees.\n*/\nfunction degreeArc(start, end, direction = `short`) {\n\treturn radianToDegree(radianArc(degreeToRadian(start), degreeToRadian(end), direction));\n}\n/**\n* Parses CSS-style angle strings into an 'Angle' type. By default assumes degrees.\n*\n* ```js\n* angleParse(`100`); // { value: 100, unit: `deg` }\n* angleParse(100); // { value: 100, unit: `deg` }\n* angleParse(`100deg`); // { value: 100, unit: `deg` }\n*\n* // More exotic units:\n* angleParse(`100rad`); // { value: 100, unit: `rad` }\n* angleParse(`100turn`); // { value: 100, unit: `turn` }\n* angleParse(`100grad`); // { value: 100, unit: `grad` }\n* angleParse(`n`); // { value: 90, unit: `deg` }\n* angleParse(`e`); // { value: 0, unit: `deg` }\n* angleParse(`s`); // { value: 270, unit: `deg` }\n* angleParse(`w`); // { value: 180, unit: `deg` }\n* angleParse(`ne`); // ne/nw/se/sw supported\n* // Once parsed, use angleConvert to convert to a different unit:\n* angleConvert(`100rad`, `deg`); // { value: 5729.57795, unit: `deg` }\n* ```\n*\n* Once parsed in this format, use {@link angleConvert} to convert to\n* a different unit.\n* @param value\n* @returns Angle\n*/\nfunction angleParse(value) {\n\tif (isAngleType(value)) return value;\n\tif (typeof value === `number`) return {\n\t\tvalue,\n\t\tunit: `deg`\n\t};\n\tvalue = value.toLowerCase();\n\tlet unit = `deg`;\n\tlet numberValue = NaN;\n\tif (value.endsWith(`grad`)) {\n\t\tnumberValue = Number.parseFloat(value.substring(0, value.length - 4));\n\t\tunit = `grad`;\n\t} else if (value.endsWith(`rad`)) {\n\t\tnumberValue = Number.parseFloat(value.substring(0, value.length - 3));\n\t\tunit = `rad`;\n\t} else if (value.endsWith(`turn`)) {\n\t\tnumberValue = Number.parseFloat(value.substring(0, value.length - 4));\n\t\tunit = `turn`;\n\t} else if (value.endsWith(`deg`)) {\n\t\tnumberValue = Number.parseFloat(value.substring(0, value.length - 3));\n\t\tunit = `deg`;\n\t} else numberValue = Number.parseFloat(value);\n\tif (Number.isNaN(numberValue)) if (value === `n`) return {\n\t\tvalue: 90,\n\t\tunit: `deg`\n\t};\n\telse if (value === `e`) return {\n\t\tvalue: 0,\n\t\tunit: `deg`\n\t};\n\telse if (value === `s`) return {\n\t\tvalue: 270,\n\t\tunit: `deg`\n\t};\n\telse if (value === `w`) return {\n\t\tvalue: 180,\n\t\tunit: `deg`\n\t};\n\telse if (value === `ne`) return {\n\t\tvalue: 45,\n\t\tunit: `deg`\n\t};\n\telse if (value === `se`) return {\n\t\tvalue: 315,\n\t\tunit: `deg`\n\t};\n\telse if (value === `sw`) return {\n\t\tvalue: 225,\n\t\tunit: `deg`\n\t};\n\telse if (value === `nw`) return {\n\t\tvalue: 135,\n\t\tunit: `deg`\n\t};\n\telse throw new Error(`Invalid angle (bad value?): '${value}'. If using cardinals, use: 'n', 'se', etc.`);\n\tif (unit.length === 0) throw new Error(`Invalid angle (no unit)`);\n\treturn {\n\t\tvalue: numberValue,\n\t\tunit\n\t};\n}\nfunction isAngleType(v) {\n\tif (typeof v !== `object`) return false;\n\tif (`unit` in v && `value` in v) {\n\t\tif (typeof v.unit !== `string`) return false;\n\t\tif (typeof v.value !== `number`) return false;\n\t\treturn true;\n\t}\n\treturn false;\n}\n/**\n* Returns _true_ if `v` is a number, string or `Angle` type.\n* @param v\n* @returns\n*/\nfunction isAngleTypeConvertible(v) {\n\tif (typeof v === `undefined`) return false;\n\tif (typeof v === `number` || typeof v === `string`) return true;\n\tif (typeof v === `object`) {\n\t\tif (`unit` in v && `value` in v) {\n\t\t\tif (typeof v.unit !== `string`) return false;\n\t\t\tif (typeof v.value !== `number`) return false;\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n/**\n* Converts some angle representation to a simple numeric radian angle.\n*\n* ```js\n* toRadian(90); // 90deg\n* toRadian(`90`); // 90deg\n* toRadian(`1.2rad`)\n* toRadian(`90deg`)\n* ```\n*\n* Unitless values provided as a number or string are assumed to be degrees.\n* @param angleOrDegrees\n* @returns Radians\n*/\nfunction toRadian(angleOrDegrees) {\n\tif (typeof angleOrDegrees === `number`) return angleOrDegrees;\n\treturn angleConvert(angleOrDegrees, `rad`).value;\n}\n/**\n* Converts an angle to another representation.\n* Input value is assumed degrees unless it's an {@link Angle} type of has the unit.\n*\n* These are all identical inputs: 100, `100`, `100deg`\n* ```js\n* angleConvert(100, `rad`); // Converts 100deg to radians\n* ```\n*\n* Other units can be used for string input: `2turn`, `1grad`, `2rad`.\n* ```js\n* angleConvert(`2rad`, `deg`); // Converts 2radians to degrees\n* ```\n*\n* Can also use an object input:\n* ```js\n* angleConvert({ value: 10, unit: `deg`}, `rad`);\n* ```\n* @param angleOrDegrees\n* @param destination\n* @returns Angle\n*/\nfunction angleConvert(angleOrDegrees, destination) {\n\tconst input = typeof angleOrDegrees === `object` ? angleOrDegrees : angleParse(angleOrDegrees);\n\tswitch (destination) {\n\t\tcase `deg`:\n\t\t\tif (input.unit === `deg`) return input;\n\t\t\tif (input.unit === `rad`) return {\n\t\t\t\tvalue: radianToDegree(input.value),\n\t\t\t\tunit: `deg`\n\t\t\t};\n\t\t\tif (input.unit === `grad`) return {\n\t\t\t\tvalue: gradianToDegree(input.value),\n\t\t\t\tunit: `deg`\n\t\t\t};\n\t\t\tif (input.unit === `turn`) return {\n\t\t\t\tvalue: turnToDegree(input.value),\n\t\t\t\tunit: `deg`\n\t\t\t};\n\t\t\tthrow new Error(`Unknown unit: ${input.unit}`);\n\t\tcase `grad`:\n\t\t\tif (input.unit === `deg`) return {\n\t\t\t\tvalue: degreeToGradian(input.value),\n\t\t\t\tunit: `grad`\n\t\t\t};\n\t\t\tif (input.unit === `rad`) return {\n\t\t\t\tvalue: radianToGradian(input.value),\n\t\t\t\tunit: `grad`\n\t\t\t};\n\t\t\tif (input.unit === `grad`) return input;\n\t\t\tif (input.unit === `turn`) return {\n\t\t\t\tvalue: radianToGradian(turnToRadian(input.value)),\n\t\t\t\tunit: `grad`\n\t\t\t};\n\t\t\tthrow new Error(`Unknown unit: ${input.unit}`);\n\t\tcase `rad`:\n\t\t\tif (input.unit === `deg`) return {\n\t\t\t\tvalue: degreeToRadian(input.value),\n\t\t\t\tunit: `rad`\n\t\t\t};\n\t\t\tif (input.unit === `rad`) return input;\n\t\t\tif (input.unit === `grad`) return {\n\t\t\t\tvalue: gradianToRadian(input.value),\n\t\t\t\tunit: `rad`\n\t\t\t};\n\t\t\tif (input.unit === `turn`) return {\n\t\t\t\tvalue: turnToRadian(input.value),\n\t\t\t\tunit: `rad`\n\t\t\t};\n\t\t\tthrow new Error(`Unknown unit: ${input.unit}`);\n\t\tcase `turn`:\n\t\t\tif (input.unit === `deg`) return {\n\t\t\t\tvalue: degreeToTurn(input.value),\n\t\t\t\tunit: `turn`\n\t\t\t};\n\t\t\tif (input.unit === `rad`) return {\n\t\t\t\tvalue: radianToTurn(input.value),\n\t\t\t\tunit: `turn`\n\t\t\t};\n\t\t\tif (input.unit === `grad`) return {\n\t\t\t\tvalue: radianToTurn(gradianToRadian(input.value)),\n\t\t\t\tunit: `turn`\n\t\t\t};\n\t\t\tif (input.unit === `turn`) return input;\n\t\t\tthrow new Error(`Unknown unit: ${input.unit}`);\n\t\tdefault: throw new Error(`Destination unit unknown ('${destination}). Expects: deg, grad, rad or turn`);\n\t}\n}\n/**\n* Compute [unit vector](https://en.wikipedia.org/wiki/Unit_vector) of an angle. The unit vector is essentially the direction of an angle.\n*\n* ```js\n* unitVector(90); // 90 deg\n* unitVector(`1.2rad`); // 1.2 in radians\n* ```\n*\n* The coordinate space is -1..1:\n* ```\n* y 1\n* |\n* |\n* -1 --+--- 1 x\n* |\n* |\n* -1\n* ```\n*\n* See {@link fromUnitVector} to convert back to an angle\n* @param angleOrDegrees Angle specified in degrees, or an angle with units\n*/\nfunction toUnitVector(angleOrDegrees) {\n\tconst radians = toRadian(angleOrDegrees);\n\treturn {\n\t\tx: Math.cos(radians),\n\t\ty: Math.sin(radians)\n\t};\n}\n/**\n* Convert from a [unit vector](https://en.wikipedia.org/wiki/Unit_vector) to an angle,\n* by default radians.\n*\n* ```js\n* fromUnitVector({ x: 1, y: 0.5 }); // { unit: `rad`, value: ... }\n* fromUnitVector({ x: -0.2, y: 0.4 }, `deg`) // { unit: `deg`, value ... }\n* ```\n* @param vector\n* @param unit\n* @returns Angle\n*/\nfunction fromUnitVector(vector, unit = `rad`) {\n\tconst r = Math.atan2(vector.x, vector.y);\n\tif (unit === `rad`) return {\n\t\tunit: `rad`,\n\t\tvalue: r\n\t};\n\treturn angleConvert(r, unit);\n}\n/**\n* Converts 'turns' to degrees. By defaults wraps the value, so\n* turn value of 1 or 2 equal 0deg instead of 360 or 720deg.\n* @param turns\n* @param wrap\n* @returns Degrees\n*/\nfunction turnToDegree(turns, wrap = true) {\n\tif (wrap) return turns * 360 % 360;\n\treturn turns * 360;\n}\n/**\n* Calculates the average of angles\n* @param angles Angles to average\n* @param kind Kind of average to calculate. See {@link PointAverageKinds} for details.\n* @returns Average angle\n*/\nfunction average(angles, kind = `mean`) {\n\tconst anglesProper = angles.map((a) => angleParse(a));\n\treturn fromUnitVector(average$1(anglesProper.map((a) => toUnitVector(a)), kind), anglesProper[0].unit);\n}\n/**\n* Normalise a radian angle to 0..2*PI range\n* @param angleRadian\n* @returns Normalised angle\n*/\nfunction radiansNormalise(angleRadian) {\n\tangleRadian %= piPi;\n\treturn angleRadian < 0 ? angleRadian + piPi : angleRadian;\n}\n/**\n* Returns _true_ if `check` is between `start` and `end` angles, using 0...2PI range.\n*\n* Assumes a clockwise order. Ie. the checked angle is a wedge from `start`,\n* clockwise to `end`.\n*\n* Tip: use {@link radiansNormalise} on all angles first if uncertain if they are on 0...2PI range.\n* @param check\n* @param start\n* @param end\n* @returns Boolean\n*/\nfunction radiansBetweenCircular(check, start, end) {\n\tif (start < 0 || start > piPi) throw new TypeError(`Param 'start' out of range. Expecting 0..2PI. Got: ${start}`);\n\tif (end < 0 || end > piPi) throw new TypeError(`Param 'end' out of range. Expecting 0..2PI. Got: ${end}`);\n\tif (start > Math.PI && end <= Math.PI) if (check > Math.PI) return check >= start;\n\telse return check <= end;\n\treturn check >= start && check <= end;\n}\n/**\n* Given two radian (0..2PI) angles, it returns the sweep angles\n* between them that is either minimised or maximised.\n* @param a\n* @param b\n*/\nfunction radianRange(a, b) {\n\tif (a < 0 || a > piPi) throw new TypeError(`Param 'a' out of range. Expecting 0..2PI. Got: ${a}`);\n\tif (b < 0 || b > piPi) throw new TypeError(`Param 'b' out of range. Expecting 0..2PI. Got: ${b}`);\n\tconst aa = Math.min(a, b);\n\tconst bb = Math.max(a, b);\n\tif (aa < Math.PI && bb > Math.PI) {\n\t\tconst dCw = piPi - bb + aa;\n\t\tconst dCcw = bb - aa;\n\t\tif (dCw < dCcw) return {\n\t\t\tmin: {\n\t\t\t\tstart: bb,\n\t\t\t\tend: aa,\n\t\t\t\tsweep: dCw\n\t\t\t},\n\t\t\tmax: {\n\t\t\t\tstart: aa,\n\t\t\t\tend: bb,\n\t\t\t\tsweep: dCcw\n\t\t\t}\n\t\t};\n\t}\n\treturn {\n\t\tmin: {\n\t\t\tstart: aa,\n\t\t\tend: bb,\n\t\t\tsweep: bb - aa\n\t\t},\n\t\tmax: {\n\t\t\tstart: bb,\n\t\t\tend: aa,\n\t\t\tsweep: piPi - (bb - aa)\n\t\t}\n\t};\n}\nfunction turnToRadian(turns) {\n\treturn turns * piPi;\n}\nfunction degreeToTurn(degrees) {\n\treturn degrees / 360;\n}\nfunction radianToTurn(radians) {\n\treturn radians / piPi;\n}\n//#endregion\nexport { piPi as A, radiansSum as C, turnToRadian as D, turnToDegree as E, average$1 as O, radiansNormalise as S, toUnitVector as T, radianToDegree as _, degreeToGradian as a, radiansBetweenCircular as b, degreesSum as c, gradianToRadian as d, isAngleType as f, radianRange as g, radianInvert as h, degreeArc as i, averager as k, fromUnitVector as l, radianArc as m, angleParse as n, degreeToRadian as o, isAngleTypeConvertible as p, average as r, degreeToTurn as s, angleConvert as t, gradianToDegree as u, radianToGradian as v, toRadian as w, radiansFromAxisX as x, radianToTurn as y };\n","import { t as __exportAll } from \"./chunk-pbuEa-1d.js\";\nimport { angleConvert, angleParse } from \"@ixfx/geometry\";\nimport { numberInclusiveRangeTest, numberTest, percentTest, resultThrow } from \"@ixfx/guards\";\nimport { clamp, interpolate, scaleClamped } from \"@ixfx/numbers\";\nimport { pairwise } from \"@ixfx/arrays\";\n//#region ../../node_modules/.pnpm/colorizr@4.0.1/node_modules/colorizr/dist/index.mjs\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {\n\tenumerable: true,\n\tconfigurable: true,\n\twritable: true,\n\tvalue\n}) : obj[key] = value;\nvar __export = (target, all) => {\n\tfor (var name2 in all) __defProp(target, name2, {\n\t\tget: all[name2],\n\t\tenumerable: true\n\t});\n};\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar COLOR_KEYS = {\n\thsl: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"l\"\n\t],\n\toklab: [\n\t\t\"l\",\n\t\t\"a\",\n\t\t\"b\"\n\t],\n\toklch: [\n\t\t\"l\",\n\t\t\"c\",\n\t\t\"h\"\n\t],\n\trgb: [\n\t\t\"r\",\n\t\t\"g\",\n\t\t\"b\"\n\t]\n};\nvar COLOR_MODELS = [\n\t\"hsl\",\n\t\"oklab\",\n\t\"oklch\",\n\t\"rgb\"\n];\nvar DEG2RAD = Math.PI / 180;\nvar LAB_TO_LMS = {\n\tl: [.3963377773761749, .2158037573099136],\n\tm: [-.1055613458156586, -.0638541728258133],\n\ts: [-.0894841775298119, -1.2914855480194092]\n};\nvar LRGB_TO_LMS = {\n\tl: [\n\t\t.4122214708,\n\t\t.5363325363,\n\t\t.0514459929\n\t],\n\tm: [\n\t\t.2119034982,\n\t\t.6806995451,\n\t\t.1073969566\n\t],\n\ts: [\n\t\t.0883024619,\n\t\t.2817188376,\n\t\t.6299787005\n\t]\n};\nvar LSM_TO_LAB = {\n\tl: [\n\t\t.2104542553,\n\t\t.793617785,\n\t\t.0040720468\n\t],\n\ta: [\n\t\t1.9779984951,\n\t\t2.428592205,\n\t\t.4505937099\n\t],\n\tb: [\n\t\t.0259040371,\n\t\t.7827717662,\n\t\t.808675766\n\t]\n};\nvar LSM_TO_RGB = {\n\tr: [\n\t\t4.076741636075958,\n\t\t-3.307711539258063,\n\t\t.2309699031821043\n\t],\n\tg: [\n\t\t-1.2684379732850315,\n\t\t2.609757349287688,\n\t\t-.341319376002657\n\t],\n\tb: [\n\t\t-.0041960761386756,\n\t\t-.7034186179359362,\n\t\t1.7076146940746117\n\t]\n};\nvar PRECISION = 5;\nvar RAD2DEG = 180 / Math.PI;\nvar MESSAGES = {\n\talpha: \"alpha must be a number between 0 and 1\",\n\talphaAdjustment: \"alpha must be a number between -1 and 1\",\n\tamount: \"amount must be a number between 0 and 100\",\n\tcolorRequired: \"color is required\",\n\tdegreesRange: \"degrees must be a number between -360 and 360\",\n\thueArgs: \"point, chroma and h are required\",\n\thueRange: \"hue must be a number between 0 and 360\",\n\tinput: \"input is required\",\n\tinputHex: \"input is required and must be a hex\",\n\tinputNumber: \"input is required and must be a number\",\n\tinputString: \"input is required and must be a string\",\n\tinvalid: \"invalid input\",\n\tinvalidColor: \"invalid color\",\n\tinvalidCSS: \"invalid CSS string\",\n\tinvalidHex: \"invalid hex\",\n\tinvalidKey: \"invalid key\",\n\tinvalidModel: \"invalid model\",\n\tinvalidRange: \"color value out of range\",\n\tleft: \"left is required and must be a string\",\n\tlightnessRange: \"lightness must be a number between 0 and 1\",\n\toptions: \"invalid options\",\n\tpaletteSize: \"palette size must be at least 2\",\n\tratioRange: \"ratio must be a number between 0 and 1\",\n\tright: \"right is required and must be a string\",\n\tthreshold: \"threshold must be a number between 0 and 255\",\n\tthresholdNormalized: \"threshold must be a number between 0 and 1\"\n};\nfunction invariant(condition, message) {\n\tif (condition) return;\n\tconst error = !message ? /* @__PURE__ */ new Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\") : new Error(message);\n\terror.name = \"colorizr\";\n\tthrow error;\n}\nvar cssColors = {\n\taliceblue: \"#f0f8ff\",\n\tantiquewhite: \"#faebd7\",\n\taqua: \"#00ffff\",\n\taquamarine: \"#7fffd4\",\n\tazure: \"#f0ffff\",\n\tbeige: \"#f5f5dc\",\n\tbisque: \"#ffe4c4\",\n\tblack: \"#000000\",\n\tblanchedalmond: \"#ffebcd\",\n\tblue: \"#0000ff\",\n\tblueviolet: \"#8a2be2\",\n\tbrown: \"#a52a2a\",\n\tburlywood: \"#deb887\",\n\tcadetblue: \"#5f9ea0\",\n\tchartreuse: \"#7fff00\",\n\tchocolate: \"#d2691e\",\n\tcoral: \"#ff7f50\",\n\tcornflowerblue: \"#6495ed\",\n\tcornsilk: \"#fff8dc\",\n\tcrimson: \"#dc143c\",\n\tcyan: \"#00ffff\",\n\tdarkblue: \"#00008b\",\n\tdarkcyan: \"#008b8b\",\n\tdarkgoldenrod: \"#b8860b\",\n\tdarkgray: \"#a9a9a9\",\n\tdarkgreen: \"#006400\",\n\tdarkkhaki: \"#bdb76b\",\n\tdarkmagenta: \"#8b008b\",\n\tdarkolivegreen: \"#556b2f\",\n\tdarkorange: \"#ff8c00\",\n\tdarkorchid: \"#9932cc\",\n\tdarkred: \"#8b0000\",\n\tdarksalmon: \"#e9967a\",\n\tdarkseagreen: \"#8fbc8f\",\n\tdarkslateblue: \"#483d8b\",\n\tdarkslategray: \"#2f4f4f\",\n\tdarkslategrey: \"#2f4f4f\",\n\tdarkturquoise: \"#00ced1\",\n\tdarkviolet: \"#9400d3\",\n\tdeeppink: \"#ff1493\",\n\tdeepskyblue: \"#00bfff\",\n\tdimgray: \"#696969\",\n\tdimgrey: \"#696969\",\n\tdodgerblue: \"#1e90ff\",\n\tfirebrick: \"#b22222\",\n\tfloralwhite: \"#fffaf0\",\n\tforestgreen: \"#228b22\",\n\tfuchsia: \"#ff00ff\",\n\tgainsboro: \"#dcdcdc\",\n\tghostwhite: \"#f8f8ff\",\n\tgold: \"#ffd700\",\n\tgoldenrod: \"#daa520\",\n\tgray: \"#808080\",\n\tgrey: \"#808080\",\n\tgreen: \"#008000\",\n\tgreenyellow: \"#adff2f\",\n\thoneydew: \"#f0fff0\",\n\thotpink: \"#ff69b4\",\n\tindianred: \"#cd5c5c\",\n\tindigo: \"#4b0082\",\n\tivory: \"#fffff0\",\n\tkhaki: \"#f0e68c\",\n\tlavender: \"#e6e6fa\",\n\tlavenderblush: \"#fff0f5\",\n\tlawngreen: \"#7cfc00\",\n\tlemonchiffon: \"#fffacd\",\n\tlightblue: \"#add8e6\",\n\tlightcoral: \"#f08080\",\n\tlightcyan: \"#e0ffff\",\n\tlightgoldenrodyellow: \"#fafad2\",\n\tlightgray: \"#d3d3d3\",\n\tlightgreen: \"#90ee90\",\n\tlightgrey: \"#d3d3d3\",\n\tlightpink: \"#ffb6c1\",\n\tlightsalmon: \"#ffa07a\",\n\tlightseagreen: \"#20b2aa\",\n\tlightskyblue: \"#87cefa\",\n\tlightslategray: \"#778899\",\n\tlightslategrey: \"#778899\",\n\tlightsteelblue: \"#b0c4de\",\n\tlightyellow: \"#ffffe0\",\n\tlime: \"#00ff00\",\n\tlimegreen: \"#32cd32\",\n\tlinen: \"#faf0e6\",\n\tmagenta: \"#ff00ff\",\n\tmaroon: \"#800000\",\n\tmediumaquamarine: \"#66cdaa\",\n\tmediumblue: \"#0000cd\",\n\tmediumorchid: \"#ba55d3\",\n\tmediumpurple: \"#9370db\",\n\tmediumseagreen: \"#3cb371\",\n\tmediumslateblue: \"#7b68ee\",\n\tmediumspringgreen: \"#00fa9a\",\n\tmediumturquoise: \"#48d1cc\",\n\tmediumvioletred: \"#c71585\",\n\tmidnightblue: \"#191970\",\n\tmintcream: \"#f5fffa\",\n\tmistyrose: \"#ffe4e1\",\n\tmoccasin: \"#ffe4b5\",\n\tnavajowhite: \"#ffdead\",\n\tnavy: \"#000080\",\n\toldlace: \"#fdf5e6\",\n\tolive: \"#808000\",\n\tolivedrab: \"#6b8e23\",\n\torange: \"#ffa500\",\n\torangered: \"#ff4500\",\n\torchid: \"#da70d6\",\n\tpalegoldenrod: \"#eee8aa\",\n\tpalegreen: \"#98fb98\",\n\tpaleturquoise: \"#afeeee\",\n\tpalevioletred: \"#db7093\",\n\tpapayawhip: \"#ffefd5\",\n\tpeachpuff: \"#ffdab9\",\n\tperu: \"#cd853f\",\n\tpink: \"#ffc0cb\",\n\tplum: \"#dda0dd\",\n\tpowderblue: \"#b0e0e6\",\n\tpurple: \"#800080\",\n\trebeccapurple: \"#663399\",\n\tred: \"#ff0000\",\n\trosybrown: \"#bc8f8f\",\n\troyalblue: \"#4169e1\",\n\tsaddlebrown: \"#8b4513\",\n\tsalmon: \"#fa8072\",\n\tsandybrown: \"#f4a460\",\n\tseagreen: \"#2e8b57\",\n\tseashell: \"#fff5ee\",\n\tsienna: \"#a0522d\",\n\tsilver: \"#c0c0c0\",\n\tskyblue: \"#87ceeb\",\n\tslateblue: \"#6a5acd\",\n\tslategray: \"#708090\",\n\tslategrey: \"#708090\",\n\tsnow: \"#fffafa\",\n\tspringgreen: \"#00ff7f\",\n\tsteelblue: \"#4682b4\",\n\ttan: \"#d2b48c\",\n\tteal: \"#008080\",\n\tthistle: \"#d8bfd8\",\n\ttomato: \"#ff6347\",\n\tturquoise: \"#40e0d0\",\n\tviolet: \"#ee82ee\",\n\twheat: \"#f5deb3\",\n\twhite: \"#ffffff\",\n\twhitesmoke: \"#f5f5f5\",\n\tyellow: \"#ffff00\",\n\tyellowgreen: \"#9acd32\"\n};\nvar hexRegex = /^#(?:[\\da-f]{3,4}|[\\da-f]{6,8})$/i;\nfunction hasValidMatches(input) {\n\treturn Array.isArray(input) && input.length === 6;\n}\nfunction isHex(input) {\n\tif (!isString(input)) return false;\n\treturn hexRegex.test(input);\n}\nfunction isHSL(input) {\n\tif (!isPlainObject(input)) return false;\n\tconst entries = Object.entries(input);\n\treturn !!entries.length && entries.every(([key, value]) => {\n\t\tif (key === \"h\") return value >= 0 && value <= 360;\n\t\tif (key === \"alpha\") return value >= 0 && value <= 1;\n\t\treturn COLOR_KEYS.hsl.includes(key) && value >= 0 && value <= 100;\n\t});\n}\nfunction isLAB(input) {\n\tif (!isPlainObject(input)) return false;\n\tconst entries = Object.entries(input);\n\treturn !!entries.length && entries.every(([key, value]) => {\n\t\tif (key === \"l\") return value >= 0 && value <= 100;\n\t\tif (key === \"alpha\") return value >= 0 && value <= 1;\n\t\treturn COLOR_KEYS.oklab.includes(key) && value >= -1 && value <= 1;\n\t});\n}\nfunction isLCH(input) {\n\tif (!isPlainObject(input)) return false;\n\tconst entries = Object.entries(input);\n\treturn !!entries.length && entries.every(([key, value]) => {\n\t\tif (key === \"l\") return value >= 0 && value <= 100;\n\t\tif (key === \"alpha\") return value >= 0 && value <= 1;\n\t\treturn COLOR_KEYS.oklch.includes(key) && value >= 0 && value <= (key === \"h\" ? 360 : 1);\n\t});\n}\nfunction isNamedColor(input) {\n\treturn isString(input) && Object.keys(cssColors).includes(input.toLowerCase());\n}\nfunction isNumber(input) {\n\treturn typeof input === \"number\" && !Number.isNaN(input);\n}\nfunction isNumberInRange(input, min, max) {\n\treturn isNumber(input) && input >= min && input <= max;\n}\nfunction isPlainObject(input) {\n\tif (!input) return false;\n\tconst { toString } = Object.prototype;\n\tconst prototype = Object.getPrototypeOf(input);\n\treturn toString.call(input) === \"[object Object]\" && (prototype === null || prototype === Object.getPrototypeOf({}));\n}\nfunction isRGB(input) {\n\tif (!isPlainObject(input)) return false;\n\tconst entries = Object.entries(input);\n\treturn !!entries.length && entries.every(([key, value]) => {\n\t\tif (key === \"alpha\") return value >= 0 && value <= 1;\n\t\treturn COLOR_KEYS.rgb.includes(key) && value >= 0 && value <= 255;\n\t});\n}\nfunction isString(input, validate = true) {\n\tconst isValid = typeof input === \"string\";\n\tif (validate) return isValid && !!input.trim().length;\n\treturn isValid;\n}\nfunction isValidColorModel(input) {\n\treturn isHSL(input) || isRGB(input) || isLAB(input) || isLCH(input);\n}\nfunction formatHex(input) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tlet color = input.replace(\"#\", \"\");\n\tif (color.length === 3 || color.length === 4) {\n\t\tconst values = [...color];\n\t\tcolor = \"\";\n\t\tvalues.forEach((d) => {\n\t\t\tcolor += `${d}${d}`;\n\t\t});\n\t}\n\tconst hex = `#${color}`;\n\tinvariant(isHex(hex), MESSAGES.invalidHex);\n\treturn hex;\n}\nfunction addAlpha(input, alpha) {\n\tinvariant(isValidColorModel(input), MESSAGES.invalid);\n\tlet value = alpha;\n\tif (value === void 0) return input;\n\tif (value > 1) value /= 100;\n\tif (value === 1) return input;\n\treturn {\n\t\t...input,\n\t\talpha: value\n\t};\n}\nfunction clamp$1(value, min = 0, max = 100) {\n\treturn Math.min(Math.max(value, min), max);\n}\nfunction constrainDegrees(input, amount) {\n\tinvariant(isNumber(input), MESSAGES.inputNumber);\n\tlet value = input + amount;\n\tif (value > 360) value %= 360;\n\tif (value < 0) value += 360;\n\treturn Math.abs(value);\n}\nfunction extractAlpha(input) {\n\tif (Array.isArray(input)) return;\n\treturn input.alpha;\n}\nfunction limit(input, model, key) {\n\tinvariant(isNumber(input), MESSAGES.inputNumber);\n\tinvariant(COLOR_MODELS.includes(model), `${MESSAGES.invalidModel}${model ? `: ${model}` : \"\"}`);\n\tinvariant(COLOR_KEYS[model].includes(key), `${MESSAGES.invalidKey}${key ? `: ${key}` : \"\"}`);\n\tswitch (model) {\n\t\tcase \"hsl\":\n\t\t\tinvariant(COLOR_KEYS.hsl.includes(key), MESSAGES.invalidKey);\n\t\t\tif ([\"l\", \"s\"].includes(key)) return clamp$1(input);\n\t\t\treturn clamp$1(input, 0, 360);\n\t\tcase \"rgb\":\n\t\t\tinvariant(COLOR_KEYS.rgb.includes(key), MESSAGES.invalidKey);\n\t\t\treturn clamp$1(input, 0, 255);\n\t\tdefault: throw new Error(\"Invalid inputs\");\n\t}\n}\nfunction parseInput(input, model) {\n\tconst keys = COLOR_KEYS[model];\n\tconst validator = {\n\t\thsl: isHSL,\n\t\toklab: isLAB,\n\t\toklch: isLCH,\n\t\trgb: isRGB\n\t};\n\tinvariant(isPlainObject(input) || Array.isArray(input), MESSAGES.invalid);\n\tconst value = Array.isArray(input) ? {\n\t\t[keys[0]]: input[0],\n\t\t[keys[1]]: input[1],\n\t\t[keys[2]]: input[2]\n\t} : input;\n\tinvariant(validator[model](value), `${MESSAGES.invalidColor}: ${model}`);\n\treturn value;\n}\nfunction restrictValues(input, precision = PRECISION, forcePrecision = true) {\n\tconst output = new Map(Object.entries(input));\n\tfor (const [key, value] of output.entries()) output.set(key, round$1(value, precision, forcePrecision));\n\treturn Object.fromEntries(output);\n}\nfunction round$1(input, precision = 2, forcePrecision = true) {\n\tif (!isNumber(input) || input === 0) return 0;\n\tif (forcePrecision) {\n\t\tconst factor2 = 10 ** precision;\n\t\treturn Math.round(input * factor2) / factor2;\n\t}\n\tconst absInput = Math.abs(input);\n\tlet digits = Math.abs(Math.ceil(Math.log(absInput) / Math.LN10));\n\tif (digits === 0) digits = 2;\n\telse if (digits > precision) digits = precision;\n\tlet exponent = precision - (digits < 0 ? 0 : digits);\n\tif (exponent <= 1 && precision > 1) exponent = 2;\n\telse if (exponent > precision || exponent === 0) exponent = precision;\n\tconst factor = 10 ** exponent;\n\treturn Math.round(input * factor) / factor;\n}\nfunction addAlphaToHex(input, alpha) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tinvariant(isNumberInRange(alpha, 0, 1), MESSAGES.alpha);\n\tif (alpha >= 1) return removeAlphaFromHex(input);\n\treturn `${removeAlphaFromHex(input)}${convertAlphaToHex(alpha)}`;\n}\nfunction convertAlphaToHex(input) {\n\tinvariant(isNumber(input), MESSAGES.inputNumber);\n\tlet alpha = input;\n\tif (input > 1) alpha /= 100;\n\treturn Math.round(alpha * 255).toString(16).padStart(2, \"0\");\n}\nfunction extractAlphaFromHex(input) {\n\tinvariant(isHex(input), MESSAGES.inputString);\n\tconst alpha = input.substring(7, 9);\n\tif (!alpha) return 1;\n\treturn round$1(parseInt(alpha, 16) / 255);\n}\nfunction removeAlphaFromHex(input) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tif (input.length === 5) return input.substring(0, 4);\n\treturn input.substring(0, 7);\n}\nfunction hex2rgb(input) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tconst hex = formatHex(input).slice(1);\n\tconst alpha = extractAlphaFromHex(input);\n\treturn addAlpha({\n\t\tr: parseInt(hex.charAt(0) + hex.charAt(1), 16),\n\t\tg: parseInt(hex.charAt(2) + hex.charAt(3), 16),\n\t\tb: parseInt(hex.charAt(4) + hex.charAt(5), 16)\n\t}, alpha);\n}\nvar converters_exports = {};\n__export(converters_exports, {\n\thex2hsl: () => hex2hsl,\n\thex2oklab: () => hex2oklab,\n\thex2oklch: () => hex2oklch,\n\thex2rgb: () => hex2rgb,\n\thsl2hex: () => hsl2hex,\n\thsl2oklab: () => hsl2oklab,\n\thsl2oklch: () => hsl2oklch,\n\thsl2rgb: () => hsl2rgb,\n\toklab2hex: () => oklab2hex,\n\toklab2hsl: () => oklab2hsl,\n\toklab2oklch: () => oklab2oklch,\n\toklab2rgb: () => oklab2rgb,\n\toklch2hex: () => oklch2hex,\n\toklch2hsl: () => oklch2hsl,\n\toklch2oklab: () => oklch2oklab,\n\toklch2rgb: () => oklch2rgb,\n\trgb2hex: () => rgb2hex,\n\trgb2hsl: () => rgb2hsl,\n\trgb2oklab: () => rgb2oklab,\n\trgb2oklch: () => rgb2oklch\n});\nfunction rgb2hsl(input) {\n\tconst value = parseInput(input, \"rgb\");\n\tconst alpha = extractAlpha(input);\n\tconst rLimit = limit(value.r, \"rgb\", \"r\") / 255;\n\tconst gLimit = limit(value.g, \"rgb\", \"g\") / 255;\n\tconst bLimit = limit(value.b, \"rgb\", \"b\") / 255;\n\tconst min = Math.min(rLimit, gLimit, bLimit);\n\tconst max = Math.max(rLimit, gLimit, bLimit);\n\tconst delta = max - min;\n\tlet h = 0;\n\tlet s;\n\tconst l = (max + min) / 2;\n\tlet rate;\n\tswitch (max) {\n\t\tcase rLimit:\n\t\t\trate = !delta ? 0 : (gLimit - bLimit) / delta;\n\t\t\th = 60 * rate;\n\t\t\tbreak;\n\t\tcase gLimit:\n\t\t\trate = (bLimit - rLimit) / delta;\n\t\t\th = 60 * rate + 120;\n\t\t\tbreak;\n\t\tcase bLimit:\n\t\t\trate = (rLimit - gLimit) / delta;\n\t\t\th = 60 * rate + 240;\n\t\t\tbreak;\n\t\tdefault: break;\n\t}\n\tif (h < 0) h = 360 + h;\n\tif (min === max) s = 0;\n\telse s = l < .5 ? delta / (2 * l) : delta / (2 - 2 * l);\n\treturn addAlpha({\n\t\th: Math.abs(+(h % 360).toFixed(2)),\n\t\ts: +(s * 100).toFixed(2),\n\t\tl: +(l * 100).toFixed(2)\n\t}, alpha);\n}\nfunction hex2hsl(input) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tconst alpha = extractAlphaFromHex(input);\n\treturn addAlpha(rgb2hsl(hex2rgb(input)), alpha);\n}\nvar { cbrt, sign } = Math;\nfunction rgb2lrgb(input) {\n\tconst abs2 = Math.abs(input);\n\tif (abs2 < .04045) return input / 12.92;\n\treturn (sign(input) || 1) * ((abs2 + .055) / 1.055) ** 2.4;\n}\nfunction rgb2oklab(input, precision = PRECISION) {\n\tconst value = parseInput(input, \"rgb\");\n\tconst alpha = extractAlpha(input);\n\tconst [lr, lg, lb] = [\n\t\trgb2lrgb(value.r / 255),\n\t\trgb2lrgb(value.g / 255),\n\t\trgb2lrgb(value.b / 255)\n\t];\n\tconst l = cbrt(LRGB_TO_LMS.l[0] * lr + LRGB_TO_LMS.l[1] * lg + LRGB_TO_LMS.l[2] * lb);\n\tconst m = cbrt(LRGB_TO_LMS.m[0] * lr + LRGB_TO_LMS.m[1] * lg + LRGB_TO_LMS.m[2] * lb);\n\tconst s = cbrt(LRGB_TO_LMS.s[0] * lr + LRGB_TO_LMS.s[1] * lg + LRGB_TO_LMS.s[2] * lb);\n\treturn addAlpha(restrictValues({\n\t\tl: LSM_TO_LAB.l[0] * l + LSM_TO_LAB.l[1] * m - LSM_TO_LAB.l[2] * s,\n\t\ta: LSM_TO_LAB.a[0] * l - LSM_TO_LAB.a[1] * m + LSM_TO_LAB.a[2] * s,\n\t\tb: LSM_TO_LAB.b[0] * l + LSM_TO_LAB.b[1] * m - LSM_TO_LAB.b[2] * s\n\t}, precision), alpha);\n}\nfunction hex2oklab(input, precision) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tconst alpha = extractAlphaFromHex(input);\n\treturn addAlpha(rgb2oklab(hex2rgb(input), precision), alpha);\n}\nvar { atan2, sqrt } = Math;\nfunction oklab2oklch(input, precision) {\n\tconst { l, a, b } = restrictValues(parseInput(input, \"oklab\"));\n\tconst alpha = extractAlpha(input);\n\tconst c = sqrt(a ** 2 + b ** 2);\n\tlet h = (atan2(b, a) * RAD2DEG + 360) % 360;\n\tif (round$1(c * 1e4) === 0) h = 0;\n\treturn addAlpha(restrictValues({\n\t\tl,\n\t\tc,\n\t\th\n\t}, precision), alpha);\n}\nfunction rgb2oklch(input, precision) {\n\tconst value = parseInput(input, \"rgb\");\n\tconst alpha = extractAlpha(input);\n\treturn addAlpha(oklab2oklch(rgb2oklab(value, precision), precision), alpha);\n}\nfunction hex2oklch(input, precision) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tconst alpha = extractAlphaFromHex(input);\n\treturn addAlpha(rgb2oklch(hex2rgb(input), precision), alpha);\n}\nfunction hue2rgb(point, chroma2, h) {\n\tinvariant(isNumber(point) && isNumber(chroma2) && isNumber(h), MESSAGES.hueArgs);\n\tlet hue = h;\n\tif (hue < 0) hue += 1;\n\tif (hue > 1) hue -= 1;\n\tif (hue < 1 / 6) return round$1(point + (chroma2 - point) * 6 * hue, 4);\n\tif (hue < 1 / 2) return round$1(chroma2, 4);\n\tif (hue < 2 / 3) return round$1(point + (chroma2 - point) * (2 / 3 - hue) * 6, 4);\n\treturn round$1(point, 4);\n}\nfunction hsl2rgb(input) {\n\tconst value = parseInput(input, \"hsl\");\n\tconst alpha = extractAlpha(input);\n\tconst h = round$1(value.h) / 360;\n\tconst s = round$1(value.s) / 100;\n\tconst l = round$1(value.l) / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\tlet point;\n\tlet chroma2;\n\tif (s === 0) {\n\t\tr = l;\n\t\tg = l;\n\t\tb = l;\n\t} else {\n\t\tchroma2 = l < .5 ? l * (1 + s) : l + s - l * s;\n\t\tpoint = 2 * l - chroma2;\n\t\tr = hue2rgb(point, chroma2, h + 1 / 3);\n\t\tg = hue2rgb(point, chroma2, h);\n\t\tb = hue2rgb(point, chroma2, h - 1 / 3);\n\t}\n\treturn addAlpha({\n\t\tr: Math.round(r * 255),\n\t\tg: Math.round(g * 255),\n\t\tb: Math.round(b * 255)\n\t}, alpha);\n}\nfunction rgb2hex(input) {\n\tconst rgb = parseInput(input, \"rgb\");\n\tconst alpha = extractAlpha(input);\n\tconst hex = `#${[\n\t\trgb.r,\n\t\trgb.g,\n\t\trgb.b\n\t].map((d) => `0${Math.floor(d).toString(16)}`.slice(-2)).join(\"\")}`;\n\treturn alpha !== void 0 && alpha < 1 ? addAlphaToHex(hex, alpha) : hex;\n}\nfunction hsl2hex(input) {\n\tconst value = parseInput(input, \"hsl\");\n\tconst alpha = extractAlpha(input);\n\tconst hex = rgb2hex(hsl2rgb(value));\n\treturn alpha !== void 0 && alpha < 1 ? addAlphaToHex(hex, alpha) : hex;\n}\nfunction hsl2oklab(input, precision) {\n\tconst value = parseInput(input, \"hsl\");\n\tconst alpha = extractAlpha(input);\n\treturn addAlpha(rgb2oklab(hsl2rgb(value), precision), alpha);\n}\nfunction hsl2oklch(input, precision) {\n\tconst value = parseInput(input, \"hsl\");\n\tconst alpha = extractAlpha(input);\n\treturn addAlpha(rgb2oklch(hsl2rgb(value), precision), alpha);\n}\nvar { abs } = Math;\nfunction lrgb2rgb(input) {\n\tconst absoluteNumber = abs(input);\n\tconst sign2 = input < 0 ? -1 : 1;\n\tif (absoluteNumber > .0031308) return sign2 * (absoluteNumber ** (1 / 2.4) * 1.055 - .055);\n\treturn input * 12.92;\n}\nfunction oklab2rgb(input, precision = 0) {\n\tconst { l: L, a: A, b: B } = parseInput(input, \"oklab\");\n\tconst alpha = extractAlpha(input);\n\tconst l = (L + LAB_TO_LMS.l[0] * A + LAB_TO_LMS.l[1] * B) ** 3;\n\tconst m = (L + LAB_TO_LMS.m[0] * A + LAB_TO_LMS.m[1] * B) ** 3;\n\tconst s = (L + LAB_TO_LMS.s[0] * A + LAB_TO_LMS.s[1] * B) ** 3;\n\tconst r = 255 * lrgb2rgb(LSM_TO_RGB.r[0] * l + LSM_TO_RGB.r[1] * m + LSM_TO_RGB.r[2] * s);\n\tconst g = 255 * lrgb2rgb(LSM_TO_RGB.g[0] * l + LSM_TO_RGB.g[1] * m + LSM_TO_RGB.g[2] * s);\n\tconst b = 255 * lrgb2rgb(LSM_TO_RGB.b[0] * l + LSM_TO_RGB.b[1] * m + LSM_TO_RGB.b[2] * s);\n\treturn addAlpha({\n\t\tr: clamp$1(round$1(r, precision), 0, 255),\n\t\tg: clamp$1(round$1(g, precision), 0, 255),\n\t\tb: clamp$1(round$1(b, precision), 0, 255)\n\t}, alpha);\n}\nfunction oklab2hex(input) {\n\tconst value = parseInput(input, \"oklab\");\n\tconst alpha = extractAlpha(input);\n\tconst hex = rgb2hex(oklab2rgb(value));\n\treturn alpha !== void 0 && alpha < 1 ? addAlphaToHex(hex, alpha) : hex;\n}\nfunction oklab2hsl(input) {\n\tconst value = parseInput(input, \"oklab\");\n\tconst alpha = extractAlpha(input);\n\treturn addAlpha(rgb2hsl(oklab2rgb(value)), alpha);\n}\nvar { sin, cos } = Math;\nfunction oklch2oklab(input, precision) {\n\tlet { l, c, h } = parseInput(input, \"oklch\");\n\tconst alpha = extractAlpha(input);\n\tif (Number.isNaN(h) || h < 0) h = 0;\n\treturn addAlpha(restrictValues({\n\t\tl,\n\t\ta: c * cos(h * DEG2RAD),\n\t\tb: c * sin(h * DEG2RAD)\n\t}, precision), alpha);\n}\nfunction oklch2rgb(input, precision = 0) {\n\tconst value = parseInput(input, \"oklch\");\n\tconst alpha = extractAlpha(input);\n\treturn addAlpha(oklab2rgb(oklch2oklab(value), precision), alpha);\n}\nfunction oklch2hex(input) {\n\tconst value = parseInput(input, \"oklch\");\n\tconst alpha = extractAlpha(input);\n\tconst hex = rgb2hex(oklch2rgb(value));\n\treturn alpha !== void 0 && alpha < 1 ? addAlphaToHex(hex, alpha) : hex;\n}\nfunction oklch2hsl(input) {\n\tconst value = parseInput(input, \"oklch\");\n\tconst alpha = extractAlpha(input);\n\treturn addAlpha(rgb2hsl(oklch2rgb(value)), alpha);\n}\nvar MODEL = \"(rgb|hsl|oklab|oklch)a?\";\nvar SEP = \"(?:\\\\s*[,/]\\\\s*|\\\\s+)\";\nvar VALUE = \"(none|[\\\\d%.-]+(?:deg|grad|rad|turn)?)\";\nvar colorRegex = new RegExp(`${MODEL}\\\\s*\\\\(\\\\s*${VALUE}${SEP}${VALUE}${SEP}${VALUE}(?:${SEP}${VALUE})?\\\\s*\\\\)`, \"i\");\nfunction parseAngle(value) {\n\tconst number_ = parseFloat(value);\n\tlet result;\n\tif (value.endsWith(\"grad\")) result = number_ * .9;\n\telse if (value.endsWith(\"rad\")) result = number_ * (180 / Math.PI);\n\telse if (value.endsWith(\"turn\")) result = number_ * 360;\n\telse result = number_;\n\treturn Math.round(result * 1e5) / 1e5;\n}\nfunction extractColorParts(input) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tif (isHex(input)) {\n\t\tconst keys2 = COLOR_KEYS.rgb;\n\t\tconst { r, g, b } = hex2rgb(input);\n\t\tconst alpha2 = extractAlphaFromHex(input);\n\t\treturn {\n\t\t\tmodel: \"rgb\",\n\t\t\t[keys2[0]]: r,\n\t\t\t[keys2[1]]: g,\n\t\t\t[keys2[2]]: b,\n\t\t\talpha: alpha2 < 1 ? alpha2 : void 0\n\t\t};\n\t}\n\tconst matches = colorRegex.exec(input);\n\tinvariant(hasValidMatches(matches), MESSAGES.invalidCSS);\n\tconst model = matches[1];\n\tconst keys = COLOR_KEYS[model];\n\tlet alpha = matches[5] ? parseFloat(matches[5]) : 1;\n\tif (alpha > 1) alpha /= 100;\n\tconst parseValue = (value, index) => {\n\t\tif (value === \"none\") return 0;\n\t\tif (model === \"hsl\" && index === 0 || model === \"oklch\" && index === 2) return parseAngle(value);\n\t\tconst parsedValue = parseFloat(value);\n\t\tif (!value.includes(\"%\")) return parsedValue;\n\t\tif (model === \"oklch\") {\n\t\t\tif (index === 1) return parsedValue * .4 / 100;\n\t\t} else if (model === \"oklab\") {\n\t\t\tif (index === 1 || index === 2) return parsedValue * .4 / 100;\n\t\t}\n\t\treturn parsedValue;\n\t};\n\tconst values = [\n\t\tparseValue(matches[2], 0),\n\t\tparseValue(matches[3], 1),\n\t\tparseValue(matches[4], 2)\n\t];\n\tif (model === \"oklab\") {\n\t\tinvariant(values[1] >= -.4 && values[1] <= .4, MESSAGES.invalidRange);\n\t\tinvariant(values[2] >= -.4 && values[2] <= .4, MESSAGES.invalidRange);\n\t} else if (model === \"oklch\") invariant(values[1] >= 0 && values[1] <= .4, MESSAGES.invalidRange);\n\treturn {\n\t\tmodel,\n\t\t[keys[0]]: values[0],\n\t\t[keys[1]]: values[1],\n\t\t[keys[2]]: values[2],\n\t\talpha: alpha < 1 ? alpha : void 0\n\t};\n}\nvar toHslConverters = {\n\toklab: oklab2hsl,\n\toklch: oklch2hsl,\n\trgb: rgb2hsl\n};\nvar toOklabConverters = {\n\thsl: hsl2oklab,\n\toklch: oklch2oklab,\n\trgb: rgb2oklab\n};\nvar toOklchConverters = {\n\thsl: hsl2oklch,\n\toklab: oklab2oklch,\n\trgb: rgb2oklch\n};\nvar toRgbConverters = {\n\thsl: hsl2rgb,\n\toklab: oklab2rgb,\n\toklch: oklch2rgb\n};\nvar toHexConverters = {\n\thsl: hsl2hex,\n\toklab: oklab2hex,\n\toklch: oklch2hex,\n\trgb: rgb2hex\n};\nvar fromHexConverters = {\n\thsl: hex2hsl,\n\toklab: hex2oklab,\n\toklch: hex2oklch,\n\trgb: hex2rgb\n};\nvar converterTables = {\n\thsl: toHslConverters,\n\toklab: toOklabConverters,\n\toklch: toOklchConverters,\n\trgb: toRgbConverters\n};\nfunction convertFromCSS(value, output) {\n\tconst { alpha, model, ...color } = extractColorParts(value);\n\tif ([\"oklab\", \"oklch\"].includes(model) && color.l > 1) color.l = round$1(color.l / 100, PRECISION);\n\tconst colorTuple = Object.values(color);\n\tif (output === \"hex\") {\n\t\tconst alphaPrefix = alpha ? convertAlphaToHex(alpha) : \"\";\n\t\treturn `${toHexConverters[model](colorTuple)}${alphaPrefix}`;\n\t}\n\tconst converter = converterTables[output]?.[model];\n\treturn addAlpha(converter ? converter(colorTuple) : color, alpha);\n}\nfunction convertFromHex(value, output) {\n\tconst alpha = extractAlphaFromHex(value);\n\tif (output === \"hex\") return `${removeAlphaFromHex(value)}${alpha !== 1 ? convertAlphaToHex(alpha) : \"\"}`;\n\treturn addAlpha(fromHexConverters[output](value), alpha);\n}\nfunction parseCSS(input, format) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tconst value = isNamedColor(input) ? cssColors[input.toLowerCase()] : input;\n\tconst output = format ?? (isHex(value) ? \"hex\" : extractColorParts(value).model);\n\tif (isHex(value)) return convertFromHex(value, output);\n\treturn convertFromCSS(value, output);\n}\nvar mainTRC = 2.4;\nvar normBG = .56;\nvar normTXT = .57;\nvar revBG = .65;\nvar revTXT = .62;\nvar sRco = .2126729;\nvar sGco = .7151522;\nvar sBco = .072175;\nvar blkThreshold = .022;\nvar blkClamp = 1.414;\nvar scaleBoW = 1.14;\nvar scaleWoB = 1.14;\nvar loBoWOffset = .027;\nvar loWoBOffset = .027;\nvar loClip = .1;\nvar deltaYmin = 5e-4;\nfunction softClamp(Y) {\n\treturn Y > blkThreshold ? Y : Y + (blkThreshold - Y) ** blkClamp;\n}\nfunction sRGBtoY(r, g, b) {\n\treturn sRco * (r / 255) ** mainTRC + sGco * (g / 255) ** mainTRC + sBco * (b / 255) ** mainTRC;\n}\nfunction apcaContrast(background, foreground) {\n\tinvariant(isString(background), MESSAGES.inputString);\n\tinvariant(isString(foreground), MESSAGES.inputString);\n\tconst bg = hex2rgb(parseCSS(background, \"hex\"));\n\tconst fg = hex2rgb(parseCSS(foreground, \"hex\"));\n\tconst txtY = softClamp(sRGBtoY(fg.r, fg.g, fg.b));\n\tconst bgY = softClamp(sRGBtoY(bg.r, bg.g, bg.b));\n\tif (Math.abs(bgY - txtY) < deltaYmin) return 0;\n\tconst SAPC = bgY > txtY ? (bgY ** normBG - txtY ** normTXT) * scaleBoW : (bgY ** revBG - txtY ** revTXT) * scaleWoB;\n\tif (Math.abs(SAPC) < loClip) return 0;\n\treturn round$1(SAPC > 0 ? (SAPC - loBoWOffset) * 100 : (SAPC + loWoBOffset) * 100, 5);\n}\nfunction brightnessDifference(left, right, precision = PRECISION) {\n\tinvariant(isString(left), MESSAGES.left);\n\tinvariant(isString(right), MESSAGES.right);\n\tconst RGBLeft = parseCSS(left, \"rgb\");\n\tconst RGBRight = parseCSS(right, \"rgb\");\n\tconst brightnessLeft = (RGBLeft.r * 299 + RGBLeft.g * 587 + RGBLeft.b * 114) / 1e3;\n\tconst brightnessRight = (RGBRight.r * 299 + RGBRight.g * 587 + RGBRight.b * 114) / 1e3;\n\treturn round$1(Math.abs(brightnessRight - brightnessLeft), precision);\n}\nfunction chroma(input) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tconst { r, g, b } = parseCSS(input, \"rgb\");\n\treturn round$1((Math.max(r, g, b) - Math.min(r, g, b)) / 255, 4);\n}\nfunction colorDifference(left, right) {\n\tinvariant(isString(left), MESSAGES.left);\n\tinvariant(isString(right), MESSAGES.right);\n\tconst RGBLeft = parseCSS(left, \"rgb\");\n\tconst RGBRight = parseCSS(right, \"rgb\");\n\treturn Math.max(RGBLeft.r, RGBRight.r) - Math.min(RGBLeft.r, RGBRight.r) + (Math.max(RGBLeft.g, RGBRight.g) - Math.min(RGBLeft.g, RGBRight.g)) + (Math.max(RGBLeft.b, RGBRight.b) - Math.min(RGBLeft.b, RGBRight.b));\n}\nfunction luminance(input) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tconst { r, g, b } = parseCSS(input, \"rgb\");\n\tconst rgb = [\n\t\tr / 255,\n\t\tg / 255,\n\t\tb / 255\n\t];\n\tfor (let index = 0; index < rgb.length; index++) if (rgb[index] <= .04045) rgb[index] /= 12.92;\n\telse rgb[index] = ((rgb[index] + .055) / 1.055) ** 2.4;\n\treturn round$1(.2126 * rgb[0] + .7152 * rgb[1] + .0722 * rgb[2], 4);\n}\nfunction contrast(left, right) {\n\tinvariant(isString(left), MESSAGES.left);\n\tinvariant(isString(right), MESSAGES.right);\n\tconst LuminanceLeft = luminance(left);\n\tconst LuminanceRight = luminance(right);\n\treturn round$1(LuminanceLeft >= LuminanceRight ? (LuminanceLeft + .05) / (LuminanceRight + .05) : (LuminanceRight + .05) / (LuminanceLeft + .05));\n}\nfunction compare(left, right) {\n\tinvariant(isString(left), MESSAGES.left);\n\tinvariant(isString(right), MESSAGES.right);\n\tconst colorThreshold = 500;\n\tconst brightnessThreshold = 125;\n\tconst colorDifference2 = colorDifference(left, right);\n\tconst contrast2 = contrast(left, right);\n\tconst brightnessDifference2 = brightnessDifference(left, right);\n\tconst isBright = brightnessDifference2 >= brightnessThreshold;\n\tconst hasEnoughDifference = colorDifference2 >= colorThreshold;\n\tlet compliant = 0;\n\tif (isBright && hasEnoughDifference) compliant = 2;\n\telse if (isBright || hasEnoughDifference) compliant = 1;\n\treturn {\n\t\tbrightnessDifference: brightnessDifference2,\n\t\tcolorDifference: colorDifference2,\n\t\tcompliant,\n\t\tcontrast: contrast2,\n\t\tlargeAA: contrast2 >= 3,\n\t\tlargeAAA: contrast2 >= 4.5,\n\t\tnormalAA: contrast2 >= 4.5,\n\t\tnormalAAA: contrast2 >= 7\n\t};\n}\nfunction getColorModel(input) {\n\tif (isHex(input) || isNamedColor(input)) return \"hex\";\n\tif (isHSL(input)) return \"hsl\";\n\tif (isLAB(input)) return \"oklab\";\n\tif (isLCH(input)) return \"oklch\";\n\tif (isRGB(input)) return \"rgb\";\n\tthrow new Error(MESSAGES.invalid);\n}\nfunction getColorValue(input, output) {\n\tconst value = isNamedColor(input) ? cssColors[input.toLowerCase()] : input;\n\tconst from = getColorModel(value);\n\tif (from === output) return value;\n\tconst converter = converters_exports[`${from}2${output}`];\n\tif (!converter) throw new Error(`Converter not found for ${from} to ${output}`);\n\treturn converter(value);\n}\nfunction formatCSS(input, options = {}) {\n\tinvariant(isHex(input) || isValidColorModel(input), MESSAGES.invalid);\n\tconst { alpha, format = \"hex\", precision = PRECISION, separator: baseSeparator = \" \" } = options;\n\tconst opacity2 = alpha && alpha !== 1 ? `${round$1(alpha * 100)}%` : null;\n\tlet params = [];\n\tlet separator = baseSeparator;\n\tswitch (format) {\n\t\tcase \"hsl\": {\n\t\t\tconst { h, s, l } = getColorValue(input, \"hsl\");\n\t\t\tparams = [\n\t\t\t\th,\n\t\t\t\t`${s}%`,\n\t\t\t\t`${l}%`\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"oklab\": {\n\t\t\tseparator = \" \";\n\t\t\tconst { l, a, b } = restrictValues(getColorValue(input, \"oklab\"), precision);\n\t\t\tparams = [\n\t\t\t\t`${round$1(l * 100, precision)}%`,\n\t\t\t\ta,\n\t\t\t\tb\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"oklch\": {\n\t\t\tseparator = \" \";\n\t\t\tconst { l, c, h } = restrictValues(getColorValue(input, \"oklch\"), precision);\n\t\t\tparams = [\n\t\t\t\t`${round$1(l * 100, precision)}%`,\n\t\t\t\tc,\n\t\t\t\th\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"rgb\": {\n\t\t\tconst { r, g, b } = getColorValue(input, \"rgb\");\n\t\t\tparams = [\n\t\t\t\tr,\n\t\t\t\tg,\n\t\t\t\tb\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tdefault: {\n\t\t\tconst hex = removeAlphaFromHex(getColorValue(input, \"hex\"));\n\t\t\tif (alpha && alpha !== 1) return `${hex}${convertAlphaToHex(alpha)}`;\n\t\t\treturn hex;\n\t\t}\n\t}\n\treturn `${format}(${params.join(separator)}${opacity2 ? ` / ${opacity2}` : \"\"})`;\n}\nfunction updater(key, operator, format) {\n\treturn (input, amount) => {\n\t\tinvariant(isString(input), MESSAGES.inputString);\n\t\tinvariant(isNumberInRange(amount, 0, 100), MESSAGES.amount);\n\t\tconst color = parseCSS(input, \"hsl\");\n\t\tconst output = isHex(input) || isNamedColor(input) ? \"hex\" : extractColorParts(input).model;\n\t\treturn formatCSS({\n\t\t\t...color,\n\t\t\t[key]: clamp$1(color[key] + (operator === \"+\" ? amount : -amount), 0, 100)\n\t\t}, { format: format ?? output });\n\t};\n}\nfunction darken(input, amount, format) {\n\treturn updater(\"l\", \"-\", format)(input, amount);\n}\nfunction desaturate(input, amount, format) {\n\treturn updater(\"s\", \"-\", format)(input, amount);\n}\nfunction grayscale(input, format) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tconst output = isHex(input) || isNamedColor(input) ? \"hex\" : extractColorParts(input).model;\n\tconst lch = parseCSS(input, \"oklch\");\n\treturn formatCSS({\n\t\t...lch,\n\t\tc: 0\n\t}, {\n\t\tformat: format ?? output,\n\t\talpha: lch.alpha\n\t});\n}\nfunction rotate(input, degrees, format) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tinvariant(isNumberInRange(degrees, -360, 360), MESSAGES.degreesRange);\n\tconst color = parseCSS(input, \"hsl\");\n\tconst output = isHex(input) || isNamedColor(input) ? \"hex\" : extractColorParts(input).model;\n\treturn formatCSS({\n\t\t...color,\n\t\th: constrainDegrees(color.h, degrees)\n\t}, { format: format ?? output });\n}\nfunction invert(input) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tconst format = isHex(input) || isNamedColor(input) ? \"hex\" : extractColorParts(input).model;\n\treturn formatCSS(rotate(parseCSS(input, \"hex\"), 180), { format });\n}\nfunction lighten(input, amount, format) {\n\treturn updater(\"l\", \"+\", format)(input, amount);\n}\nfunction interpolateHue(h1, h2, c1, c2, ratio) {\n\tif (c1 < 1e-4) return h2;\n\tif (c2 < 1e-4) return h1;\n\tlet diff = h2 - h1;\n\tif (diff > 180) diff -= 360;\n\telse if (diff < -180) diff += 360;\n\tlet result = h1 + diff * ratio;\n\tif (result < 0) result += 360;\n\telse if (result >= 360) result -= 360;\n\treturn result;\n}\nfunction mix(color1, color2, ratio = .5, format) {\n\tinvariant(isString(color1), MESSAGES.inputString);\n\tinvariant(isString(color2), MESSAGES.inputString);\n\tinvariant(isNumberInRange(ratio, 0, 1), MESSAGES.ratioRange);\n\tconst output = isHex(color1) || isNamedColor(color1) ? \"hex\" : extractColorParts(color1).model;\n\tconst lch1 = parseCSS(color1, \"oklch\");\n\tconst lch2 = parseCSS(color2, \"oklch\");\n\tconst l = lch1.l + (lch2.l - lch1.l) * ratio;\n\tconst c = lch1.c + (lch2.c - lch1.c) * ratio;\n\tconst h = interpolateHue(lch1.h, lch2.h, lch1.c, lch2.c, ratio);\n\tconst alpha1 = lch1.alpha ?? 1;\n\tconst alpha = alpha1 + ((lch2.alpha ?? 1) - alpha1) * ratio;\n\treturn formatCSS({\n\t\tl,\n\t\tc,\n\t\th\n\t}, {\n\t\tformat: format ?? output,\n\t\talpha: alpha < 1 ? alpha : void 0\n\t});\n}\nfunction parseColor(color) {\n\tinvariant(!!color, MESSAGES.input);\n\tconst output = {};\n\tif (isString(color)) {\n\t\tconst { alpha = 1 } = extractColorParts(color);\n\t\tconst type = isHex(color) ? \"hex\" : extractColorParts(color).model;\n\t\toutput.hex = addAlphaToHex(parseCSS(color, \"hex\"), alpha);\n\t\toutput.hsl = addAlpha(parseCSS(color, \"hsl\"), alpha);\n\t\toutput.oklab = addAlpha(parseCSS(color, \"oklab\"), alpha);\n\t\toutput.oklch = addAlpha(parseCSS(color, \"oklch\"), alpha);\n\t\toutput.rgb = addAlpha(parseCSS(color, \"rgb\"), alpha);\n\t\toutput.alpha = alpha;\n\t\toutput.type = type;\n\t} else if (isPlainObject(color)) {\n\t\tconst { alpha = 1 } = color;\n\t\tif (isHSL(color)) {\n\t\t\toutput.hsl = {\n\t\t\t\th: limit(color.h, \"hsl\", \"h\"),\n\t\t\t\ts: limit(color.s, \"hsl\", \"s\"),\n\t\t\t\tl: limit(color.l, \"hsl\", \"l\")\n\t\t\t};\n\t\t\toutput.rgb = hsl2rgb(output.hsl);\n\t\t\toutput.oklab = hsl2oklab(output.hsl);\n\t\t\toutput.oklch = hsl2oklch(output.hsl);\n\t\t\toutput.type = \"hsl\";\n\t\t} else if (isLAB(color)) {\n\t\t\toutput.hsl = oklab2hsl(color);\n\t\t\toutput.oklab = color;\n\t\t\toutput.oklch = oklab2oklch(color);\n\t\t\toutput.rgb = oklab2rgb(color);\n\t\t\toutput.type = \"oklab\";\n\t\t} else if (isLCH(color)) {\n\t\t\toutput.hsl = oklch2hsl(color);\n\t\t\toutput.oklab = oklch2oklab(color);\n\t\t\toutput.oklch = color;\n\t\t\toutput.rgb = oklch2rgb(color);\n\t\t\toutput.type = \"oklch\";\n\t\t} else if (isRGB(color)) {\n\t\t\toutput.rgb = {\n\t\t\t\tr: limit(color.r, \"rgb\", \"r\"),\n\t\t\t\tg: limit(color.g, \"rgb\", \"g\"),\n\t\t\t\tb: limit(color.b, \"rgb\", \"b\")\n\t\t\t};\n\t\t\toutput.hsl = rgb2hsl(output.rgb);\n\t\t\toutput.oklab = rgb2oklab(output.rgb);\n\t\t\toutput.oklch = rgb2oklch(output.rgb);\n\t\t\toutput.type = \"rgb\";\n\t\t} else throw new Error(\"invalid color\");\n\t\toutput.hex = addAlphaToHex(hsl2hex(output.hsl), alpha);\n\t\toutput.hsl = addAlpha(output.hsl, alpha);\n\t\toutput.oklab = addAlpha(output.oklab, alpha);\n\t\toutput.oklch = addAlpha(output.oklch, alpha);\n\t\toutput.rgb = addAlpha(output.rgb, alpha);\n\t\toutput.alpha = alpha;\n\t} else throw new Error(MESSAGES.input);\n\treturn output;\n}\nfunction opacify(input, alpha, format) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tinvariant(isNumberInRange(alpha, 0, 1), MESSAGES.alpha);\n\tconst type = isHex(input) || isNamedColor(input) ? \"hex\" : extractColorParts(input).model;\n\treturn formatCSS(parseCSS(input, \"rgb\"), {\n\t\tformat: format ?? type,\n\t\talpha\n\t});\n}\nfunction opacity(input) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tif (isHex(input)) return extractAlphaFromHex(input);\n\telse if (Object.keys(cssColors).includes(input)) return 1;\n\tconst { alpha } = extractColorParts(input);\n\tif (!alpha) return 1;\n\treturn alpha;\n}\nfunction pickByContrast(darkContrast, lightContrast, darkColor, lightColor) {\n\treturn darkContrast >= lightContrast ? darkColor : lightColor;\n}\nfunction readableColor(backgroundColor, options = {}) {\n\tconst { darkColor = \"#000000\", lightColor = \"#ffffff\", method = \"yiq\", threshold } = options;\n\tinvariant(isString(backgroundColor), MESSAGES.inputString);\n\tswitch (method) {\n\t\tcase \"yiq\": {\n\t\t\tconst yiqThreshold = threshold ?? 128;\n\t\t\tinvariant(yiqThreshold >= 0 && yiqThreshold <= 255, MESSAGES.threshold);\n\t\t\tconst { r, g, b } = hex2rgb(parseCSS(backgroundColor, \"hex\"));\n\t\t\treturn (r * 299 + g * 587 + b * 114) / 1e3 >= yiqThreshold ? darkColor : lightColor;\n\t\t}\n\t\tcase \"wcag\": {\n\t\t\tconst wcagThreshold = threshold ?? .5;\n\t\t\tinvariant(wcagThreshold >= 0 && wcagThreshold <= 1, MESSAGES.thresholdNormalized);\n\t\t\treturn luminance(backgroundColor) >= wcagThreshold ? darkColor : lightColor;\n\t\t}\n\t\tcase \"contrast\": return pickByContrast(contrast(darkColor, backgroundColor), contrast(lightColor, backgroundColor), darkColor, lightColor);\n\t\tcase \"oklab\": {\n\t\t\tconst oklabThreshold = threshold ?? .5;\n\t\t\tinvariant(oklabThreshold >= 0 && oklabThreshold <= 1, MESSAGES.thresholdNormalized);\n\t\t\tconst { l } = hex2oklab(parseCSS(backgroundColor, \"hex\"));\n\t\t\treturn l >= oklabThreshold ? darkColor : lightColor;\n\t\t}\n\t\tcase \"apca\": return pickByContrast(Math.abs(apcaContrast(backgroundColor, darkColor)), Math.abs(apcaContrast(backgroundColor, lightColor)), darkColor, lightColor);\n\t\tdefault: throw new Error(`Unknown method: ${method}`);\n\t}\n}\nfunction saturate(input, amount, format) {\n\treturn updater(\"s\", \"+\", format)(input, amount);\n}\nfunction transparentize(input, alpha, format) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tinvariant(isNumberInRange(alpha, -1, 1), MESSAGES.alphaAdjustment);\n\treturn formatCSS(parseCSS(input, \"oklab\"), {\n\t\tformat,\n\t\talpha: round$1(clamp$1(opacity(input) - alpha, 0, 1))\n\t});\n}\nvar Colorizr = class {\n\tconstructor(color, options = {}) {\n\t\t/** The alpha/opacity value (0-1). */\n\t\t__publicField(this, \"alpha\");\n\t\t__publicField(this, \"hex\");\n\t\t__publicField(this, \"hsl\");\n\t\t__publicField(this, \"oklab\");\n\t\t__publicField(this, \"oklch\");\n\t\t__publicField(this, \"rgb\");\n\t\t__publicField(this, \"type\");\n\t\tinvariant(!!color, MESSAGES.colorRequired);\n\t\tconst { alpha, hex, hsl, oklab, oklch, rgb, type } = parseColor(color);\n\t\tthis.hex = hex;\n\t\tthis.hsl = hsl;\n\t\tthis.oklab = oklab;\n\t\tthis.oklch = oklch;\n\t\tthis.rgb = rgb;\n\t\tthis.alpha = alpha;\n\t\tthis.type = options.format ?? type;\n\t}\n\t/**\n\t* Get CSS string\n\t*/\n\tget css() {\n\t\treturn this.currentColor;\n\t}\n\t/**\n\t* Get the red value\n\t*/\n\tget red() {\n\t\treturn this.rgb.r;\n\t}\n\t/**\n\t* Get the green value\n\t*/\n\tget green() {\n\t\treturn this.rgb.g;\n\t}\n\t/**\n\t* Get the blue value\n\t*/\n\tget blue() {\n\t\treturn this.rgb.b;\n\t}\n\t/**\n\t* Get the hue value\n\t*/\n\tget hue() {\n\t\treturn this.hsl.h;\n\t}\n\t/**\n\t* Get the saturation value\n\t*/\n\tget saturation() {\n\t\treturn this.hsl.s;\n\t}\n\t/**\n\t* Get the lightness value\n\t*/\n\tget lightness() {\n\t\treturn this.hsl.l;\n\t}\n\t/**\n\t* Get the luminance value\n\t*/\n\tget luminance() {\n\t\treturn luminance(this.currentColor);\n\t}\n\t/**\n\t* Get the chroma value\n\t*/\n\tget chroma() {\n\t\treturn chroma(this.currentColor);\n\t}\n\tget opacity() {\n\t\treturn opacity(this.currentColor);\n\t}\n\t/**\n\t* Get the most readable color (light or dark) for this color as a background.\n\t*/\n\tget readableColor() {\n\t\treturn readableColor(this.currentColor);\n\t}\n\tget currentColor() {\n\t\treturn formatCSS(this[this.type], {\n\t\t\tformat: this.type,\n\t\t\talpha: this.alpha\n\t\t});\n\t}\n\t/**\n\t* Get the brightness difference between this color and another.\n\t*\n\t* @param input - The color to compare against.\n\t* @returns The brightness difference value.\n\t*/\n\tbrightnessDifference(input) {\n\t\treturn brightnessDifference(this.currentColor, input);\n\t}\n\t/**\n\t* Get the color difference between this color and another.\n\t*\n\t* @param input - The color to compare against.\n\t* @returns The color difference value.\n\t*/\n\tcolorDifference(input) {\n\t\treturn colorDifference(this.currentColor, input);\n\t}\n\t/**\n\t* Test 2 colors for WCAG compliance.\n\t*\n\t* @param input - The color to compare against.\n\t* @returns Analysis object with compliance information.\n\t*/\n\tcompare(input) {\n\t\treturn compare(this.currentColor, input);\n\t}\n\t/**\n\t* Get the contrast ratio between this color and another.\n\t*\n\t* @param input - The color to compare against.\n\t* @returns The contrast ratio.\n\t*/\n\tcontrast(input) {\n\t\treturn contrast(this.currentColor, input);\n\t}\n\t/**\n\t* Format the color to a specific type.\n\t*\n\t* @param type - The color format to convert to.\n\t* @param precision - The decimal precision for the output.\n\t* @returns The formatted color string.\n\t*/\n\tformat(type, precision) {\n\t\treturn formatCSS(this.rgb, {\n\t\t\talpha: this.alpha,\n\t\t\tformat: type,\n\t\t\tprecision\n\t\t});\n\t}\n\t/**\n\t* Increase lightness.\n\t*\n\t* @param amount - A number between 0 and 100.\n\t* @returns The lightened color string.\n\t*/\n\tlighten(amount) {\n\t\treturn lighten(this.currentColor, amount);\n\t}\n\t/**\n\t* Decrease lightness.\n\t*\n\t* @param amount - A number between 0 and 100.\n\t* @returns The darkened color string.\n\t*/\n\tdarken(amount) {\n\t\treturn darken(this.currentColor, amount);\n\t}\n\t/**\n\t* Increase saturation.\n\t*\n\t* @param amount - A number between 0 and 100.\n\t* @returns The saturated color string.\n\t*/\n\tsaturate(amount) {\n\t\treturn saturate(this.currentColor, amount);\n\t}\n\t/**\n\t* Decrease saturation.\n\t*\n\t* @param amount - A number between 0 and 100.\n\t* @returns The desaturated color string.\n\t*/\n\tdesaturate(amount) {\n\t\treturn desaturate(this.currentColor, amount);\n\t}\n\t/**\n\t* Convert to grayscale.\n\t*\n\t* @returns The grayscale color string.\n\t*/\n\tgrayscale() {\n\t\treturn grayscale(this.currentColor);\n\t}\n\t/**\n\t* Invert color.\n\t*\n\t* @returns The inverted color string.\n\t*/\n\tinvert() {\n\t\treturn invert(this.currentColor);\n\t}\n\t/**\n\t* Mix with another color.\n\t*\n\t* @param color - The color to mix with.\n\t* @param ratio - A number between 0 and 1 (0 = this color, 1 = input color).\n\t* @returns The mixed color string.\n\t*/\n\tmix(color, ratio) {\n\t\treturn mix(this.currentColor, color, ratio);\n\t}\n\t/**\n\t* Add opacity to the color.\n\t*\n\t* @param alpha - A number between 0 and 1.\n\t* @returns The opacified color string.\n\t*/\n\topacify(alpha = .9) {\n\t\treturn opacify(this.currentColor, alpha, this.type);\n\t}\n\t/**\n\t* Rotate color hue.\n\t*\n\t* @param degrees - A number between -360 and 360.\n\t* @returns The rotated color string.\n\t*/\n\trotate(degrees) {\n\t\treturn rotate(this.currentColor, degrees);\n\t}\n\t/**\n\t* Make the color more transparent.\n\t*\n\t* @param alpha - A number between -1 and 1.\n\t* @returns The transparentized color string.\n\t*/\n\ttransparentize(alpha = .1) {\n\t\treturn transparentize(this.currentColor, alpha, this.type);\n\t}\n};\nfunction convert$1(input, format) {\n\treturn formatCSS(parseCSS(input, format), { format });\n}\n/* v8 ignore next 3 -- @preserve */\n//#endregion\n//#region src/colour/guards.ts\nfunction isHsl(v) {\n\tif (typeof v !== `object`) return false;\n\tif (!(`h` in v)) return false;\n\tif (!(`s` in v)) return false;\n\tif (!(`l` in v)) return false;\n\tif (!(`unit` in v)) return false;\n\tif (!(`space` in v)) return false;\n\tif (v.space !== `hsl`) return false;\n\treturn true;\n}\nfunction isRgb(v) {\n\tif (typeof v !== `object`) return false;\n\tif (!(`r` in v)) return false;\n\tif (!(`g` in v)) return false;\n\tif (!(`b` in v)) return false;\n\tif (!(`space` in v)) return false;\n\tif (!(`unit` in v)) return false;\n\tif (v.space === `srgb`) return true;\n\treturn false;\n}\n/**\n* If the input object has r,g&b properties, it will return a fully-\n* formed Rgb type with `unit` and `space` properties.\n*\n* If it lacks these basic three properties or they are out of range,\n* _undefined_ is returned.\n*\n* If RGB values are less than 1 assumes unit:scalar. Otherwise unit:8bit.\n* If RGB values exceed 255, _undefined_ returned.\n* @param v\n* @returns\n*/\nfunction tryParseObjectToRgb(v) {\n\tif (typeof v !== `object`) throw new TypeError(`Param 'v' is expected to be an object, got: ${typeof v}`);\n\tif (!(`r` in v && `g` in v && `b` in v)) return;\n\tif (!(`unit` in v)) if (v.r <= 1 && v.g <= 1 && v.b <= 1) v.unit = `scalar`;\n\telse if (v.r > 255 && v.g <= 255 && v.b <= 255) return;\n\telse v.unit = `8bit`;\n\tif (!(`space` in v)) v.space = `srgb`;\n\treturn v;\n}\nfunction tryParseObjectToHsl(v) {\n\tif (!(`h` in v && `s` in v && `l` in v)) return;\n\tif (!(`unit` in v)) if (v.s <= 1 && v.l <= 1) v.unit = `scalar`;\n\telse if (v.s > 100 || v.l > 100) return;\n\telse v.unit = `absolute`;\n\tif (!(`space` in v)) v.space = `hsl`;\n\treturn v;\n}\nfunction isOkLch(v) {\n\tif (typeof v !== `object`) return false;\n\tif (!(`l` in v)) return false;\n\tif (!(`c` in v)) return false;\n\tif (!(`h` in v)) return false;\n\tif (!(`unit` in v)) return false;\n\tif (!(`space` in v)) return false;\n\tif (v.space === `lch`) return true;\n\tif (v.space === `oklch`) return true;\n\treturn false;\n}\nfunction isColourish(v) {\n\tif (typeof v === `string`) return true;\n\tif (typeof v !== `object`) return false;\n\tif (isHsl(v)) return true;\n\tif (isOkLch(v)) return true;\n\tif (isRgb(v)) return true;\n\treturn false;\n}\n//#endregion\n//#region src/colour/utility.ts\nfunction calculateHueDistance(a, b, limit = 1) {\n\tlet long = -1;\n\tlet short = -1;\n\tif (b < a) {\n\t\tlong = b - a;\n\t\tshort = limit - (a - b);\n\t} else {\n\t\tlong = b - a;\n\t\tshort = long - limit;\n\t}\n\tconst forward = short > 0 ? short : long;\n\tconst backward = short > 0 ? long : short;\n\tif (Math.abs(long) < Math.abs(short)) {\n\t\tconst t = short;\n\t\tshort = long;\n\t\tlong = t;\n\t}\n\treturn {\n\t\tlong,\n\t\tshort,\n\t\tforward,\n\t\tbackward\n\t};\n}\nfunction libraryRgbToHexString(rgb) {\n\tconst componentToHex = (c) => {\n\t\tconst hex = Math.floor(c).toString(16);\n\t\treturn hex.length === 1 ? `0${hex}` : hex;\n\t};\n\tlet part = `#${componentToHex(rgb.r)}${componentToHex(rgb.g)}${componentToHex(rgb.b)}`;\n\tif (typeof rgb.alpha !== `undefined` && rgb.alpha !== 255) part += componentToHex(rgb.alpha);\n\treturn part;\n}\nfunction wrapScalarHue(value) {\n\tvalue = value % 1;\n\tif (value < 0) return (1 - Math.abs(value)) % 1;\n\treturn value;\n}\n//#endregion\n//#region src/colour/hsl.ts\nvar hsl_exports = /* @__PURE__ */ __exportAll({\n\tabsolute: () => absolute$1,\n\tchangeLightness: () => changeLightness$1,\n\tfromCss: () => fromCss$3,\n\tfromHexString: () => fromHexString$3,\n\tgenerateScalar: () => generateScalar$1,\n\tguard: () => guard$4,\n\tinterpolator: () => interpolator$3,\n\tparseCssHslFunction: () => parseCssHslFunction,\n\tscalar: () => scalar$3,\n\ttoAbsolute: () => toAbsolute$1,\n\ttoCssString: () => toCssString$2,\n\ttoHexString: () => toHexString$3,\n\ttoLibraryRgb: () => toLibraryRgb,\n\ttoScalar: () => toScalar$3,\n\twithOpacity: () => withOpacity$3\n});\n/**\n* Scales the opacity value of an input HSL value\n* ```js\n* withOpacity()\n* ```\n* @param value Colour\n* @param fn Function that calcules opacity based on input scalar value\n*/\nfunction withOpacity$3(value, fn) {\n\tswitch (value.unit) {\n\t\tcase `absolute`: return {\n\t\t\t...value,\n\t\t\topacity: fn((value.opacity ?? 100) / 100, value) * 100\n\t\t};\n\t\tcase `scalar`: return {\n\t\t\t...value,\n\t\t\topacity: fn(value.opacity ?? 1, value)\n\t\t};\n\t}\n}\n/**\n* Increases or decreases lightness by this percentage, returning new colour\n*\n* Amount to change:\n* 'fixed': a fixed amount\n* 'delta': increase/decrease by this amount\n* 'pdelta': proportion of current value to change by ('percentage delta')\n*\n* ```\n* const colour = { h: 0.5, s: 0.5, l: 0.5, space: `hsl`, unit: `scalar` };\n* changeLightness(colour, { pdelta: 0.1 }); // l: 0.55\n* changeLightness(colour, { delta: 0.1 }); // l: 0.6\n* changeLightness(colour, { fixed: 0.5 }); // l: 0.5\n* ```\n*\n* Keep in mind the numerical value will depend on the unit of `value`. If it's scalar,\n* lightness is 0..1 scale, otherwise 0..100 scale.\n*\n* Use negative values to decrease (does not apply to 'fixed')\n* @param value Hsl colour\n* @param amount Amount to change\n*/\nfunction changeLightness$1(value, amount) {\n\tlet newL = 0;\n\tif (typeof amount.pdelta !== `undefined`) newL = value.l + value.l * amount.pdelta;\n\telse if (typeof amount.delta !== `undefined`) newL = amount.delta + value.l;\n\telse if (typeof amount.fixed !== `undefined`) {\n\t\tif (amount.fixed < 0) throw new TypeError(`Cannot use negative value with 'fixed'`);\n\t\tnewL = amount.fixed;\n\t} else throw new TypeError(`Parameter 'amount' is missing 'delta/pdelta/fixed' properties`);\n\treturn {\n\t\t...value,\n\t\tl: scaleProperty(value, newL, `l`)\n\t};\n}\nfunction scaleProperty(hsl, value, property) {\n\tif (hsl.unit === `scalar`) {\n\t\tif (value > 1) value = 1;\n\t\telse if (value < 0) value = 0;\n\t} else if (value > 100) value = 100;\n\telse if (value < 0) value = 0;\n\treturn value;\n}\nconst hslTransparent = Object.freeze({\n\th: 0,\n\ts: 0,\n\tl: 0,\n\topacity: 0,\n\tunit: `absolute`,\n\tspace: `hsl`\n});\nfunction fromHexString$3(hexString, options = {}) {\n\treturn fromLibrary$2(hex2hsl(hexString), options);\n}\nfunction fromCss$3(value, options = {}) {\n\tvalue = value.toLowerCase();\n\tif (value.startsWith(`hsla(`)) throw new Error(`hsla() not supported`);\n\tif (value.startsWith(`rgba(`)) throw new Error(`rgba() not supported`);\n\tif (value.startsWith(`#`)) return fromHexString$3(value, options);\n\tif (value.startsWith(`--`)) try {\n\t\tvalue = resolveCss(value);\n\t} catch (error) {\n\t\tif (typeof options.fallbackString !== `undefined`) value = options.fallbackString;\n\t\tif (typeof options.fallbackColour !== `undefined`) return options.fallbackColour;\n\t\tthrow error;\n\t}\n\tif (value === `transparent`) return hslTransparent;\n\tif (typeof cssDefinedHexColours[value] !== `undefined`) return fromHexString$3(cssDefinedHexColours[value], options);\n\tif (value.startsWith(`rgb(`)) return fromLibrary$2(toLibraryHsl(value), options);\n\tif (!value.startsWith(`hsl(`)) try {\n\t\tvalue = convert$1(value, `hsl`);\n\t} catch (error) {\n\t\tif (options.fallbackString) value = options.fallbackString;\n\t\telse throw error;\n\t}\n\ttry {\n\t\tconst hsl = parseCssHslFunction(value);\n\t\tif (options.scalar) return toScalar$3(hsl);\n\t\treturn toAbsolute$1(hsl);\n\t} catch (error) {\n\t\tif (options.fallbackColour) return options.fallbackColour;\n\t\tthrow error;\n\t}\n}\nfunction toCssString$2(hsl) {\n\tconst abs = toAbsolute$1(hsl);\n\tlet css = `hsl(${abs.h}deg ${abs.s}% ${abs.l}%`;\n\tif (`opacity` in abs && abs.opacity !== void 0 && abs.opacity < 100) css += ` / ${abs.opacity}%`;\n\tcss += `)`;\n\treturn css;\n}\nfunction toHexString$3(hsl) {\n\treturn libraryRgbToHexString(toLibraryRgb(hsl));\n}\nfunction fromLibrary$2(hsl, parsingOptions = {}) {\n\tif (typeof hsl === `undefined` || hsl === null) {\n\t\tif (parsingOptions.fallbackColour) return parsingOptions.fallbackColour;\n\t}\n\tconst scalarOpt = parsingOptions.scalar ?? true;\n\tresultThrow(numberInclusiveRangeTest(hsl.h, 0, 360, `h`), numberInclusiveRangeTest(hsl.s, 0, 100, `s`), numberInclusiveRangeTest(hsl.l, 0, 100, `l`), percentTest(hsl.alpha ?? 1, `alpha`));\n\tif (scalarOpt) return scalar$3(hsl.h / 360, hsl.s / 100, hsl.l / 100, hsl.alpha ?? 1);\n\telse return absolute$1(hsl.h, hsl.s, hsl.l, (hsl.alpha ?? 1) * 100);\n}\nfunction toAbsolute$1(hslOrString) {\n\tif (typeof hslOrString === `string`) return fromCss$3(hslOrString, { scalar: false });\n\tif (isRgb(hslOrString)) return toAbsolute$1(fromLibrary$2(toLibraryHsl(hslOrString), { scalar: false }));\n\tconst hsl = hslOrString;\n\tguard$4(hsl);\n\tif (hsl.unit === `absolute`) return hsl;\n\treturn {\n\t\th: hsl.h * 360,\n\t\ts: hsl.s * 100,\n\t\tl: hsl.l * 100,\n\t\topacity: (hsl.opacity ?? 1) * 100,\n\t\tunit: `absolute`,\n\t\tspace: `hsl`\n\t};\n}\n/**\n* Generates a {@link HslScalar} value.\n*\n* ```js\n* generateScaler(10); // 10deg, default to full saturation, half lightness and full opacity\n*\n* // Generate HSL value from radian angle and 50% saturation\n* generateScalar(`10rad`, 0.5);\n*\n* // Generate from numeric CSS variable\n* generateScalar(`--hue`);\n* ```\n* @param absoluteHslOrVariable Hue angle or CSS variable\n* @param saturation\n* @param lightness\n* @param opacity\n*/\nfunction generateScalar$1(absoluteHslOrVariable, saturation = 1, lightness = .5, opacity = 1) {\n\tif (typeof absoluteHslOrVariable === `string`) {\n\t\tif (absoluteHslOrVariable.startsWith(`--`)) absoluteHslOrVariable = getComputedStyle(document.body).getPropertyValue(absoluteHslOrVariable).trim();\n\t}\n\tconst hue = angleParse(absoluteHslOrVariable);\n\tif (saturation > 1) throw new TypeError(`Param 'saturation' must be between 0..1`);\n\tif (lightness > 1) throw new TypeError(`Param 'lightness' must be between 0..1`);\n\tif (opacity > 1) throw new TypeError(`Param 'opacity' must be between 0..1`);\n\treturn {\n\t\th: angleConvert(hue, `deg`).value / 360,\n\t\ts: saturation,\n\t\tl: lightness,\n\t\topacity,\n\t\tunit: `scalar`,\n\t\tspace: `hsl`\n\t};\n}\n/**\n* Converts a {@link Hsl} value to scalar units, or parses a colour string\n* and converts it.\n*\n* ```js\n* toScalar({ h: 100, s: 50, l: 100, unit: `absolute` });\n* toScalar(`red`);\n* ```\n* @param colour\n*/\nfunction toScalar$3(colour) {\n\tif (typeof colour === `string`) return fromCss$3(colour, { scalar: true });\n\tif (isRgb(colour)) return toScalar$3(fromLibrary$2(toLibraryHsl(colour), { scalar: true }));\n\tconst hsl = colour;\n\tguard$4(hsl);\n\tif (hsl.unit === `scalar`) return hsl;\n\treturn {\n\t\th: hsl.h / 360,\n\t\ts: hsl.s / 100,\n\t\tl: hsl.l / 100,\n\t\topacity: (hsl.opacity ?? 1) / 100,\n\t\tunit: `scalar`,\n\t\tspace: `hsl`\n\t};\n}\nfunction guard$4(hsl) {\n\tconst { h, s, l, opacity, space, unit } = hsl;\n\tif (space !== `hsl`) throw new Error(`Space is expected to be 'hsl'. Got: ${space}`);\n\tif (unit === `absolute`) resultThrow(numberTest(h, `finite`, `h`), numberInclusiveRangeTest(s, 0, 100, `s`), numberInclusiveRangeTest(l, 0, 100, `l`), () => {\n\t\tif (typeof opacity === `number`) return numberInclusiveRangeTest(opacity, 0, 100, `opacity`);\n\t});\n\telse if (unit === `scalar`) resultThrow(numberTest(h, `percentage`, `h`), numberTest(s, `percentage`, `s`), numberTest(l, `percentage`, `l`), () => {\n\t\tif (typeof opacity === `number`) return numberTest(opacity, `percentage`, `opacity`);\n\t});\n\telse throw new Error(`Unit is expected to be 'absolute' or 'scalar'. Got: ${unit}`);\n}\nfunction interpolator$3(a, b, direction = `shorter`) {\n\ta = toScalar$3(a);\n\tb = toScalar$3(b);\n\tconst aOpacity = a.opacity ?? 1;\n\tconst distanceCalc = calculateHueDistance(a.h, b.h, 1);\n\tconst hueDistance = direction === `longer` ? distanceCalc.long : distanceCalc.short;\n\tconst satDistance = b.s - a.s;\n\tconst lightDistance = b.l - a.l;\n\tconst opacityDistance = (b.opacity ?? 1) - aOpacity;\n\treturn (amount) => {\n\t\tamount = clamp(amount);\n\t\tlet h = interpolate(amount, 0, Math.abs(hueDistance));\n\t\tif (hueDistance < 0) h = a.h - h;\n\t\telse h = a.h + h;\n\t\tconst s = interpolate(amount, 0, satDistance);\n\t\tconst l = interpolate(amount, 0, lightDistance);\n\t\tconst o = interpolate(amount, 0, opacityDistance);\n\t\treturn scalar$3(wrapScalarHue(h), s + a.s, l + a.l, o + aOpacity);\n\t};\n}\n/**\n* Creates a HslScalar value from scalar (0..1) values\n* @param hue\n* @param sat\n* @param lightness\n* @param opacity\n*/\nfunction scalar$3(hue = .5, sat = 1, lightness = .5, opacity = 1) {\n\tconst hsl = {\n\t\tunit: `scalar`,\n\t\tspace: `hsl`,\n\t\th: hue,\n\t\ts: sat,\n\t\tl: lightness,\n\t\topacity\n\t};\n\tguard$4(hsl);\n\treturn hsl;\n}\nfunction absolute$1(hue = 200, sat = 100, lightness = 50, opacity = 100) {\n\tconst hsl = {\n\t\tunit: `absolute`,\n\t\tspace: `hsl`,\n\t\th: hue,\n\t\ts: sat,\n\t\tl: lightness,\n\t\topacity\n\t};\n\tguard$4(hsl);\n\treturn hsl;\n}\n/**\n* It seems Colorizr can't handle 'deg' units\n* @param value\n*/\nfunction parseCssHslFunction(value) {\n\tif (value.startsWith(`hsla`)) throw new Error(`hsla() is not supported`);\n\tif (!value.startsWith(`hsl(`)) throw new Error(`Expected hsl(..) CSS colour`);\n\tconst start = value.indexOf(`(`);\n\tconst end = value.indexOf(`)`);\n\tif (end < start) throw new Error(`Is hsl() not terminated? Missing ')'`);\n\tlet split = value.substring(start + 1, end).split(/[\\s,]+/);\n\tif (split.length < 3) throw new Error(`Expected three tokens. Got: ${split.length} length`);\n\tlet returnRelative = false;\n\tif (split[0].endsWith(`%`)) returnRelative = true;\n\tif (split[1].endsWith(`%`) && split[2].endsWith(`%`)) returnRelative = true;\n\tconst valueAsScalar = (v, pos) => {\n\t\tif (v === `none`) return 0;\n\t\tif (v.endsWith(`%`)) return Number.parseFloat(v.substring(0, v.length - 1)) / 100;\n\t\tif (v.endsWith(`deg`) && pos === 0) v = v.substring(0, v.length - 3);\n\t\tconst vf = Number.parseFloat(v);\n\t\tif (pos === 0) return vf / 360;\n\t\tif (pos === 3) return vf;\n\t\treturn vf / 100;\n\t};\n\tconst valueAsAbs = (v, pos) => {\n\t\tif (v === `none`) return 0;\n\t\tif (v.endsWith(`%`)) {\n\t\t\tconst vf = Number.parseFloat(v.substring(0, v.length - 1));\n\t\t\tif (pos === 0) return vf * 360;\n\t\t\treturn vf;\n\t\t}\n\t\tif (v.endsWith(`deg`) && pos === 0) return Number.parseFloat(v.substring(0, v.length - 3));\n\t\treturn Number.parseFloat(v);\n\t};\n\tif (split.length > 3) {\n\t\tif (split[3] === `/`) split = [\n\t\t\tsplit[0],\n\t\t\tsplit[1],\n\t\t\tsplit[2],\n\t\t\tsplit[4]\n\t\t];\n\t}\n\tif (returnRelative) return scalar$3(valueAsScalar(split[0], 0), valueAsScalar(split[1], 1), valueAsScalar(split[2], 2), valueAsScalar(split[3] ?? `100%`, 3));\n\telse return absolute$1(valueAsAbs(split[0], 0), valueAsAbs(split[1], 1), valueAsAbs(split[2], 2), valueAsAbs(split[3] ?? `100%`, 3));\n}\n/**\n* Converts a Hsl structure (or CSS string) to Colorizr's RGB format\n* @param hsl HSL colour\n*/\nfunction toLibraryRgb(hsl) {\n\tif (typeof hsl === `string`) return toLibraryRgb(fromCss$3(hsl, { scalar: false }));\n\thsl = toAbsolute$1(hsl);\n\treturn {\n\t\t...hsl2rgb({\n\t\t\th: hsl.h,\n\t\t\ts: hsl.s,\n\t\t\tl: hsl.l\n\t\t}),\n\t\talpha: (hsl.opacity ?? 100) / 100 * 255\n\t};\n}\n//#endregion\n//#region src/colour/srgb.ts\nvar srgb_exports = /* @__PURE__ */ __exportAll({\n\tchangeLightness: () => changeLightness,\n\teightBit: () => eightBit$1,\n\tfromCss: () => fromCss$2,\n\tfromHexString: () => fromHexString$2,\n\tguard: () => guard$3,\n\tinterpolator: () => interpolator$2,\n\tlightness: () => lightness,\n\tparseCssRgbFunction: () => parseCssRgbFunction,\n\tscalar: () => scalar$2,\n\tto8bit: () => to8bit$1,\n\ttoCssString: () => toCssString$1,\n\ttoHexString: () => toHexString$2,\n\ttoLibraryHsl: () => toLibraryHsl,\n\ttoScalar: () => toScalar$2,\n\twithOpacity: () => withOpacity$2\n});\nfunction withOpacity$2(value, fn) {\n\tswitch (value.unit) {\n\t\tcase `8bit`: return {\n\t\t\t...value,\n\t\t\topacity: fn((value.opacity ?? 255) / 255, value) * 255\n\t\t};\n\t\tcase `scalar`: return {\n\t\t\t...value,\n\t\t\topacity: fn(value.opacity ?? 1, value)\n\t\t};\n\t}\n}\nfunction fromHexString$2(hexString, scalar = true) {\n\treturn fromLibrary$1(hex2rgb(hexString), { scalar });\n}\nconst srgbTansparent = Object.freeze({\n\tr: 0,\n\tg: 0,\n\tb: 0,\n\topacity: 0,\n\tunit: `8bit`,\n\tspace: `srgb`\n});\n/**\n* Converts a colour in a legal CSS form into Rgb value, by default RgbScalar (0..1) scale.\n* ```js\n* fromCss(`rebeccapurple`);\n* fromCss(`rgb(40% 20% 60%)`);\n*\n* // Get 8bit version on 0..255 scale\n* fromCss(`blue`, { scalar: false });\n* ```\n*\n* @param value\n* @param options\n*/\nfunction fromCss$2(value, options = {}) {\n\tvalue = value.toLowerCase();\n\tif (value.startsWith(`hsla(`)) throw new Error(`hsla() not supported`);\n\tif (value.startsWith(`rgba(`)) throw new Error(`rgba() not supported`);\n\tconst scalar = options.scalar ?? true;\n\tif (value.startsWith(`#`)) return fromHexString$2(value, scalar);\n\tif (value === `transparent`) return srgbTansparent;\n\tif (typeof cssDefinedHexColours[value] !== `undefined`) return fromHexString$2(cssDefinedHexColours[value], scalar);\n\tif (value.startsWith(`hsl(`)) return fromLibrary$1(toLibraryRgb(value), options);\n\tif (!value.startsWith(`rgb(`)) try {\n\t\tvalue = convert$1(value, `rgb`);\n\t} catch (error) {\n\t\tif (options.fallbackString) value = options.fallbackString;\n\t\telse throw error;\n\t}\n\ttry {\n\t\tconst rgb = parseCssRgbFunction(value);\n\t\tif (scalar) return toScalar$2(rgb);\n\t\treturn to8bit$1(rgb);\n\t} catch (error) {\n\t\tif (options.fallbackColour) return options.fallbackColour;\n\t\tthrow error;\n\t}\n}\nfunction toHexString$2(rgb) {\n\treturn libraryRgbToHexString(toLibrary$1(rgb));\n}\nfunction toCssString$1(rgb) {\n\tguard$3(rgb);\n\tswitch (rgb.unit) {\n\t\tcase `8bit`:\n\t\t\tif (rgb.opacity === void 0 || rgb.opacity === 255) return `rgb(${rgb.r} ${rgb.g} ${rgb.b})`;\n\t\t\treturn `rgb(${rgb.r} ${rgb.g} ${rgb.b} / ${(rgb.opacity ?? 255) / 255})`;\n\t\tcase `scalar`:\n\t\t\tif (rgb.opacity === void 0 || rgb.opacity === 1) return `rgb(${rgb.r * 100}% ${rgb.g * 100}% ${rgb.b * 100}%)`;\n\t\t\treturn `rgb(${rgb.r * 100}% ${rgb.g * 100}% ${rgb.b * 100}% / ${(rgb.opacity ?? 1) * 100}%)`;\n\t\tdefault: throw new Error(`Unknown unit: ${rgb.unit}`);\n\t}\n}\nfunction toLibrary$1(rgb) {\n\tconst abs = to8bit$1(rgb);\n\treturn {\n\t\tr: abs.r,\n\t\tg: abs.g,\n\t\tb: abs.b,\n\t\talpha: abs.opacity\n\t};\n}\nfunction fromLibrary$1(rgb, parsingOptions = {}) {\n\tif (parsingOptions.scalar) return {\n\t\tr: rgb.r / 255,\n\t\tg: rgb.g / 255,\n\t\tb: rgb.b / 255,\n\t\topacity: rgb.alpha ?? 1,\n\t\tunit: `scalar`,\n\t\tspace: `srgb`\n\t};\n\telse return {\n\t\tr: rgb.r,\n\t\tg: rgb.g,\n\t\tb: rgb.b,\n\t\topacity: rgb.alpha ?? 255,\n\t\tunit: `8bit`,\n\t\tspace: `srgb`\n\t};\n}\nfunction to8bit$1(rgbOrString) {\n\tif (typeof rgbOrString === `string`) return fromCss$2(rgbOrString, { scalar: false });\n\tif (isHsl(rgbOrString)) return to8bit$1(fromLibrary$1(toLibraryRgb(rgbOrString), { scalar: false }));\n\tguard$3(rgbOrString);\n\tif (rgbOrString.unit === `8bit`) return rgbOrString;\n\treturn {\n\t\tr: rgbOrString.r * 255,\n\t\tg: rgbOrString.g * 255,\n\t\tb: rgbOrString.b * 255,\n\t\topacity: (rgbOrString.opacity ?? 1) * 255,\n\t\tunit: `8bit`,\n\t\tspace: `srgb`\n\t};\n}\nfunction toScalar$2(rgbOrString) {\n\tif (typeof rgbOrString === `string`) return fromCss$2(rgbOrString, { scalar: true });\n\tif (isHsl(rgbOrString)) return toScalar$2(fromLibrary$1(toLibraryRgb(rgbOrString), { scalar: true }));\n\tguard$3(rgbOrString);\n\tif (rgbOrString.unit === `scalar`) return rgbOrString;\n\treturn {\n\t\tr: rgbOrString.r / 255,\n\t\tg: rgbOrString.g / 255,\n\t\tb: rgbOrString.b / 255,\n\t\topacity: (rgbOrString.opacity ?? 1) / 255,\n\t\tunit: `scalar`,\n\t\tspace: `srgb`\n\t};\n}\nfunction guard$3(rgb) {\n\tconst { r, g, b, opacity, space, unit } = rgb;\n\tif (space !== `srgb`) throw new Error(`Space is expected to be 'srgb'. Got: ${space}`);\n\tif (unit === `8bit`) resultThrow(numberInclusiveRangeTest(r, 0, 255, `r`), numberInclusiveRangeTest(g, 0, 255, `g`), numberInclusiveRangeTest(b, 0, 255, `b`), () => {\n\t\tif (typeof opacity === `number`) return numberInclusiveRangeTest(opacity, 0, 255, `opacity`);\n\t});\n\telse if (unit === `scalar`) resultThrow(numberTest(r, `percentage`, `r`), numberTest(g, `percentage`, `g`), numberTest(b, `percentage`, `b`), () => {\n\t\tif (typeof opacity === `number`) return numberTest(opacity, `percentage`, `opacity`);\n\t});\n\telse throw new Error(`Unit is expected to be '8bit' or 'scalar'. Got: ${unit}`);\n}\n/**\n* Sets the lightness value.\n*\n* Amount to change:\n* 'fixed': a fixed amount\n* 'delta': increase/decrease by this amount\n* 'pdelta': proportion of current value to change by ('percentage delta')\n*\n* Use negative values to decrease\n* @param rgb Colour\n* @param amount Amount to change\n*/\nfunction changeLightness(rgb, amount) {\n\tlet newL = 0;\n\tconst co = new Colorizr(toCssString$1(rgb));\n\tconst scalarUnit = rgb.unit === `scalar`;\n\tif (typeof amount.pdelta !== `undefined`) newL = co.oklab.l + co.oklab.l * amount.pdelta;\n\telse if (typeof amount.delta !== `undefined`) newL = co.oklab.l + amount.delta;\n\telse if (typeof amount.fixed !== `undefined`) {\n\t\tif (amount.fixed < 0) throw new TypeError(`Amount cannot be negative when using 'fixed'`);\n\t\tnewL = amount.fixed;\n\t} else throw new TypeError(`Parameter 'amount' is missing 'pdelta/delta/fixed' properties`);\n\tif (newL < 0) newL = 0;\n\telse if (newL > 1) newL = 1;\n\treturn fromLibrary$1(oklab2rgb({\n\t\ta: co.oklab.a,\n\t\tb: co.oklab.b,\n\t\tl: newL,\n\t\talpha: co.oklab.alpha\n\t}), { scalar: scalarUnit });\n}\n/**\n* Returns a lightness value (0..1) for an RGB input\n*\n* Calculates lightness by converting to Oklab and using the 'L' value\n* @param rgb\n*/\nfunction lightness(rgb) {\n\treturn new Colorizr(toCssString$1(rgb)).oklab.l;\n}\n/**\n* Creates a Rgb8Bit value from 8bit (0..255) values\n* @param red\n* @param green\n* @param blue\n* @param opacity\n*/\nfunction eightBit$1(red = 100, green = 100, blue = 100, opacity = 255) {\n\tconst rgb = {\n\t\tunit: `8bit`,\n\t\tspace: `srgb`,\n\t\tr: red,\n\t\tg: green,\n\t\tb: blue,\n\t\topacity\n\t};\n\tguard$3(rgb);\n\treturn rgb;\n}\n/**\n* Creates a RgbScalar value from scalar (0..1) values\n* @param red\n* @param green\n* @param blue\n* @param opacity\n*/\nfunction scalar$2(red = .5, green = .5, blue = .5, opacity = 1) {\n\tconst rgb = {\n\t\tunit: `scalar`,\n\t\tspace: `srgb`,\n\t\tr: red,\n\t\tg: green,\n\t\tb: blue,\n\t\topacity\n\t};\n\tguard$3(rgb);\n\treturn rgb;\n}\n/**\n* It seems Colorizr can't handle % values properly :'(\n* @param value\n*/\nfunction parseCssRgbFunction(value) {\n\tif (value.startsWith(`rgba`)) throw new Error(`RGBA is not supported`);\n\tif (!value.startsWith(`rgb(`)) throw new Error(`Expected rgb(..) CSS colour`);\n\tconst start = value.indexOf(`(`);\n\tconst end = value.indexOf(`)`);\n\tif (end < start) throw new Error(`Is rgb() not terminated? Missing ')'`);\n\tlet split = value.substring(start + 1, end).split(/[\\s,]+/);\n\tif (split.length < 3) throw new Error(`Expected three tokens. Got: ${split.length} length`);\n\tlet relativeCount = 0;\n\tfor (const s of split) if (s.endsWith(`%`)) relativeCount++;\n\tconst valueAsScalar = (v, pos) => {\n\t\tif (v.endsWith(`%`)) return Number.parseFloat(v.substring(0, v.length - 1)) / 100;\n\t\tif (pos < 3) return Number.parseFloat(v) / 255;\n\t\telse return Number.parseFloat(v);\n\t};\n\tconst valueAs8bit = (v, pos) => {\n\t\tif (v.endsWith(`%`)) return Number.parseFloat(v.substring(0, v.length - 1)) / 100 * 255;\n\t\tif (pos < 3) return Number.parseFloat(v);\n\t\telse return Number.parseFloat(v) * 255;\n\t};\n\tif (split.length > 3) {\n\t\tif (split[3] === `/`) split = [\n\t\t\tsplit[0],\n\t\t\tsplit[1],\n\t\t\tsplit[2],\n\t\t\tsplit[4]\n\t\t];\n\t}\n\tif (relativeCount > 1) return scalar$2(valueAsScalar(split[0], 0), valueAsScalar(split[1], 1), valueAsScalar(split[2], 2), valueAsScalar(split[3] ?? `1`, 3));\n\telse return eightBit$1(valueAs8bit(split[0], 0), valueAs8bit(split[1], 1), valueAs8bit(split[2], 2), valueAs8bit(split[3] ?? `1`, 3));\n}\n/**\n* Interpolates colours in Srgb space. Probably\n* really ugly, use OkLch space isntead.\n*\n* ```js\n* const i = interpolator(`red`, `blue`);\n* i(0.5); // Get 50% between these colours\n* ```\n* @param colourA\n* @param colourB\n*/\nfunction interpolator$2(colourA, colourB) {\n\tconst aa = toScalar$2(colourA);\n\tconst bb = toScalar$2(colourB);\n\tconst aOpacity = aa.opacity ?? 1;\n\tconst opacityDistance = (bb.opacity ?? 1) - aOpacity;\n\tconst r = bb.r - aa.r;\n\tconst g = bb.g - aa.g;\n\tconst b = bb.b - aa.b;\n\treturn (amount) => {\n\t\tamount = clamp(amount);\n\t\treturn scalar$2(aa.r + interpolate(amount, 0, r), aa.g + interpolate(amount, 0, g), aa.b + interpolate(amount, 0, b), aOpacity + interpolate(amount, 0, opacityDistance));\n\t};\n}\n/**\n* Converts a Rgb structure (or CSS string) to Colorizr's HSL format\n* @param rgb\n*/\nfunction toLibraryHsl(rgb) {\n\tif (typeof rgb === `string`) return toLibraryHsl(fromCss$2(rgb, { scalar: false }));\n\trgb = to8bit$1(rgb);\n\treturn {\n\t\t...rgb2hsl({\n\t\t\tr: rgb.r,\n\t\t\tg: rgb.g,\n\t\t\tb: rgb.b\n\t\t}),\n\t\talpha: (rgb.opacity ?? 255) / 255\n\t};\n}\n//#endregion\n//#region src/colour/oklch.ts\nvar oklch_exports = /* @__PURE__ */ __exportAll({\n\tOKLCH_CHROMA_MAX: () => OKLCH_CHROMA_MAX,\n\tabsolute: () => absolute,\n\tfromCss: () => fromCss$1,\n\tfromHexString: () => fromHexString$1,\n\tfromLibrary: () => fromLibrary,\n\tgenerateScalar: () => generateScalar,\n\tguard: () => guard$2,\n\tinterpolator: () => interpolator$1,\n\tscalar: () => scalar$1,\n\ttoAbsolute: () => toAbsolute,\n\ttoCssString: () => toCssString,\n\ttoHexString: () => toHexString$1,\n\ttoScalar: () => toScalar$1,\n\twithOpacity: () => withOpacity$1\n});\nconst OKLCH_CHROMA_MAX = .4;\nfunction guard$2(lch) {\n\tconst { l, c, h, opacity, space, unit } = lch;\n\tif (space !== `oklch`) throw new Error(`Space is expected to be 'oklch'. Got: ${space}`);\n\tif (unit === `absolute`) resultThrow(percentTest(l, `l`), () => {\n\t\tif (typeof c === `number`) return numberInclusiveRangeTest(c, 0, OKLCH_CHROMA_MAX, `c`);\n\t}, () => {\n\t\tif (typeof h === `number`) return numberInclusiveRangeTest(h, 0, 360, `h`);\n\t}, percentTest(opacity ?? 1, `opacity`));\n\telse if (unit === `scalar`) resultThrow(percentTest(l, `l`), percentTest(c, `c`), percentTest(h, `h`), percentTest(lch.opacity ?? 1, `opacity`));\n\telse throw new Error(`Unit is expected to be 'absolute' or 'scalar'. Got: ${unit}`);\n}\nfunction fromLibrary(lch, parsingOptions = {}) {\n\tif (typeof lch === `undefined` || lch === null) {\n\t\tif (parsingOptions.fallbackColour) return parsingOptions.fallbackColour;\n\t}\n\tconst scalarReturn = parsingOptions.scalar ?? true;\n\tresultThrow(percentTest(lch.l, `l`), percentTest(lch.c, `c`), numberInclusiveRangeTest(lch.h, 0, 360, `h`), percentTest(lch.alpha ?? 1, `alpha`));\n\tif (scalarReturn) return scalar$1(lch.l, lch.c / OKLCH_CHROMA_MAX, lch.h / 360, lch.alpha ?? 1);\n\telse return absolute(lch.l, lch.c, lch.h, lch.alpha ?? 1);\n}\n/**\n* Parse a HEX-formatted colour into OkLch structured format\n* @param hexString\n* @param options\n*/\nfunction fromHexString$1(hexString, options = {}) {\n\treturn fromLibrary(hex2oklch(hexString), options);\n}\nconst oklchTransparent = Object.freeze({\n\tl: 0,\n\tc: 0,\n\th: 0,\n\topacity: 0,\n\tunit: `absolute`,\n\tspace: `oklch`\n});\nfunction fromCss$1(value, options = {}) {\n\tvalue = value.toLowerCase();\n\tif (value.startsWith(`#`)) return fromHexString$1(value, options);\n\tif (value === `transparent`) return oklchTransparent;\n\tif (typeof cssDefinedHexColours[value] !== `undefined`) return fromHexString$1(cssDefinedHexColours[value], options);\n\tif (value.startsWith(`rgb(`)) {\n\t\tconst rgb = to8bit$1(parseCssRgbFunction(value));\n\t\treturn fromLibrary(rgb2oklch({\n\t\t\tr: rgb.r,\n\t\t\tg: rgb.g,\n\t\t\tb: rgb.b\n\t\t}), options);\n\t}\n\tif (!value.startsWith(`hsl(`) && !value.startsWith(`oklch(`)) try {\n\t\tvalue = convert$1(value, `oklch`);\n\t} catch (error) {\n\t\tif (options.fallbackString) value = options.fallbackString;\n\t\telse throw error;\n\t}\n\tconst lch = new Colorizr(value).oklch;\n\treturn fromLibrary(lch, options);\n}\n/**\n* Returns a string or {@link OkLch} value to absolute form.\n*\n* This means ranges are:\n* lightness: 0..1\n* chroma: 0...CHROMA_MAX (0.4)\n* hue: 0..360\n* @param lchOrString\n*/\nfunction toAbsolute(lchOrString) {\n\tif (typeof lchOrString === `string`) return toAbsolute(fromCss$1(lchOrString, { scalar: true }));\n\tguard$2(lchOrString);\n\tif (lchOrString.unit === `absolute`) return lchOrString;\n\treturn {\n\t\tspace: `oklch`,\n\t\tunit: `absolute`,\n\t\tl: lchOrString.l,\n\t\tc: lchOrString.c * OKLCH_CHROMA_MAX,\n\t\th: lchOrString.h * 360,\n\t\topacity: lchOrString.opacity\n\t};\n}\nfunction toScalar$1(lchOrString) {\n\tif (typeof lchOrString === `string`) return toScalar$1(fromCss$1(lchOrString, { scalar: true }));\n\tconst lch = lchOrString;\n\tguard$2(lch);\n\tif (lch.unit === `scalar`) return lch;\n\treturn {\n\t\tl: lch.l,\n\t\tc: lch.c / OKLCH_CHROMA_MAX,\n\t\th: lch.h / 360,\n\t\topacity: lch.opacity ?? 1,\n\t\tunit: `scalar`,\n\t\tspace: `oklch`\n\t};\n}\nfunction toLibrary(lch) {\n\tconst abs = toAbsolute(lch);\n\treturn {\n\t\tl: abs.l,\n\t\tc: abs.c,\n\t\th: abs.h,\n\t\talpha: abs.opacity\n\t};\n}\n/**\n* Returns the colour as a CSS colour string: `oklch(l c h / opacity)`.\n*\n* @param lch Colour\n* @param precision Set precision of numbers, defaults to 3\n* @returns CSS colour string\n*/\nfunction toCssString(lch, precision = 3) {\n\tguard$2(lch);\n\tconst { l, c, h, opacity } = lch;\n\tlet css = ``;\n\tswitch (lch.unit) {\n\t\tcase `absolute`:\n\t\t\tcss = `oklch(${(l * 100).toFixed(precision)}% ${c.toFixed(precision)} ${h.toFixed(precision)}`;\n\t\t\tbreak;\n\t\tcase `scalar`:\n\t\t\tcss = `oklch(${l.toFixed(precision)} ${(c * OKLCH_CHROMA_MAX).toFixed(precision)} ${(h * 360).toFixed(precision)}`;\n\t\t\tbreak;\n\t}\n\tif (typeof opacity !== `undefined` && opacity !== 1) css += ` / ${opacity.toFixed(precision)}`;\n\tcss += `)`;\n\treturn css;\n}\nfunction toHexString$1(lch) {\n\treturn libraryRgbToHexString(oklch2rgb(toLibrary(lch)));\n}\nfunction generateScalar(absoluteHslOrVariable, chroma = 1, lightness = .5, opacity = 1) {\n\tif (typeof absoluteHslOrVariable === `string`) {\n\t\tif (absoluteHslOrVariable.startsWith(`--`)) absoluteHslOrVariable = getComputedStyle(document.body).getPropertyValue(absoluteHslOrVariable).trim();\n\t}\n\tif (lightness > 1) throw new TypeError(`Param 'lightness' must be between 0..1`);\n\tif (chroma > 1) throw new TypeError(`Param 'chroma' must be between 0..1`);\n\tconst hueDeg = angleConvert(angleParse(absoluteHslOrVariable), `deg`).value / 360;\n\tif (opacity > 1) throw new TypeError(`Param 'opacity' must be between 0..1`);\n\treturn {\n\t\tl: lightness,\n\t\tc: chroma,\n\t\th: hueDeg,\n\t\topacity,\n\t\tunit: `scalar`,\n\t\tspace: `oklch`\n\t};\n}\n/**\n* Scales the opacity value of an input Oklch value\n* ```js\n* withOpacity()\n* ```\n* @param value\n* @param fn\n*/\nfunction withOpacity$1(value, fn) {\n\tswitch (value.unit) {\n\t\tcase `absolute`: return {\n\t\t\t...value,\n\t\t\topacity: fn((value.opacity ?? 100) / 100, value) * 100\n\t\t};\n\t\tcase `scalar`: return {\n\t\t\t...value,\n\t\t\topacity: fn(value.opacity ?? 1, value)\n\t\t};\n\t}\n}\nfunction interpolator$1(a, b, direction = `shorter`) {\n\ta = toScalar$1(a);\n\tb = toScalar$1(b);\n\tconst aOpacity = a.opacity ?? 1;\n\tconst distanceCalc = calculateHueDistance(a.h, b.h, 1);\n\tconst hueDistance = direction === `longer` ? distanceCalc.long : distanceCalc.short;\n\tconst chromaDistance = b.c - a.c;\n\tconst lightDistance = b.l - a.l;\n\tconst opacityDistance = (b.opacity ?? 1) - aOpacity;\n\treturn (amount) => {\n\t\tamount = clamp(amount);\n\t\tlet h = interpolate(amount, 0, Math.abs(hueDistance));\n\t\tif (hueDistance < 0) h = a.h - h;\n\t\telse h = a.h + h;\n\t\tconst c = interpolate(amount, 0, chromaDistance);\n\t\tconst l = interpolate(amount, 0, lightDistance);\n\t\tconst o = interpolate(amount, 0, opacityDistance);\n\t\treturn scalar$1(l + a.l, c + a.c, wrapScalarHue(h), o + aOpacity);\n\t};\n}\nfunction scalar$1(lightness = .7, chroma = .1, hue = .5, opacity = 1) {\n\tconst lch = {\n\t\tunit: `scalar`,\n\t\tspace: `oklch`,\n\t\tl: lightness,\n\t\tc: chroma,\n\t\th: hue,\n\t\topacity\n\t};\n\tguard$2(lch);\n\treturn lch;\n}\n/**\n* Create an LCH colour using absolute hue\n* @param l Lightness 0..1\n* @param c Chroma 0..4\n* @param h Hue 0..360\n* @param opacity\n*/\nfunction absolute(l, c, h, opacity = 1) {\n\tconst lch = {\n\t\tspace: `oklch`,\n\t\tunit: `absolute`,\n\t\topacity,\n\t\tl,\n\t\tc,\n\t\th\n\t};\n\tguard$2(lch);\n\treturn lch;\n}\n//#endregion\n//#region src/colour/css-colours.ts\n/**\n* Converts from some kind of colour that is legal in CSS\n* into a structured Colour type.\n* \n* Handles: hex format, CSS variables, colour names\n* ```js\n* fromCssColour(`#ffffff`);\n* fromCssColour(`blue`);\n* fromCssColour(`--some-variable`);\n* fromCssColour(`hsl(50, 50%, 50%)`);\n* fromCssColour(`rgb(50, 100, 100)`);\n* ```\n* @param colour \n* @returns \n*/\nconst fromCssColour = (colour) => {\n\tif (colour.startsWith(`#`)) return fromHexString$2(colour, true);\n\tif (colour.startsWith(`--`)) {\n\t\tconst fromCss = getComputedStyle(document.body).getPropertyValue(colour).trim();\n\t\tif (fromCss.length === 0 || fromCss === null) throw new Error(`Variable missing: ${colour}`);\n\t\treturn fromCssColour(fromCss);\n\t}\n\tconst colourLower = colour.toLowerCase();\n\tif (typeof cssDefinedHexColours[colourLower] !== `undefined`) return fromHexString$2(cssDefinedHexColours[colourLower], true);\n\tif (colourLower.startsWith(`hsl(`)) return fromCss$3(colour, { scalar: true });\n\tif (colourLower.startsWith(`rgb(`)) return fromCss$2(colour, { scalar: true });\n\tif (colourLower.startsWith(`oklch(`)) return fromCss$1(colour, { scalar: true });\n\tthrow new Error(`String colour is not a hex colour, CSS variable nor well-defined colour. Input: '${colour}'`);\n};\n/**\n* Resolves a named colour or CSS variable to a colour string.\n* Doesn't do conversion or parsing.\n* \n* ```js\n* resolveCss(`red`);\n* resolveCss(`my-var`);\n* ```\n* @param colour Colour\n* @param fallback Fallback if CSS variable is missing\n* @returns \n*/\nfunction resolveCss(colour, fallback) {\n\tif (colour.startsWith(`--`)) {\n\t\tconst fromCss = getComputedStyle(document.body).getPropertyValue(colour).trim();\n\t\tif (fromCss.length === 0 || fromCss === null) {\n\t\t\tif (typeof fallback !== `undefined`) return fallback;\n\t\t\tthrow new Error(`CSS variable missing: '${colour}'`);\n\t\t}\n\t\treturn resolveCss(fromCss);\n\t}\n\tif (typeof cssDefinedHexColours[colour] !== `undefined`) return cssDefinedHexColours[colour];\n\treturn colour;\n}\nconst cssDefinedHexColours = Object.freeze({\n\t\"aliceblue\": \"#f0f8ff\",\n\t\"antiquewhite\": \"#faebd7\",\n\t\"aqua\": \"#00ffff\",\n\t\"aquamarine\": \"#7fffd4\",\n\t\"azure\": \"#f0ffff\",\n\t\"beige\": \"#f5f5dc\",\n\t\"bisque\": \"#ffe4c4\",\n\t\"black\": \"#000000\",\n\t\"blanchedalmond\": \"#ffebcd\",\n\t\"blue\": \"#0000ff\",\n\t\"blueviolet\": \"#8a2be2\",\n\t\"brown\": \"#a52a2a\",\n\t\"burlywood\": \"#deb887\",\n\t\"cadetblue\": \"#5f9ea0\",\n\t\"chartreuse\": \"#7fff00\",\n\t\"chocolate\": \"#d2691e\",\n\t\"coral\": \"#ff7f50\",\n\t\"cornflowerblue\": \"#6495ed\",\n\t\"cornsilk\": \"#fff8dc\",\n\t\"crimson\": \"#dc143c\",\n\t\"cyan\": \"#00ffff\",\n\t\"darkblue\": \"#00008b\",\n\t\"darkcyan\": \"#008b8b\",\n\t\"darkgoldenrod\": \"#b8860b\",\n\t\"darkgray\": \"#a9a9a9\",\n\t\"darkgreen\": \"#006400\",\n\t\"darkkhaki\": \"#bdb76b\",\n\t\"darkmagenta\": \"#8b008b\",\n\t\"darkolivegreen\": \"#556b2f\",\n\t\"darkorange\": \"#ff8c00\",\n\t\"darkorchid\": \"#9932cc\",\n\t\"darkred\": \"#8b0000\",\n\t\"darksalmon\": \"#e9967a\",\n\t\"darkseagreen\": \"#8fbc8f\",\n\t\"darkslateblue\": \"#483d8b\",\n\t\"darkslategray\": \"#2f4f4f\",\n\t\"darkturquoise\": \"#00ced1\",\n\t\"darkviolet\": \"#9400d3\",\n\t\"deeppink\": \"#ff1493\",\n\t\"deepskyblue\": \"#00bfff\",\n\t\"dimgray\": \"#696969\",\n\t\"dodgerblue\": \"#1e90ff\",\n\t\"firebrick\": \"#b22222\",\n\t\"floralwhite\": \"#fffaf0\",\n\t\"forestgreen\": \"#228b22\",\n\t\"fuchsia\": \"#ff00ff\",\n\t\"gainsboro\": \"#dcdcdc\",\n\t\"ghostwhite\": \"#f8f8ff\",\n\t\"gold\": \"#ffd700\",\n\t\"goldenrod\": \"#daa520\",\n\t\"gray\": \"#808080\",\n\t\"green\": \"#008000\",\n\t\"greenyellow\": \"#adff2f\",\n\t\"honeydew\": \"#f0fff0\",\n\t\"hotpink\": \"#ff69b4\",\n\t\"indianred\": \"#cd5c5c\",\n\t\"indigo\": \"#4b0082\",\n\t\"ivory\": \"#fffff0\",\n\t\"khaki\": \"#f0e68c\",\n\t\"lavender\": \"#e6e6fa\",\n\t\"lavenderblush\": \"#fff0f5\",\n\t\"lawngreen\": \"#7cfc00\",\n\t\"lemonchiffon\": \"#fffacd\",\n\t\"lightblue\": \"#add8e6\",\n\t\"lightcoral\": \"#f08080\",\n\t\"lightcyan\": \"#e0ffff\",\n\t\"lightgoldenrodyellow\": \"#fafad2\",\n\t\"lightgray\": \"#d3d3d3\",\n\t\"lightgreen\": \"#90ee90\",\n\t\"lightpink\": \"#ffb6c1\",\n\t\"lightsalmon\": \"#ffa07a\",\n\t\"lightseagreen\": \"#20b2aa\",\n\t\"lightskyblue\": \"#87cefa\",\n\t\"lightslategray\": \"#778899\",\n\t\"lightsteelblue\": \"#b0c4de\",\n\t\"lightyellow\": \"#ffffe0\",\n\t\"lime\": \"#00ff00\",\n\t\"limegreen\": \"#32cd32\",\n\t\"linen\": \"#faf0e6\",\n\t\"magenta\": \"#ff00ff\",\n\t\"maroon\": \"#800000\",\n\t\"mediumaquamarine\": \"#66cdaa\",\n\t\"mediumblue\": \"#0000cd\",\n\t\"mediumorchid\": \"#ba55d3\",\n\t\"mediumpurple\": \"#9370db\",\n\t\"mediumseagreen\": \"#3cb371\",\n\t\"mediumslateblue\": \"#7b68ee\",\n\t\"mediumspringgreen\": \"#00fa9a\",\n\t\"mediumturquoise\": \"#48d1cc\",\n\t\"mediumvioletred\": \"#c71585\",\n\t\"midnightblue\": \"#191970\",\n\t\"mintcream\": \"#f5fffa\",\n\t\"mistyrose\": \"#ffe4e1\",\n\t\"moccasin\": \"#ffe4b5\",\n\t\"navajowhite\": \"#ffdead\",\n\t\"navy\": \"#000080\",\n\t\"oldlace\": \"#fdf5e6\",\n\t\"olive\": \"#808000\",\n\t\"olivedrab\": \"#6b8e23\",\n\t\"orange\": \"#ffa500\",\n\t\"orangered\": \"#ff4500\",\n\t\"orchid\": \"#da70d6\",\n\t\"palegoldenrod\": \"#eee8aa\",\n\t\"palegreen\": \"#98fb98\",\n\t\"paleturquoise\": \"#afeeee\",\n\t\"palevioletred\": \"#db7093\",\n\t\"papayawhip\": \"#ffefd5\",\n\t\"peachpuff\": \"#ffdab9\",\n\t\"peru\": \"#cd853f\",\n\t\"pink\": \"#ffc0cb\",\n\t\"plum\": \"#dda0dd\",\n\t\"powderblue\": \"#b0e0e6\",\n\t\"purple\": \"#800080\",\n\t\"rebeccapurple\": \"#663399\",\n\t\"red\": \"#ff0000\",\n\t\"rosybrown\": \"#bc8f8f\",\n\t\"royalblue\": \"#4169e1\",\n\t\"saddlebrown\": \"#8b4513\",\n\t\"salmon\": \"#fa8072\",\n\t\"sandybrown\": \"#f4a460\",\n\t\"seagreen\": \"#2e8b57\",\n\t\"seashell\": \"#fff5ee\",\n\t\"sienna\": \"#a0522d\",\n\t\"silver\": \"#c0c0c0\",\n\t\"skyblue\": \"#87ceeb\",\n\t\"slateblue\": \"#6a5acd\",\n\t\"slategray\": \"#708090\",\n\t\"snow\": \"#fffafa\",\n\t\"springgreen\": \"#00ff7f\",\n\t\"steelblue\": \"#4682b4\",\n\t\"tan\": \"#d2b48c\",\n\t\"teal\": \"#008080\",\n\t\"thistle\": \"#d8bfd8\",\n\t\"tomato\": \"#ff6347\",\n\t\"turquoise\": \"#40e0d0\",\n\t\"violet\": \"#ee82ee\",\n\t\"wheat\": \"#f5deb3\",\n\t\"white\": \"#ffffff\",\n\t\"whitesmoke\": \"#f5f5f5\",\n\t\"yellow\": \"#ffff00\",\n\t\"yellowgreen\": \"#9acd32\",\n\t\"transparent\": \"#00000000\"\n});\n//#endregion\n//#region src/colour/conversion.ts\n/**\n* Converts an object or string representation of colour to ixfx's\n* structured colour.\n* Use {@link convertToString} if you want a CSS colour string instead.\n* @param colour\n* @param destination\n*/\nfunction convert(colour, destination) {\n\tif (destination === `hsl-scalar`) {\n\t\tif (typeof colour === `string` || isHsl(colour) || isRgb(colour)) return toScalar$3(colour);\n\t} else if (destination === `hsl-absolute`) {\n\t\tif (typeof colour === `string` || isHsl(colour)) return toAbsolute$1(colour);\n\t} else if (destination === `oklch-scalar`) {\n\t\tif (typeof colour === `string` || isOkLch(colour)) return toScalar$1(colour);\n\t} else if (destination === `oklch-absolute`) {\n\t\tif (typeof colour === `string` || isOkLch(colour)) return toAbsolute(colour);\n\t} else if (destination === `srgb-8bit`) {\n\t\tif (typeof colour === `string` || isRgb(colour)) return to8bit$1(colour);\n\t} else if (destination === `srgb-scalar`) {\n\t\tif (typeof colour === `string` || isRgb(colour)) return toScalar$2(colour);\n\t} else throw new Error(`Destination '${destination}' not supported for input: ${JSON.stringify(colour)}`);\n\treturn convert(toCssColour(colour), destination);\n}\n/**\n* Like {@link convert}, but result is a CSS colour string\n* @param colour\n* @param destination\n*/\nfunction convertToString(colour, destination) {\n\treturn toCssColour(convert(colour, destination));\n}\n/**\n* Converts some kind of colour into a scalar representation. Supports oklch, hsl and srgb.\n* @param colour Colour to convert\n* @param destination Destination colour format\n*/\nfunction convertScalar(colour, destination) {\n\tif (destination === `oklch`) return convert(colour, `oklch-scalar`);\n\tif (destination === `srgb`) return convert(colour, `srgb-scalar`);\n\tif (destination === `hsl`) return convert(colour, `hsl-scalar`);\n\tthrow new Error(`Unknown destination: '${destination}'`);\n}\nfunction toCssColour(colour) {\n\tif (typeof colour === `string`) return colour;\n\tif (isHsl(colour)) return toCssString$2(colour);\n\tif (isRgb(colour)) return toCssString$1(colour);\n\tif (isOkLch(colour)) return toCssString(colour);\n\tconst asRgb = tryParseObjectToRgb(colour);\n\tif (asRgb) return toCssString$1(asRgb);\n\tconst asHsl = tryParseObjectToHsl(colour);\n\tif (asHsl) return toCssString$2(asHsl);\n\tthrow new Error(`Unknown colour format: '${JSON.stringify(colour)}'`);\n}\nfunction toHexColour(colour) {\n\tif (isHsl(colour)) return toHexString$3(colour);\n\tif (isRgb(colour)) return toHexString$2(colour);\n\tif (isOkLch(colour)) return toHexString$1(colour);\n\tif (typeof colour === `string`) {\n\t\tif (colour.startsWith(`#`)) return colour;\n\t\treturn toHexString$2(convert(colour, `srgb-8bit`));\n\t}\n\tconst asRgb = tryParseObjectToRgb(colour);\n\tif (asRgb) return toHexString$2(asRgb);\n\tconst asHsl = tryParseObjectToHsl(colour);\n\tif (asHsl) return toHexString$3(asHsl);\n\tthrow new Error(`Unknown colour format: '${JSON.stringify(colour)}'`);\n}\nfunction toLibraryColour(colour) {\n\treturn new Colorizr(toCssColour(colour));\n}\nfunction guard$1(colour) {\n\tswitch (colour.space) {\n\t\tcase `hsl`:\n\t\t\tguard$4(colour);\n\t\t\tbreak;\n\t\tcase `srgb`:\n\t\t\tguard$3(colour);\n\t\t\tbreak;\n\t\tcase `oklch`:\n\t\t\tguard$2(colour);\n\t\t\tbreak;\n\t\tdefault: throw new Error(`Unsupported colour space: '${colour.space}'`);\n\t}\n}\nfunction toColour(colourish) {\n\tif (!isColourish(colourish)) throw new Error(`Could not parse input. Expected CSS colour string or structured colour {r,g,b}, {h,s,l} etc. Got: ${JSON.stringify(colourish)}`);\n\tlet c;\n\tif (typeof colourish === `string`) c = fromCssColour(colourish);\n\telse c = colourish;\n\tif (c === void 0) throw new Error(`Could not parse input. Expected CSS colour string or structured colour {r,g,b}, {h,s,l} etc.`);\n\tguard$1(c);\n\treturn c;\n}\n/**\n* Returns a CSS-ready string\n* representation.\n* ```js\n* element.style.backgroundColor = resolveToString(`red`);\n* ```\n*\n* Tries each parameter in turn, returning the value\n* for the first that resolves. This can be useful for\n* having fallback values.\n*\n* ```js\n* // Try a CSS variable, a object property or finally fallback to red.\n* element.style.backgroundColor = toStringFirst('--some-var', opts.background, `red`);\n* ```\n* @param colours Array of colours to resolve\n*/\nfunction toStringFirst(...colours) {\n\tfor (const colour of colours) {\n\t\tif (colour === void 0) continue;\n\t\tif (colour === null) continue;\n\t\ttry {\n\t\t\treturn toCssColour(toColour(colour));\n\t\t} catch {}\n\t}\n\treturn `rebeccapurple`;\n}\nfunction rgbToHsl(rgb, scalarResult) {\n\tlet { r, g, b } = rgb;\n\tconst opacity = rgb.opacity ?? 1;\n\tif (rgb.unit === `8bit`) {\n\t\tr /= 255;\n\t\tg /= 255;\n\t\tb /= 255;\n\t}\n\tconst max = Math.max(r, g, b);\n\tconst min = Math.min(r, g, b);\n\tlet h = (max + min) / 2;\n\tlet s = h;\n\tconst l = h;\n\tif (max === min) if (scalarResult) return scalar$3(0, 0, 0, opacity);\n\telse return absolute$1(0, 0, 0, opacity);\n\tconst d = max - min;\n\ts = l >= .5 ? d / (2 - (max + min)) : d / (max + min);\n\tswitch (max) {\n\t\tcase r:\n\t\t\th = ((g - b) / d + 0) * 60;\n\t\t\tbreak;\n\t\tcase g:\n\t\t\th = ((b - r) / d + 2) * 60;\n\t\t\tbreak;\n\t\tcase b:\n\t\t\th = ((r - g) / d + 4) * 60;\n\t\t\tbreak;\n\t}\n\tif (scalarResult) return scalar$3(h / 360, s, l, opacity);\n\telse return absolute$1(h, s * 100, l * 100, opacity);\n}\n//#endregion\n//#region src/colour/generate.ts\n/**\n* Returns a full HSL colour string (eg `hsl(20,50%,75%)`) based on a index.\n* It's useful for generating perceptually different shades as the index increments.\n*\n* ```\n* el.style.backgroundColor = goldenAgeColour(10);\n* ```\n*\n* Saturation and lightness can be specified, as numeric ranges of 0-1.\n*\n* @param saturation Saturation (0-1), defaults to 0.5\n* @param lightness Lightness (0-1), defaults to 0.75\n* @param alpha Opacity (0-1), defaults to 1.0\n* @returns HSL colour string eg `hsl(20,50%,75%)`\n*/\nconst goldenAngleColour = (index, saturation = .5, lightness = .75, alpha = 1) => {\n\tresultThrow(numberTest(index, `positive`, `index`), numberTest(saturation, `percentage`, `saturation`), numberTest(lightness, `percentage`, `lightness`), numberTest(alpha, `percentage`, `alpha`));\n\treturn toCssString$2(scalar$3(index * 137.508 % 360 / 360, saturation, lightness, alpha));\n};\n/**\n* Returns a random hue component (0..359)\n* \n* ```\n* // Generate hue\n* const h = randomHue(); // 0-359\n*\n* // Generate hue and assign as part of a HSL string\n* el.style.backgroundColor = `hsl(${randomHue(), 50%, 75%})`;\n* ```\n* @param rand\n* @returns\n*/\nconst randomHue = (rand = Math.random) => rand() * 360;\n//#endregion\n//#region src/colour/interpolate.ts\n/**\n* Returns a function to interpolate between colours, with results as a structured {@link Colour} object.\n* ```js\n* const i = interpolator([`orange`, `yellow`, `red`]);\n*\n* // Get a random colour on the above spectrum\n* i(Math.random());\n* ```\n*\n* Results will vary depending on the colour space used, play with the options.\n* When using a hue-based colour space, the `hue` option sets the logic for how hue values wrap.\n*\n* ```js\n* interpolator([`orange`, `yellow`, `red`], { space: `hsl`, hue: `longer })\n* ```\n*\n* Example: Draw the interpolation as a spectrum on a canvas, where each pixel is one step\n* ```js\n* let v = 0;\n* let incrementBy = 0.01;\n* while (v <= 1) {\n* // Get colour at this interpolation point 0..1\n* const colour = fn(v);\n* // Convert to a CSS string\n* ctx.fillStyle = Colour.toCssColour(colour);\n* // Draw a 1px wide rect, and shuffle along to the next x position\n* ctx.fillRect(x, y, 1, h);\n* x += 1;\n* v += incrementBy;\n* }\n* ```\n* @param colours Colours to interpolate between\n* @param opts Options for interpolation\n* @returns Function that interpolates based on an amount, returning a structured Colour\n*/\nfunction interpolator(colours, opts = {}) {\n\tconst direction = opts.direction ?? `shorter`;\n\tconst destination = opts.destination ?? `oklch-scalar`;\n\tconst space = opts.space ?? `oklch`;\n\tconst ranges = interpolateInit(colours, space);\n\tconst rangeInterpolators = ranges.map((range) => interpolatorDual(range[0], range[1], {\n\t\tspace,\n\t\tdirection,\n\t\tdestination\n\t}));\n\tconst asTargetDestination = colours.map((c) => convert(c, destination));\n\treturn (amt) => {\n\t\tif (amt >= 1) return asTargetDestination.at(-1);\n\t\tif (amt <= 0) return asTargetDestination.at(0);\n\t\tconst s = scaleClamped(amt, 0, 1, 0, ranges.length);\n\t\tconst index = Math.floor(s);\n\t\tconst amtAdjusted = s - index;\n\t\tconst ri = rangeInterpolators[index];\n\t\treturn ri(amtAdjusted);\n\t};\n}\n/**\n* Returns a set of pairwise colours, convert to the destination colour space in scalar form\n* @param colours\n* @param destination\n* @returns Array of pairwise colours, converted to destination scalar\n*/\nfunction interpolateInit(colours, destination = `hsl`) {\n\tif (!Array.isArray(colours)) throw new Error(`Param 'colours' is not an array as expected. Got: ${typeof colours}`);\n\tif (colours.length < 2) throw new Error(`Param 'colours' should be at least two in length. Got: ${colours.length}`);\n\treturn [...pairwise(colours.map((colour) => convertScalar(colour, destination)))];\n}\n/**\n* Returns a CSS `linear-gradient` with stops corresponding to the given list of `colours`.\n* ```js\n* element.style.background = Colour.cssLinearGradient(['red','green','blue']);\n* ```\n* @param colours\n* @returns A 'linear-gradient' string for use in CSS, eg for background.\n*/\nfunction cssLinearGradient(colours) {\n\treturn `linear-gradient(to right, ${colours.map((c) => toCssColour(c)).join(`, `)})`;\n}\n/**\n* Returns a function that interpolates between two colours. Returns string colour values.\n* If you want the result as a structured colour, use {@link interpolatorDual} instead.\n*\n* By default takes a shorter direction and uses the OkLCH colourspace.\n* ```js\n* const i = interpolator(`blue`, `red`);\n* i(0.5); // Get the colour at 50%, as a string.\n* ```\n*\n* To work with structured colour values, use one of the space's `interpolate` functions.\n*\n* If you want to create discrete steps, consider {@link createSteps} or {@link scale}.\n*\n* @param colourA First colour\n* @param colourB Second colour\n* @param options Interpolation options. By default uses shorter direction and OkLCH colour space.\n*/\nfunction interpolatorDualToString(colourA, colourB, options = {}) {\n\tconst f = interpolatorDual(colourA, colourB, options);\n\treturn (amount) => toCssColour(f(amount));\n}\n/**\n* Returns a function that interpolates between two colours. Returns structured colour values.\n* If you want the result as a ready-to-use CSS string, use {@link interpolatorDualToString} instead.\n*\n* By default takes a shorter direction and uses the OkLCH colourspace.\n* ```js\n* const i = interpolator(`blue`, `red`);\n* i(0.5); // Get the colour at 50%, as a Colour structure.\n* ```\n*\n* If you want to create discrete steps, consider {@link createSteps} or {@link scale}.\n* @param colourA First colour\n* @param colourB Second colour\n* @param options Interpolation options. By default uses shorter direction and OkLCH colour space.\n* @returns Function that interpolates between two colours, returning a structured Colour\n*/\nfunction interpolatorDual(colourA, colourB, options = {}) {\n\tconst space = options.space ?? `oklch`;\n\tconst direction = options.direction ?? `shorter`;\n\tconst destination = options.destination ?? `oklch-scalar`;\n\tlet inter;\n\tswitch (space) {\n\t\tcase `hsl`: {\n\t\t\tconst hslInter = interpolator$3(convert(colourA, `hsl-scalar`), convert(colourB, `hsl-scalar`), direction);\n\t\t\tinter = (amount) => {\n\t\t\t\treturn convert(hslInter(amount), destination);\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase `srgb`: {\n\t\t\tconst srgbInter = interpolator$2(convert(colourA, `srgb-scalar`), convert(colourB, `srgb-scalar`));\n\t\t\tinter = (amount) => {\n\t\t\t\treturn convert(srgbInter(amount), destination);\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tdefault: {\n\t\t\tconst oklchInter = interpolator$1(convert(colourA, `oklch-scalar`), convert(colourB, `oklch-scalar`), direction);\n\t\t\tinter = (amount) => {\n\t\t\t\treturn convert(oklchInter(amount), destination);\n\t\t\t};\n\t\t}\n\t}\n\treturn (amount) => inter(amount);\n}\n/**\n* Produces a stepped scale of colours.\n*\n* Builds off {@link createSteps} which can only step between two colours.\n*\n* ```js\n* // A scale of from red to green, with three colours in-between\n* const steps = Colour.scale([ `red`, `green` ], { stepsBetween: 3 });\n* for (const step of steps) {\n* // A CSS colour string\n* }\n* ```\n*\n* {@link cssLinearGradient} can produce a smooth gradient in CSS on the basis\n* of the stepped colours.\n* @param colours\n* @param opts\n* @returns Array of colours in string form\n*/\nfunction scale(colours, opts = {}) {\n\tconst direction = opts.direction ?? `shorter`;\n\tconst space = opts.space ?? `oklch`;\n\tconst pieces = interpolateInit(colours, space);\n\tlet stepsBetween = 0;\n\tif (typeof opts.stepsBetween === `number`) {\n\t\tstepsBetween = opts.stepsBetween;\n\t\tif (stepsBetween < 1) throw new Error(`Param 'stepsBetween' must be at least 1`);\n\t} else if (typeof opts.stepsTotal === `number`) {\n\t\tif (opts.stepsTotal <= colours.length) throw new Error(`Param 'stepsTotal' must be greater than number of provided colour stops (${colours.length}) +1 per stop`);\n\t\tconst totalSteps = opts.stepsTotal - colours.length;\n\t\tstepsBetween = Math.floor(totalSteps / pieces.length);\n\t}\n\tconst steps = pieces.map((piece) => {\n\t\tconst pieceSteps = createSteps(piece[0], piece[1], {\n\t\t\tsteps: stepsBetween,\n\t\t\tspace,\n\t\t\tdirection,\n\t\t\texclusive: true\n\t\t});\n\t\tpieceSteps.push(piece[1]);\n\t\treturn pieceSteps;\n\t});\n\tconst firstPiece = pieces[0];\n\tsteps.unshift([firstPiece[0]]);\n\treturn steps.flat().map((c) => toCssColour(c));\n}\nfunction createSteps(a, b, options = {}) {\n\tconst exclusive = options.exclusive ?? false;\n\tconst steps = options.steps ?? 5;\n\tconst space = options.space ?? `oklch`;\n\tconst direction = options.direction ?? `shorter`;\n\tif (!exclusive && steps < 2) throw new Error(`Param 'steps' should be at least 2 when 'exclusive' is false`);\n\tif (exclusive && steps < 1) throw new Error(`Param 'steps' should be at least 1 when 'exlusive' is true`);\n\tconst aa = convertScalar(a, space);\n\tconst bb = convertScalar(b, space);\n\tlet inter;\n\tswitch (space) {\n\t\tcase `hsl`:\n\t\t\tinter = interpolator$3(aa, bb, direction);\n\t\t\tbreak;\n\t\tcase `oklch`:\n\t\t\tinter = interpolator$1(aa, bb, direction);\n\t\t\tbreak;\n\t\tcase `srgb`:\n\t\t\tinter = interpolator$2(aa, bb);\n\t\t\tbreak;\n\t\tdefault: throw new Error(`Colour space '${space}' not supported for interpolation.`);\n\t}\n\tif (!inter) throw new Error(`Could not create interpolator for space: ${space}`);\n\tlet stepBy = 0;\n\tlet startAt = 0;\n\tlet endAt = 1;\n\tif (exclusive) {\n\t\tstepBy = 1 / (steps + 1);\n\t\tstartAt = stepBy;\n\t\tendAt = 1 - stepBy;\n\t} else stepBy = 1 / (steps - 1);\n\tconst results = [];\n\tfor (let interpolateAmount = startAt; interpolateAmount <= endAt; interpolateAmount += stepBy) results.push(inter(interpolateAmount));\n\treturn results;\n}\n//#endregion\n//#region src/colour/math.ts\n/**\n* Multiplies the opacity of a colour by `amount`, returning a computed CSS colour.\n*\n* ```js\n* multiplyOpacity(`red`, 0.5); // Returns a colour string\n* ```\n*\n* For example, to half the opacity, use `amount: 0.5`.\n* Clamps the result to ensure it's between 0..1\n* @param colourish Colour\n* @param amount Amount\n*/\nfunction multiplyOpacity(colourish, amount) {\n\treturn withOpacity(colourish, (o) => clamp(o * amount));\n}\n/**\n* Does a computation with the opacity of a colour, returning colour.\n*\n* Passes operation to `HslSpace` or `SrgbSpace` depending on space of `colourish`.\n* @param colourish Colour\n* @param fn Function that takes original opacity as input and returns output opacity\n*/\nfunction withOpacity(colourish, fn) {\n\tconst colour = toColour(colourish);\n\tlet result;\n\tswitch (colour.space) {\n\t\tcase `hsl`:\n\t\t\tresult = withOpacity$3(colour, fn);\n\t\t\tbreak;\n\t\tcase `srgb`:\n\t\t\tresult = withOpacity$2(colour, fn);\n\t\t\tbreak;\n\t\tcase `oklch`:\n\t\t\tresult = withOpacity$1(colour, fn);\n\t\t\tbreak;\n\t\tdefault: throw new Error(`Unknown space: '${colour.space}'. Expected hsl, srgb, oklch`);\n\t}\n\tif (!result) throw new Error(`Is colour in correct form?`);\n\tif (typeof colourish === `string`) return toCssColour(result);\n\treturn result;\n}\nfunction setOpacity(colourish, opacity) {\n\tconst colour = toColour(colourish);\n\tcolour.opacity = opacity;\n\tif (typeof colourish === `string`) return toCssColour(colour);\n\treturn colour;\n}\n//#endregion\n//#region src/colour/to-integer.ts\n/**\n* Encode 8-bit RGB values into a 24-bit value (0...16_777_215)\n* \n* Assumes RGB values are within 0..255 range\n* @param rgb \n* @returns \n*/\nfunction encodeRgbTo24Bit(rgb) {\n\treturn rgb.r << 16 | rgb.g << 8 | rgb.b;\n}\n/**\n* Decode a 24-bit number (0...16_777_215) into 8-bit RGB\n* @param colour \n* @returns \n*/\nfunction decodeRgbFrom24Bit(colour) {\n\tif (colour > 16777215) throw new TypeError(`Param 'colour' is out of range. Expected max value of 16_777_215, got ${colour}`);\n\treturn {\n\t\tr: colour >> 16 & 255,\n\t\tg: colour >> 8 & 255,\n\t\tb: colour & 255,\n\t\tunit: `8bit`,\n\t\tspace: `srgb`\n\t};\n}\n/**\n* Encodes 8-bit RGB value into 16-bit RGB565 (0..65_535)\n* 5-bit are used for R & B channels, 6 bits for G\n* \n* Read more: https://rgbcolorpicker.com/565\n* @param rgb \n* @returns \n*/\nfunction encodeRgbTo16Bit565(rgb) {\n\tconst r = rgb.r >> 3 & 31;\n\tconst g = rgb.g >> 2 & 63;\n\tconst b = rgb.b >> 3 & 31;\n\treturn r << 11 | g << 5 | b;\n}\n/**\n* Decodes 8-bit RGB value from a 16-bit RGB565 value (0...65_535)\n* Read more: https://rgbcolorpicker.com/565\n* @param colour \n* @returns \n*/\nfunction decodeRgbFrom16Bit565(colour) {\n\tif (colour > 65535) throw new TypeError(`Param 'colour' is out of range. Expected max: 65_535. Got: ${colour}`);\n\treturn {\n\t\tr: (colour >> 11 & 31) << 3,\n\t\tg: (colour >> 5 & 63) << 2,\n\t\tb: (colour & 31) << 3,\n\t\tunit: `8bit`,\n\t\tspace: `srgb`\n\t};\n}\n//#endregion\n//#region src/colour/ycbcr.ts\nvar ycbcr_exports = /* @__PURE__ */ __exportAll({\n\teightBit: () => eightBit,\n\tfromCss: () => fromCss,\n\tfromHexString: () => fromHexString,\n\tfromSrgTo8bit: () => fromSrgTo8bit,\n\tguard: () => guard,\n\tscalar: () => scalar,\n\tto8bit: () => to8bit,\n\ttoHexString: () => toHexString,\n\ttoScalar: () => toScalar,\n\ttoSrgb8bit: () => toSrgb8bit\n});\n/**\n* Creates a YCbCr8bit value from 8bit (0..255) values\n* @param y Luma 0..255\n* @param cb Chroma blue 0..255\n* @param cr Chroma red 0..255\n* @param opacity 0..255\n* @returns YCbCr8bit\n*/\nfunction eightBit(y = 100, cb = 100, cr = 100, opacity = 255) {\n\tconst rgb = {\n\t\tunit: `8bit`,\n\t\tspace: `ycbcr`,\n\t\ty,\n\t\tcb,\n\t\tcr,\n\t\topacity\n\t};\n\tguard(rgb);\n\treturn rgb;\n}\n/**\n* Creates a YCbCr8bit value from scalar (0..1) values\n* @param y Luma 0..1\n* @param cb Chroma blue 0..1\n* @param cr Chroma red 0..1\n* @param opacity 0..1\n* @returns YCbCrScalar\n*/\nfunction scalar(y = .5, cb = .5, cr = .5, opacity = 1) {\n\tconst rgb = {\n\t\tunit: `scalar`,\n\t\tspace: `ycbcr`,\n\t\ty,\n\t\tcb,\n\t\tcr,\n\t\topacity\n\t};\n\tguard(rgb);\n\treturn rgb;\n}\n/**\n* Converts from scalar or 8bit RGB to YCbCr8bit\n* @param rgb\n* @returns\n*/\nfunction fromSrgTo8bit(rgb) {\n\tconst { r, g, b, opacity } = to8bit$1(rgb);\n\treturn eightBit(.299 * r + .587 * g + .114 * b + 0, -.169 * r + -.331 * g + .5 * b + 128, .5 * r + -.419 * g + -.081 * b + 128, opacity);\n}\nfunction toSrgb8bit(ycbcr) {\n\tconst { y, cb, cr, opacity } = to8bit(ycbcr);\n\treturn {\n\t\tunit: `8bit`,\n\t\tspace: `srgb`,\n\t\tr: 1 * y + 0 * (cb - 128) + 1.4 * (cr - 128),\n\t\tg: 1 * y + -.343 * (cb - 128) + -.711 * (cr - 128),\n\t\tb: 1 * y + 1.765 * (cb - 128) + 0 * (cr - 128),\n\t\topacity\n\t};\n}\n/**\n* Returns a YCbCr8bit format from either scalar or 8bit.\n* If the input is already 8bit, it is returned as-is.\n* @param ycbcr 8bit or scalar YCbCr value\n* @returns YCbCr8bit\n*/\nfunction to8bit(ycbcr) {\n\tguard(ycbcr);\n\tif (ycbcr.unit === `8bit`) return ycbcr;\n\tconst { y, cb, cr, opacity } = ycbcr;\n\treturn eightBit(y * 255, cb * 255, cr * 255, typeof opacity === `number` ? opacity * 255 : 255);\n}\nfunction fromHexString(hexString, options = {}) {\n\treturn fromSrgTo8bit(fromHexString$2(hexString, false));\n}\nfunction fromCss(value, options = {}) {\n\tconst scalar = options.scalar ?? false;\n\tconst rgb = fromCss$2(value, {\n\t\tfallbackString: options.fallbackString,\n\t\tscalar: false,\n\t\tensureSafe: options.ensureSafe\n\t});\n\tif (scalar) return toScalar(fromSrgTo8bit(rgb));\n\telse return fromSrgTo8bit(rgb);\n}\nfunction toScalar(colour) {\n\tif (typeof colour === `string`) return fromCss(colour, { scalar: true });\n\tif (isHsl(colour) || isRgb(colour)) return toScalar(fromSrgTo8bit(toScalar$2(colour)));\n\tguard(colour);\n\tif (colour.unit === `scalar`) return colour;\n\tconst { y, cb, cr, opacity } = colour;\n\treturn scalar(y / 255, cb / 255, cr / 255, typeof opacity === `number` ? opacity / 255 : 1);\n}\nfunction guard(rgb) {\n\tconst { y, cb, cr, opacity, space, unit } = rgb;\n\tif (space !== `ycbcr`) throw new Error(`Space is expected to be 'ycbcr'. Got: ${space}`);\n\tif (unit === `8bit`) resultThrow(numberInclusiveRangeTest(y, 0, 255, `y`), numberInclusiveRangeTest(cb, 0, 255, `cb`), numberInclusiveRangeTest(cr, 0, 255, `cr`), () => {\n\t\tif (typeof opacity === `number`) return numberInclusiveRangeTest(opacity, 0, 255, `opacity`);\n\t});\n\telse if (unit === `scalar`) resultThrow(numberTest(y, `percentage`, `y`), numberTest(cb, `percentage`, `cb`), numberTest(cr, `percentage`, `cr`), () => {\n\t\tif (typeof opacity === `number`) return numberTest(opacity, `percentage`, `opacity`);\n\t});\n\telse throw new Error(`Unit is expected to be '8bit' or 'scalar'. Got: ${unit}`);\n}\n/**\n* Converts a YCbCr colour to a RGB hex string.\n* @param ycbcr\n* @returns\n*/\nfunction toHexString(ycbcr) {\n\treturn toHexString$2(toSrgb8bit(ycbcr));\n}\n//#endregion\n//#region src/colour/index.ts\nvar colour_exports = /* @__PURE__ */ __exportAll({\n\tHslSpace: () => hsl_exports,\n\tOklchSpace: () => oklch_exports,\n\tSrgbSpace: () => srgb_exports,\n\tYCbCrSpace: () => ycbcr_exports,\n\tconvert: () => convert,\n\tconvertScalar: () => convertScalar,\n\tconvertToString: () => convertToString,\n\tcreateSteps: () => createSteps,\n\tcssDefinedHexColours: () => cssDefinedHexColours,\n\tcssLinearGradient: () => cssLinearGradient,\n\tdecodeRgbFrom16Bit565: () => decodeRgbFrom16Bit565,\n\tdecodeRgbFrom24Bit: () => decodeRgbFrom24Bit,\n\tencodeRgbTo16Bit565: () => encodeRgbTo16Bit565,\n\tencodeRgbTo24Bit: () => encodeRgbTo24Bit,\n\tfromCssColour: () => fromCssColour,\n\tgoldenAngleColour: () => goldenAngleColour,\n\tguard: () => guard$1,\n\tinterpolator: () => interpolator,\n\tinterpolatorDual: () => interpolatorDual,\n\tinterpolatorDualToString: () => interpolatorDualToString,\n\tisColourish: () => isColourish,\n\tisHsl: () => isHsl,\n\tisOkLch: () => isOkLch,\n\tisRgb: () => isRgb,\n\tmultiplyOpacity: () => multiplyOpacity,\n\trandomHue: () => randomHue,\n\tresolveCss: () => resolveCss,\n\trgbToHsl: () => rgbToHsl,\n\tscale: () => scale,\n\tsetOpacity: () => setOpacity,\n\ttoColour: () => toColour,\n\ttoCssColour: () => toCssColour,\n\ttoHexColour: () => toHexColour,\n\ttoLibraryColour: () => toLibraryColour,\n\ttoStringFirst: () => toStringFirst,\n\ttryParseObjectToHsl: () => tryParseObjectToHsl,\n\ttryParseObjectToRgb: () => tryParseObjectToRgb,\n\twithOpacity: () => withOpacity\n});\n//#endregion\nexport { resolveCss as A, tryParseObjectToRgb as B, toColour as C, toStringFirst as D, toLibraryColour as E, isColourish as F, isHsl as I, isOkLch as L, srgb_exports as M, to8bit$1 as N, cssDefinedHexColours as O, hsl_exports as P, isRgb as R, rgbToHsl as S, toHexColour as T, randomHue as _, encodeRgbTo16Bit565 as a, convertToString as b, setOpacity as c, cssLinearGradient as d, interpolator as f, goldenAngleColour as g, scale as h, decodeRgbFrom24Bit as i, oklch_exports as j, fromCssColour as k, withOpacity as l, interpolatorDualToString as m, ycbcr_exports as n, encodeRgbTo24Bit as o, interpolatorDual as p, decodeRgbFrom16Bit565 as r, multiplyOpacity as s, colour_exports as t, createSteps as u, convert as v, toCssColour as w, guard$1 as x, convertScalar as y, tryParseObjectToHsl as z };\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}
|