@adea-ai/themes 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/NOTICE +110 -0
- package/README.md +157 -0
- package/dist/adapters/base24.d.ts +117 -0
- package/dist/adapters/base24.d.ts.map +1 -0
- package/dist/adapters/base24.js +313 -0
- package/dist/adapters/base24.js.map +1 -0
- package/dist/adapters/css.d.ts +68 -0
- package/dist/adapters/css.d.ts.map +1 -0
- package/dist/adapters/css.js +107 -0
- package/dist/adapters/css.js.map +1 -0
- package/dist/adapters/shadcn.d.ts +43 -0
- package/dist/adapters/shadcn.d.ts.map +1 -0
- package/dist/adapters/shadcn.js +89 -0
- package/dist/adapters/shadcn.js.map +1 -0
- package/dist/adapters/shiki.d.ts +60 -0
- package/dist/adapters/shiki.d.ts.map +1 -0
- package/dist/adapters/shiki.js +135 -0
- package/dist/adapters/shiki.js.map +1 -0
- package/dist/adapters/tailwind.d.ts +35 -0
- package/dist/adapters/tailwind.d.ts.map +1 -0
- package/dist/adapters/tailwind.js +58 -0
- package/dist/adapters/tailwind.js.map +1 -0
- package/dist/adapters/xterm.d.ts +64 -0
- package/dist/adapters/xterm.d.ts.map +1 -0
- package/dist/adapters/xterm.js +112 -0
- package/dist/adapters/xterm.js.map +1 -0
- package/dist/catalogue.d.ts +66 -0
- package/dist/catalogue.d.ts.map +1 -0
- package/dist/catalogue.js +110 -0
- package/dist/catalogue.js.map +1 -0
- package/dist/derive.d.ts +89 -0
- package/dist/derive.d.ts.map +1 -0
- package/dist/derive.js +165 -0
- package/dist/derive.js.map +1 -0
- package/dist/generated/schemes.d.ts +16 -0
- package/dist/generated/schemes.d.ts.map +1 -0
- package/dist/generated/schemes.js +880 -0
- package/dist/generated/schemes.js.map +1 -0
- package/dist/generated/themes.d.ts +11 -0
- package/dist/generated/themes.d.ts.map +1 -0
- package/dist/generated/themes.js +1650 -0
- package/dist/generated/themes.js.map +1 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/normalize.d.ts +160 -0
- package/dist/normalize.d.ts.map +1 -0
- package/dist/normalize.js +795 -0
- package/dist/normalize.js.map +1 -0
- package/dist/oklch.d.ts +141 -0
- package/dist/oklch.d.ts.map +1 -0
- package/dist/oklch.js +306 -0
- package/dist/oklch.js.map +1 -0
- package/dist/schema.d.ts +178 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +69 -0
- package/dist/schema.js.map +1 -0
- package/dist/sources.d.ts +171 -0
- package/dist/sources.d.ts.map +1 -0
- package/dist/sources.js +559 -0
- package/dist/sources.js.map +1 -0
- package/dist/validate.d.ts +121 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +255 -0
- package/dist/validate.js.map +1 -0
- package/package.json +106 -0
- package/palettes/ayu-light.json +38 -0
- package/palettes/ayu-mirage.json +38 -0
- package/palettes/ayu.json +38 -0
- package/palettes/catppuccin-frappe.json +38 -0
- package/palettes/catppuccin-latte.json +38 -0
- package/palettes/catppuccin-macchiato.json +38 -0
- package/palettes/catppuccin-mocha.json +38 -0
- package/palettes/dracula.json +38 -0
- package/palettes/everforest-dark.json +38 -0
- package/palettes/everforest-light.json +38 -0
- package/palettes/gruvbox-dark.json +38 -0
- package/palettes/gruvbox-light.json +38 -0
- package/palettes/kanagawa.json +38 -0
- package/palettes/monokai.json +38 -0
- package/palettes/nord.json +38 -0
- package/palettes/one-dark.json +38 -0
- package/palettes/rosepine-dawn.json +38 -0
- package/palettes/rosepine-moon.json +38 -0
- package/palettes/rosepine.json +38 -0
- package/palettes/solarized-dark.json +38 -0
- package/palettes/solarized-light.json +38 -0
- package/palettes/tokyonight-day.json +38 -0
- package/palettes/tokyonight-night.json +38 -0
- package/palettes/tokyonight-storm.json +38 -0
- package/palettes/vesper.json +38 -0
- package/src/adapters/base24.ts +355 -0
- package/src/adapters/css.ts +149 -0
- package/src/adapters/shadcn.ts +99 -0
- package/src/adapters/shiki.ts +168 -0
- package/src/adapters/tailwind.ts +79 -0
- package/src/adapters/xterm.ts +159 -0
- package/src/catalogue.ts +129 -0
- package/src/derive.ts +203 -0
- package/src/generated/schemes.ts +882 -0
- package/src/generated/themes.ts +1652 -0
- package/src/index.ts +146 -0
- package/src/normalize.ts +1010 -0
- package/src/oklch.ts +366 -0
- package/src/schema.ts +222 -0
- package/src/sources.ts +682 -0
- package/src/validate.ts +325 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAUH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EACL,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,WAAW,EACX,GAAG,EACH,UAAU,EACV,cAAc,GACf,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,GAAG;IACT,SAAS,EAAE,GAAG;IACd,mDAAmD;IACnD,UAAU,EAAE,CAAC;IACb,MAAM,EAAE,GAAG;IACX;;;;;;;;;OASG;IACH,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,GAAG;IACrB;;OAEG;IACH,MAAM,EAAE,GAAG;IACX;;;;;;;;;;;;;;;OAeG;IACH,YAAY,EAAE,CAAC;IACf,0DAA0D;IAC1D,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,IAAI;IACjB,2EAA2E;IAC3E,OAAO,EAAE,IAAI;IACb,6DAA6D;IAC7D,SAAS,EAAE,GAAG;CACN,CAAC,CAAA;AAEX,+EAA+E;AAC/E;;;;;;;;;GASG;AACH,SAAS,YAAY,CAAC,OAAqD;IACzE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA;AAC1E,CAAC;AAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,oFAAoF;IACpF,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;CACb,CAAC,CAAA;AAEF,+CAA+C;AAC/C,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAuC,CAAA;AAEpG,yFAAyF;AACzF,MAAM,qBAAqB,GAAG,KAAK,CAAA;AA0CnC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,KAAK;IACtB,YAAY,EAAE,GAAG;IACjB,aAAa,EAAE,KAAK;CACZ,CAAC,CAAA;AAEX;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,UAAiB;IACxC,OAAO,UAAU,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACrC,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,uBAAuB,CACrC,UAA2B,EAC3B,UAAiB;IAEjB,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,UAAU,CAAA;AAChE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,WAAW,CAAC,UAAiB,EAAE,IAAY,EAAE,SAAiB;IACrE,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,GAAG,SAAS,CAAC,CAAA;IAC3D,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAA;IAC/C,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,EAAE,CAAA;AACjE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAS,aAAa,CACpB,OAAkC,EAClC,UAAiB,EACjB,UAA2B;IAE3B,4EAA4E;IAC5E,4EAA4E;IAC5E,+EAA+E;IAC/E,6EAA6E;IAC7E,6EAA6E;IAC7E,kFAAkF;IAClF,2EAA2E;IAC3E,gDAAgD;IAChD,EAAE;IACF,8EAA8E;IAC9E,mFAAmF;IACnF,gBAAgB;IAChB,MAAM,UAAU,GACd,UAAU,KAAK,MAAM;QACnB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;QAClG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAEtD,MAAM,QAAQ,GAAY,EAAE,CAAA;IAC5B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC1F,CAAC;IACD,gFAAgF;IAChF,wEAAwE;IACxE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAA;IAEpF,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAA;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAA;IAC/D,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAA;IAChD,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,CAAA;IAE9D,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO;YACL,WAAW,EAAE,SAAS;YACtB,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE,OAAO;YACd,WAAW,EAAE,aAAa;SAC3B,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,0EAA0E;IAC1E,EAAE;IACF,+EAA+E;IAC/E,gFAAgF;IAChF,iFAAiF;IACjF,6DAA6D;IAC7D,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAC1D,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAC1C,CAAA;IAED,OAAO;QACL,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,SAAS;QAC5D,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,eAAe;QACzC,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,OAAO;KACrB,CAAA;AACH,CAAC;AAED,6EAA6E;AAC7E,SAAS,IAAI,CACX,OAAe,EACf,IAAY,EACZ,MAAsB,EACtB,KAAa,EACb,OAAO,GAAG,KAAK;IAEf,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;IACvF,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO;YACL,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;YAChC,OAAO,EAAE;gBACP,OAAO;gBACP,IAAI;gBACJ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,OAAO;oBACd,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAkC,KAAK,WAAW,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;oBAC1H,CAAC,CAAC,mBAAmB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,KAAK,WAAW,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;aACxG;SACF,CAAA;IACH,CAAC;IACD,OAAO;QACL,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;QAChC,OAAO,EAAE;YACP,OAAO;YACP,IAAI;YACJ,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,SAAS,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iEAAiE,KAAK,IAAI;SACpH;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,YAAY,CACnB,OAAe,EACf,IAA4B,EAC5B,QAA0B,EAC1B,SAA8B,EAC9B,MAAa;IAEb,MAAM,QAAQ,GAA2B,EAAE,CAAA;IAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAU,CAAA;IACvC,MAAM,KAAK,GAAuB,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAA;IAEnG,IAAI,QAA+D,CAAA;IACnE,MAAM,UAAU,GAKV,EAAE,CAAA;IAER,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,GAAG,qBAAqB;YAAE,SAAQ;QAC/D,6EAA6E;QAC7E,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,UAAU,CACzB,SAAS,EACT,CAAC,UAAU,CAAC,EACZ,MAAM,EACN,eAAe,CAAC,MAAM,EACtB,aAAa,CAAC,MAAM,CACrB,CAAA;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC/D,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAA;YAC9C,CAAC;YACD,SAAQ;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,CACzB,QAAQ,CAAC,MAAM,CAAC,KAAK,EACrB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EACjB,MAAM,EACN,eAAe,CAAC,YAAY,EAC5B,aAAa,CAAC,MAAM,CACrB,CAAA;QACD,MAAM,OAAO,GAAG;YACd,MAAM,EAAE;gBACN,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK;gBAC5B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK;gBAC5B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK;gBACpD,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;aACrC;YACD,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;SAC9C,CAAA;QAED,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC7B,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;YAC9G,SAAQ;QACV,CAAC;QACD,6EAA6E;QAC7E,2DAA2D;QAC3D,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC9D,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;QAC7C,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,8EAA8E;QAC9E,2EAA2E;QAC3E,iFAAiF;QACjF,2EAA2E;QAC3E,gFAAgF;QAChF,wEAAwE;QACxE,uBAAuB;QACvB,EAAE;QACF,gFAAgF;QAChF,+EAA+E;QAC/E,iBAAiB;QACjB,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACjD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAClD,CAAA;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC7F,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;QAElE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC;gBACZ,OAAO;gBACP,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,QAAQ;oBACf,CAAC,CAAC,4BAA4B,SAAS,2CAA2C,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW;oBAC5N,CAAC,CAAC,4BAA4B,SAAS,oCAAoC,MAAM,CAAC,IAAI,UAAU;aACnG,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC;gBACZ,OAAO;gBACP,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACrB,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,4CAA4C,MAAM,CAAC,IAAI,EAAE;oBAC5G,CAAC,CAAC,mBAAmB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,MAAM,CAAC,IAAI,EAAE;aAC1F,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAA;IAC/D,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,IAAI;QACzB,IAAI,EAAE,MAAiB;QACvB,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;KAClD,CAAA;IACD,QAAQ,CAAC,IAAI,CAAC;QACZ,OAAO;QACP,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,+BAA+B,eAAe,CAAC,MAAM,oBAAoB,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;KACvI,CAAC,CAAA;IACF,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAA;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,sBAAsB,CAC7B,OAAe,EACf,MAAa,EACb,OAAkC;IAElC,MAAM,QAAQ,GAA2B,EAAE,CAAA;IAC3C,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAEnF,IAAI,IAAI,GAAG,UAAU,CAAC,CAAC,CAAU,CAAA;IACjC,IAAI,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC3C,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAC9C,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;YACtB,IAAI,GAAG,SAAS,CAAA;YAChB,SAAS,GAAG,KAAK,CAAA;QACnB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;IAClF,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO;YACP,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,QAAQ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC,eAAe,CAAC,gBAAgB,IAAI;SAC7G,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;AAC1C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,oBAAoB,CAC3B,KAAY,EACZ,QAA0B,EAC1B,OAAe,EACf,MAAc;IAEd,2EAA2E;IAC3E,sEAAsE;IACtE,MAAM,KAAK,GAAG,CAAC,SAAgB,EAAqC,EAAE;QACpE,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;QACpC,IAAI,MAAM,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAU,EAAE,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAA;QAC/E,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC7C,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK;gBAAE,MAAM,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACvD,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5B,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;IACnE,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3D,MAAM,IAAI,GAAG,KAAK,CAAA;IAClB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAE9C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,SAAS,GAAU,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,EAAE,CAAA;QAC5E,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC;YAAE,MAAK;QAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;QACjC,IAAI,QAAQ,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC;YAC9B,OAAO;gBACL,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxC,SAAS,EAAE,IAAI;aAChB,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AACpE,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAS,gBAAgB,CACvB,KAAY,EACZ,QAA0B,EAC1B,MAAa,EACb,OAAe;IAEf,MAAM,UAAU,GAAG,CAAC,SAAgB,EAAU,EAAE,CAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IAEtF,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;QACjC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IACxE,CAAC;IAED,gFAAgF;IAChF,2CAA2C;IAC3C,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,OAAO;YAAE,IAAI,GAAG,GAAG,CAAA;;YACzD,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IACnD,OAAO;QACL,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,SAAS,EAAE,IAAI;KAChB,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CACjB,KAAY,EACZ,QAA0B,EAC1B,MAAa,EACb,OAAe,EACf,MAAc;IAEd,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IACxE,IAAI,SAAS,CAAC,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAErE,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAChE,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAE5D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAC9C,CAAC;AAQD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,MAAM,QAAQ,GAA2B,EAAE,CAAA;IAC3C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAE1D,iFAAiF;IACjF,8EAA8E;IAC9E,iFAAiF;IACjF,kDAAkD;IAClD,MAAM,OAAO,GAA8B,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC1D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAe,CAAC,CAAA;QAC1C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,4BAA4B,IAAI,kBAAkB,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAkB,CAAC,GAAG,MAAM,CAAA;QACpC,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,MAAM,CAAC,EAAE;YAClB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,yBAAyB,IAAI,wCAAwC;SAC/E,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAA;IAEjC,MAAM,UAAU,GAAoB,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;IACxF,IAAI,UAAU,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,MAAM,CAAC,EAAE;YAClB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,YAAY,MAAM,CAAC,UAAU,4BAA4B,UAAU,wBAAwB;SACrG,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;IAE7C,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IACzE,MAAM,eAAe,GAAG,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC,eAAe,EAAE,SAAS,CAAC,CAAA;IACzF,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACnF,MAAM,aAAa,GAAG,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;IAErF;;;;;;OAMG;IACH,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,CAAC,CAAA;IAEvD,MAAM,MAAM,GAAoB;QAC9B,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC;QACnC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACvC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;QAC7B,eAAe,EAAE,WAAW,CAAC,eAAe,CAAC;QAC7C,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC;QACvC,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC;QACzC,MAAM,EAAE,WAAW,CAAC;YAClB,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC;YAC3C,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC;SACtC,CAAC;QACF,WAAW,EAAE,WAAW,CAAC;YACvB,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC;YAC5C,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC;SACtC,CAAC;QACF,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACjC,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,MAAM,EAAE,EAAE;QACV,gBAAgB,EAAE,EAAE;QACpB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,EAAE;KACT,CAAA;IAED,iFAAiF;IACjF,6EAA6E;IAC7E,MAAM,UAAU,GAAG,oBAAoB,CACrC,OAAO,CAAC,MAAM,EACd,QAAQ,EACR,eAAe,CAAC,IAAI,EACpB,aAAa,CAAC,IAAI,CACnB,CAAA;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,CAAA;IACtE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;IACxB,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAA;IAC9B,IAAI,IAAI,CAAC,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAE7C,iFAAiF;IACjF,kFAAkF;IAClF,0BAA0B;IAC1B,MAAM,WAAW,GAAG,oBAAoB,CACtC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,EACrC,QAAQ,EACR,eAAe,CAAC,SAAS,EACzB,GAAG,CACJ,CAAA;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IAClF,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAA;IAC9B,IAAI,KAAK,CAAC,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAE/C,MAAM,YAAY,GAAG,oBAAoB,CACvC,OAAO,CAAC,MAAM,EACd,QAAQ,EACR,eAAe,CAAC,UAAU,EAC1B,GAAG,CACJ,CAAA;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,CAAC,UAAU,CAAC,CAAA;IACtF,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAA;IAChC,IAAI,MAAM,CAAC,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAEjD;;;;;;;;;;;;;OAaG;IACH,MAAM,gBAAgB,GAAG;QACvB,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;QACvC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;QACzC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;QACzC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;KAC9B,CAAA;IAEV,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClE,MAAM,GAAG,GAAG,IAAgD,CAAA;QAC5D,IAAI,MAAgE,CAAA;QAEpE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,yEAAyE;YACzE,6EAA6E;YAC7E,oEAAoE;YACpE,EAAE;YACF,2EAA2E;YAC3E,6EAA6E;YAC7E,6EAA6E;YAC7E,yBAAyB;YACzB,MAAM,QAAQ,GAAG,UAAU,CACzB,SAAS,EACT,CAAC,UAAU,CAAC,EACZ,UAAU,CAAC,KAAK,EAChB,eAAe,CAAC,MAAM,EACtB,aAAa,CAAC,MAAM,CACrB,CAAA;YACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK;oBAAE,MAAM,GAAG,QAAQ,CAAA;gBAC7E,SAAQ;YACV,CAAC;YAED,MAAM,QAAQ,GAAG,UAAU,CACzB,QAAQ,CAAC,MAAM,CAAC,KAAK,EACrB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EACjB,UAAU,CAAC,KAAK,EAChB,eAAe,CAAC,YAAY,EAC5B,aAAa,CAAC,MAAM,CACrB,CAAA;YACD,MAAM,QAAQ,GAAiD;gBAC7D,MAAM,EAAE;oBACN,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK;oBAC5B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK;oBAC5B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK;oBACpD,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;iBACrC;gBACD,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;aAC9C,CAAA;YAED,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC9B,MAAM,GAAG,QAAQ,CAAA;gBACjB,MAAK;YACP,CAAC;YACD,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK;gBAAE,MAAM,GAAG,QAAQ,CAAA;QAC/E,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAO,CAAC,MAAM,EAAE,eAAe,CAAC,YAAY,EAAE,MAAO,CAAC,OAAO,CAAC,CAAA;QAClG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAA;QAC1B,IAAI,MAAM,CAAC,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACjD,IAAI,MAAO,CAAC,OAAO,EAAE,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC;gBACZ,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,WAAW,CAAC,MAAO,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iFAAiF;aAC7I,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;IAE3D,MAAM,IAAI,GAAa;QACrB,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QAChC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACjC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACpC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACjC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;QAC1C,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACtC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACzC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACvC,aAAa,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1C,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACvC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;KAC3C,CAAA;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACnC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAC1D,CAAA;IAE3B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IACjG,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IACjC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAChD,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,MAAM,CAAC,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,mBAAmB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,eAAe,CAAC,MAAM,uBAAuB;SACrH,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACxF,MAAM,CAAC,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAC7D,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAE3C,+EAA+E;IAC/E,gEAAgE;IAChE,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS;QACtC,CAAC,CAAE,OAAO,CAAC,MAAgB;QAC3B,CAAC,CAAE,OAAO,CAAC,MAAgB,CAAA;IAC7B,MAAM,eAAe,GAAG,cAAc,CACpC,eAAe,EACf,UAAU,EACV,eAAe,CAAC,SAAS,EACzB,GAAG,CACJ,CAAA;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IAC1F,IAAI,SAAS,CAAC,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAEvD,gFAAgF;IAChF,iFAAiF;IACjF,iFAAiF;IACjF,iDAAiD;IACjD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,IAA6B,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,KAAe,CAAC,CAAA;QACzF,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,IAAe,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,KAAe,CAAC,CAAA;QACzE,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE;YACN,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,UAAU;YACV,MAAM;YACN,IAAI;YACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACnB,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;gBACnD,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;gBACzB,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC;gBACzD,CAAC,CAAC,SAAS,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE;gBACX,GAAG,EAAE,EAAE;gBACP,OAAO,EAAE,EAAE;aACZ;YACD,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB;QACD,QAAQ;KACT,CAAA;AACH,CAAC;AAED,iFAAiF;AACjF,SAAS,aAAa,CAAC,OAAe,EAAE,IAAY,EAAE,KAAa;IACjE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAChC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,KAAK,IAAI,qBAAqB,KAAK,EAAE,CAAC,CAAA;IAC7E,OAAO,WAAW,CAAC,MAAM,CAAC,CAAA;AAC5B,CAAC;AAED,kEAAkE;AAClE,SAAS,UAAU,CACjB,IAAY,EACZ,OAAkC,EAClC,IAA4E;IAE5E,MAAM,MAAM,GAA+B;QACzC,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,QAAQ;QACtB,WAAW,EAAE,QAAQ;QACrB,UAAU,EAAE,QAAQ;QACpB,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,QAAQ;KACxB,CAAA;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IACzB,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IAErB,MAAM,SAAS,GAA0B;QACvC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAA;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAA;IAC5B,MAAM,KAAK,GAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAkB,CAAC,IAAI,CACvD,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,CAC3D,CAAA;IACD,OAAO,KAAK,IAAI,QAAQ,CAAA;AAC1B,CAAC;AAED,2EAA2E;AAC3E,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
|
package/dist/oklch.d.ts
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The colour core.
|
|
3
|
+
*
|
|
4
|
+
* OKLCH is the canonical representation in this package, which means every value
|
|
5
|
+
* that enters the catalogue is converted to it and every value that leaves is
|
|
6
|
+
* derived from it. The reason is not fashion: OKLCH's lightness axis is
|
|
7
|
+
* perceptually uniform, so a surface ladder built by adding `0.035` to L produces
|
|
8
|
+
* rungs that *look* evenly spaced across every hue, and a contrast repair that
|
|
9
|
+
* moves L by a fixed amount changes the perceived brightness by a predictable
|
|
10
|
+
* amount. Neither holds in sRGB or HSL, where the same numeric step is a large
|
|
11
|
+
* change in yellow and an invisible one in blue.
|
|
12
|
+
*
|
|
13
|
+
* Two conversion directions are needed and they are not symmetric:
|
|
14
|
+
*
|
|
15
|
+
* - **In**, from the hex values upstream palettes publish. Lossless.
|
|
16
|
+
* - **Out**, to hex, for consumers that cannot express OKLCH — xterm.js reads
|
|
17
|
+
* hex, and older Shiki engines resolve hex. This direction can land outside
|
|
18
|
+
* sRGB, so it gamut-maps rather than clipping.
|
|
19
|
+
*
|
|
20
|
+
* Clipping a channel is what turns a carefully chosen out-of-gamut purple into a
|
|
21
|
+
* flat, over-bright magenta. The gamut mapping here reduces chroma at constant
|
|
22
|
+
* lightness and hue instead, which is the standard CSS Color 4 approach and keeps
|
|
23
|
+
* the colour recognisably the one that was asked for.
|
|
24
|
+
*/
|
|
25
|
+
/** A colour in OKLCH. `l` and `c` are unbounded here; use {@link inGamut} to test. */
|
|
26
|
+
export type Oklch = {
|
|
27
|
+
/** Perceptual lightness, nominally 0–1. */
|
|
28
|
+
l: number;
|
|
29
|
+
/** Chroma, nominally 0–0.4. */
|
|
30
|
+
c: number;
|
|
31
|
+
/** Hue angle in degrees, 0–360. Meaningless when `c` is 0. */
|
|
32
|
+
h: number;
|
|
33
|
+
};
|
|
34
|
+
/** OKLab, the rectangular form OKLCH is the polar form of. */
|
|
35
|
+
type Oklab = {
|
|
36
|
+
l: number;
|
|
37
|
+
a: number;
|
|
38
|
+
b: number;
|
|
39
|
+
};
|
|
40
|
+
export declare const oklchToOklab: ({ l, c, h }: Oklch) => Oklab;
|
|
41
|
+
export declare const oklabToOklch: ({ l, a, b }: Oklab) => Oklch;
|
|
42
|
+
/** True when every linear channel sits inside the sRGB cube. */
|
|
43
|
+
export declare function inGamut(color: Oklch, tolerance?: number): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Brings a colour into sRGB by reducing chroma at constant lightness and hue.
|
|
46
|
+
*
|
|
47
|
+
* Reduction is a bisection because the sRGB boundary along a constant-hue line is
|
|
48
|
+
* not a linear function of chroma — a fixed number of decrements either stops
|
|
49
|
+
* short of the boundary (leaving a clipped colour) or overshoots it (desaturating
|
|
50
|
+
* far more than necessary). 24 iterations resolve chroma to well under one
|
|
51
|
+
* 8-bit-steps' worth of difference.
|
|
52
|
+
*/
|
|
53
|
+
export declare function gamutMap(color: Oklch): Oklch;
|
|
54
|
+
/** Parses `#rgb` and `#rrggbb`. Returns undefined rather than throwing. */
|
|
55
|
+
export declare function hexToOklch(hex: string): Oklch | undefined;
|
|
56
|
+
/** Serialises to `#rrggbb` after gamut mapping. Always lower case. */
|
|
57
|
+
export declare function oklchToHex(color: Oklch): string;
|
|
58
|
+
/**
|
|
59
|
+
* Parses an `oklch()` string.
|
|
60
|
+
*
|
|
61
|
+
* Alpha is accepted and discarded: every role in the catalogue is opaque, and a
|
|
62
|
+
* translucent value would silently break the contrast floors, which are defined
|
|
63
|
+
* for opaque colours.
|
|
64
|
+
*/
|
|
65
|
+
export declare function parseOklch(input: string): Oklch | undefined;
|
|
66
|
+
/** Accepts either notation, so adapters and fixtures can use whichever reads better. */
|
|
67
|
+
export declare function parseColor(input: string): Oklch | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Serialises to the canonical `oklch(L C H)` form, rounded to the precision the
|
|
70
|
+
* catalogue is committed at.
|
|
71
|
+
*
|
|
72
|
+
* The rounding is part of the on-disk contract, not cosmetic: generated files are
|
|
73
|
+
* diffed in CI to prove the committed catalogue matches its sources, and a full
|
|
74
|
+
* float would make that diff unstable across platforms.
|
|
75
|
+
*/
|
|
76
|
+
export declare function formatOklch(color: Oklch): string;
|
|
77
|
+
/**
|
|
78
|
+
* The colour as it will actually be written.
|
|
79
|
+
*
|
|
80
|
+
* Repairs must be measured against this rather than against their own working
|
|
81
|
+
* value. {@link formatOklch} rounds lightness to four decimals, and rounding can
|
|
82
|
+
* move a pairing from 4.5001:1 to 4.4998:1 — so a repair that converges on the
|
|
83
|
+
* exact floor and is then rounded ships a value that fails the floor it was
|
|
84
|
+
* computed to satisfy. Measuring the canonical form closes that gap by making the
|
|
85
|
+
* thing measured and the thing committed the same thing.
|
|
86
|
+
*/
|
|
87
|
+
export declare function canonical(color: Oklch): Oklch;
|
|
88
|
+
/**
|
|
89
|
+
* Relative luminance of an sRGB colour, per WCAG 2.1.
|
|
90
|
+
*
|
|
91
|
+
* Computed from linear-light channels, which is why this goes through OKLab
|
|
92
|
+
* rather than being read off `L`: OKLCH lightness is perceptual and WCAG's is
|
|
93
|
+
* not, and the two disagree most in the saturated blues and yellows where the
|
|
94
|
+
* contrast floors actually bite.
|
|
95
|
+
*/
|
|
96
|
+
export declare function relativeLuminance(color: Oklch): number;
|
|
97
|
+
/** The WCAG 2.1 contrast ratio, 1–21. Order-independent. */
|
|
98
|
+
export declare function contrastRatio(a: Oklch, b: Oklch): number;
|
|
99
|
+
/** The direction in which a colour's lightness must move to gain contrast. */
|
|
100
|
+
export declare function contrastDirection(foreground: Oklch, background: Oklch): 1 | -1;
|
|
101
|
+
export type ContrastRepair = {
|
|
102
|
+
color: Oklch;
|
|
103
|
+
ratio: number;
|
|
104
|
+
/** How far L moved, 0 when the input already cleared the floor. */
|
|
105
|
+
delta: number;
|
|
106
|
+
/** False when the floor could not be reached within `budget`. */
|
|
107
|
+
satisfied: boolean;
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Moves a colour's lightness until it clears a contrast floor, by the smallest
|
|
111
|
+
* step that works.
|
|
112
|
+
*
|
|
113
|
+
* A theme's status colours come from its author's palette, and a palette chosen
|
|
114
|
+
* for a terminal is not automatically legible as a UI accent: Solarized's yellow
|
|
115
|
+
* is the colour Solarized is famous for, and it is also nearly invisible on
|
|
116
|
+
* Solarized's own light background. The catalogue's answer is not to discard the
|
|
117
|
+
* colour or to accept the failure, but to keep the hue and chroma the author
|
|
118
|
+
* chose and move only the lightness, by the least amount that clears the floor.
|
|
119
|
+
*
|
|
120
|
+
* `budget` bounds that movement. Past it the colour is no longer the one the
|
|
121
|
+
* palette specifies, so the repair reports `satisfied: false` and the validator
|
|
122
|
+
* fails the theme instead of shipping a palette that quietly is not Solarized.
|
|
123
|
+
*/
|
|
124
|
+
export declare function repairContrast(foreground: Oklch, background: Oklch, minimum: number, budget?: number): ContrastRepair;
|
|
125
|
+
/**
|
|
126
|
+
* Interpolates two colours in OKLCH.
|
|
127
|
+
*
|
|
128
|
+
* Hue takes the shorter arc, so a blend from magenta (330°) to orange (30°) goes
|
|
129
|
+
* through red rather than the long way round through green. When either side is
|
|
130
|
+
* neutral its hue is meaningless, so the other side's hue is carried across
|
|
131
|
+
* instead of being interpolated toward an arbitrary zero.
|
|
132
|
+
*/
|
|
133
|
+
export declare function mix(a: Oklch, b: Oklch, amount: number): Oklch;
|
|
134
|
+
/** Shifts lightness by `delta`, keeping chroma and hue. Chroma is damped at the extremes. */
|
|
135
|
+
export declare function shiftLightness(color: Oklch, delta: number): Oklch;
|
|
136
|
+
/** Scales chroma, clamped to the maximum the hue can hold. */
|
|
137
|
+
export declare function scaleChroma(color: Oklch, factor: number): Oklch;
|
|
138
|
+
/** The perceptual distance between two colours, for deduplication and assertions. */
|
|
139
|
+
export declare function deltaEok(a: Oklch, b: Oklch): number;
|
|
140
|
+
export {};
|
|
141
|
+
//# sourceMappingURL=oklch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oklch.d.ts","sourceRoot":"","sources":["../src/oklch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,sFAAsF;AACtF,MAAM,MAAM,KAAK,GAAG;IAClB,2CAA2C;IAC3C,CAAC,EAAE,MAAM,CAAA;IACT,+BAA+B;IAC/B,CAAC,EAAE,MAAM,CAAA;IACT,8DAA8D;IAC9D,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAiBD,8DAA8D;AAC9D,KAAK,KAAK,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AA2BhD,eAAO,MAAM,YAAY,GAAI,aAAa,KAAK,KAAG,KAGjD,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,aAAa,KAAK,KAAG,KAMjD,CAAA;AAED,gEAAgE;AAChE,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,SAAO,GAAG,OAAO,CAK/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAa5C;AAID,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAiBzD;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAI/C;AAaD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAQ3D;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAG3D;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAKhD;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAGtD;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAKxD;AAOD,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAE9E;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAA;IACb,iEAAiE;IACjE,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,KAAK,EACjB,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,SAAO,GACZ,cAAc,CAqChB;AAED;;;;;;;GAOG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAqB7D;AAED,6FAA6F;AAC7F,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAOjE;AAED,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAE/D;AAED,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAInD"}
|
package/dist/oklch.js
ADDED
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The colour core.
|
|
3
|
+
*
|
|
4
|
+
* OKLCH is the canonical representation in this package, which means every value
|
|
5
|
+
* that enters the catalogue is converted to it and every value that leaves is
|
|
6
|
+
* derived from it. The reason is not fashion: OKLCH's lightness axis is
|
|
7
|
+
* perceptually uniform, so a surface ladder built by adding `0.035` to L produces
|
|
8
|
+
* rungs that *look* evenly spaced across every hue, and a contrast repair that
|
|
9
|
+
* moves L by a fixed amount changes the perceived brightness by a predictable
|
|
10
|
+
* amount. Neither holds in sRGB or HSL, where the same numeric step is a large
|
|
11
|
+
* change in yellow and an invisible one in blue.
|
|
12
|
+
*
|
|
13
|
+
* Two conversion directions are needed and they are not symmetric:
|
|
14
|
+
*
|
|
15
|
+
* - **In**, from the hex values upstream palettes publish. Lossless.
|
|
16
|
+
* - **Out**, to hex, for consumers that cannot express OKLCH — xterm.js reads
|
|
17
|
+
* hex, and older Shiki engines resolve hex. This direction can land outside
|
|
18
|
+
* sRGB, so it gamut-maps rather than clipping.
|
|
19
|
+
*
|
|
20
|
+
* Clipping a channel is what turns a carefully chosen out-of-gamut purple into a
|
|
21
|
+
* flat, over-bright magenta. The gamut mapping here reduces chroma at constant
|
|
22
|
+
* lightness and hue instead, which is the standard CSS Color 4 approach and keeps
|
|
23
|
+
* the colour recognisably the one that was asked for.
|
|
24
|
+
*/
|
|
25
|
+
const SRGB_TO_LINEAR = (channel) => channel <= 0.04045 ? channel / 12.92 : ((channel + 0.055) / 1.055) ** 2.4;
|
|
26
|
+
const LINEAR_TO_SRGB = (channel) => channel <= 0.0031308 ? channel * 12.92 : 1.055 * channel ** (1 / 2.4) - 0.055;
|
|
27
|
+
/** One sRGB channel as a two-digit hex pair. */
|
|
28
|
+
function hexChannel(value) {
|
|
29
|
+
return Math.round(Math.min(1, Math.max(0, LINEAR_TO_SRGB(value))) * 255)
|
|
30
|
+
.toString(16)
|
|
31
|
+
.padStart(2, '0');
|
|
32
|
+
}
|
|
33
|
+
function linearRgbToOklab({ r, g, b }) {
|
|
34
|
+
const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);
|
|
35
|
+
const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);
|
|
36
|
+
const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);
|
|
37
|
+
return {
|
|
38
|
+
l: 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,
|
|
39
|
+
a: 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,
|
|
40
|
+
b: 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function oklabToLinearRgb({ l, a, b }) {
|
|
44
|
+
const lp = l + 0.3963377774 * a + 0.2158037573 * b;
|
|
45
|
+
const mp = l - 0.1055613458 * a - 0.0638541728 * b;
|
|
46
|
+
const sp = l - 0.0894841775 * a - 1.291485548 * b;
|
|
47
|
+
const lc = lp ** 3;
|
|
48
|
+
const mc = mp ** 3;
|
|
49
|
+
const sc = sp ** 3;
|
|
50
|
+
return {
|
|
51
|
+
r: 4.0767416621 * lc - 3.3077115913 * mc + 0.2309699292 * sc,
|
|
52
|
+
g: -1.2684380046 * lc + 2.6097574011 * mc - 0.3413193965 * sc,
|
|
53
|
+
b: -0.0041960863 * lc - 0.7034186147 * mc + 1.707614701 * sc,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export const oklchToOklab = ({ l, c, h }) => {
|
|
57
|
+
const radians = (h * Math.PI) / 180;
|
|
58
|
+
return { l, a: c * Math.cos(radians), b: c * Math.sin(radians) };
|
|
59
|
+
};
|
|
60
|
+
export const oklabToOklch = ({ l, a, b }) => {
|
|
61
|
+
const c = Math.hypot(a, b);
|
|
62
|
+
// Hue is undefined for a neutral; report 0 rather than NaN so that a grey
|
|
63
|
+
// survives a round trip and can still be interpolated.
|
|
64
|
+
const h = c < 1e-6 ? 0 : ((Math.atan2(b, a) * 180) / Math.PI + 360) % 360;
|
|
65
|
+
return { l, c, h };
|
|
66
|
+
};
|
|
67
|
+
/** True when every linear channel sits inside the sRGB cube. */
|
|
68
|
+
export function inGamut(color, tolerance = 1e-4) {
|
|
69
|
+
const { r, g, b } = oklabToLinearRgb(oklchToOklab(color));
|
|
70
|
+
const within = (channel) => channel >= -tolerance && channel <= 1 + tolerance;
|
|
71
|
+
return within(r) && within(g) && within(b);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Brings a colour into sRGB by reducing chroma at constant lightness and hue.
|
|
75
|
+
*
|
|
76
|
+
* Reduction is a bisection because the sRGB boundary along a constant-hue line is
|
|
77
|
+
* not a linear function of chroma — a fixed number of decrements either stops
|
|
78
|
+
* short of the boundary (leaving a clipped colour) or overshoots it (desaturating
|
|
79
|
+
* far more than necessary). 24 iterations resolve chroma to well under one
|
|
80
|
+
* 8-bit-steps' worth of difference.
|
|
81
|
+
*/
|
|
82
|
+
export function gamutMap(color) {
|
|
83
|
+
const lightness = Math.min(1, Math.max(0, color.l));
|
|
84
|
+
const saturated = { ...color, l: lightness };
|
|
85
|
+
if (inGamut(saturated))
|
|
86
|
+
return saturated;
|
|
87
|
+
let low = 0;
|
|
88
|
+
let high = saturated.c;
|
|
89
|
+
for (let iteration = 0; iteration < 24; iteration += 1) {
|
|
90
|
+
const mid = (low + high) / 2;
|
|
91
|
+
if (inGamut({ ...saturated, c: mid }))
|
|
92
|
+
low = mid;
|
|
93
|
+
else
|
|
94
|
+
high = mid;
|
|
95
|
+
}
|
|
96
|
+
return { ...saturated, c: low };
|
|
97
|
+
}
|
|
98
|
+
const HEX_PATTERN = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
99
|
+
/** Parses `#rgb` and `#rrggbb`. Returns undefined rather than throwing. */
|
|
100
|
+
export function hexToOklch(hex) {
|
|
101
|
+
const match = HEX_PATTERN.exec(hex.trim());
|
|
102
|
+
if (!match)
|
|
103
|
+
return undefined;
|
|
104
|
+
const digits = match[1] ?? '';
|
|
105
|
+
const expanded = digits.length === 3
|
|
106
|
+
? digits
|
|
107
|
+
.split('')
|
|
108
|
+
.map((digit) => digit + digit)
|
|
109
|
+
.join('')
|
|
110
|
+
: digits;
|
|
111
|
+
const [r, g, b] = [0, 2, 4].map((offset) => SRGB_TO_LINEAR(Number.parseInt(expanded.slice(offset, offset + 2), 16) / 255));
|
|
112
|
+
return oklabToOklch(linearRgbToOklab({ r, g, b }));
|
|
113
|
+
}
|
|
114
|
+
/** Serialises to `#rrggbb` after gamut mapping. Always lower case. */
|
|
115
|
+
export function oklchToHex(color) {
|
|
116
|
+
const mapped = gamutMap(color);
|
|
117
|
+
const { r, g, b } = oklabToLinearRgb(oklchToOklab(mapped));
|
|
118
|
+
return `#${hexChannel(r)}${hexChannel(g)}${hexChannel(b)}`;
|
|
119
|
+
}
|
|
120
|
+
/** Reads one component, allowing a percentage scaled to the channel's own maximum. */
|
|
121
|
+
function readComponent(raw, scale) {
|
|
122
|
+
const text = raw ?? '0';
|
|
123
|
+
const value = Number.parseFloat(text);
|
|
124
|
+
if (Number.isNaN(value))
|
|
125
|
+
return Number.NaN;
|
|
126
|
+
return text.endsWith('%') ? (value / 100) * scale : value;
|
|
127
|
+
}
|
|
128
|
+
const OKLCH_PATTERN = /^oklch\(\s*([\d.]+%?)\s+([\d.]+%?)\s+([\d.]+)(?:deg)?\s*(?:\/\s*[\d.]+%?\s*)?\)$/i;
|
|
129
|
+
/**
|
|
130
|
+
* Parses an `oklch()` string.
|
|
131
|
+
*
|
|
132
|
+
* Alpha is accepted and discarded: every role in the catalogue is opaque, and a
|
|
133
|
+
* translucent value would silently break the contrast floors, which are defined
|
|
134
|
+
* for opaque colours.
|
|
135
|
+
*/
|
|
136
|
+
export function parseOklch(input) {
|
|
137
|
+
const match = OKLCH_PATTERN.exec(input.trim());
|
|
138
|
+
if (!match)
|
|
139
|
+
return undefined;
|
|
140
|
+
const l = readComponent(match[1], 1);
|
|
141
|
+
const c = readComponent(match[2], 0.4);
|
|
142
|
+
const h = Number.parseFloat(match[3] ?? '0');
|
|
143
|
+
if ([l, c, h].some(Number.isNaN))
|
|
144
|
+
return undefined;
|
|
145
|
+
return { l, c, h };
|
|
146
|
+
}
|
|
147
|
+
/** Accepts either notation, so adapters and fixtures can use whichever reads better. */
|
|
148
|
+
export function parseColor(input) {
|
|
149
|
+
const text = input.trim();
|
|
150
|
+
return text.toLowerCase().startsWith('oklch') ? parseOklch(text) : hexToOklch(text);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Serialises to the canonical `oklch(L C H)` form, rounded to the precision the
|
|
154
|
+
* catalogue is committed at.
|
|
155
|
+
*
|
|
156
|
+
* The rounding is part of the on-disk contract, not cosmetic: generated files are
|
|
157
|
+
* diffed in CI to prove the committed catalogue matches its sources, and a full
|
|
158
|
+
* float would make that diff unstable across platforms.
|
|
159
|
+
*/
|
|
160
|
+
export function formatOklch(color) {
|
|
161
|
+
const l = Number(color.l.toFixed(4));
|
|
162
|
+
const c = Number(color.c.toFixed(4));
|
|
163
|
+
const h = color.c < 1e-6 ? 0 : Number(color.h.toFixed(2));
|
|
164
|
+
return `oklch(${l} ${c} ${h})`;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* The colour as it will actually be written.
|
|
168
|
+
*
|
|
169
|
+
* Repairs must be measured against this rather than against their own working
|
|
170
|
+
* value. {@link formatOklch} rounds lightness to four decimals, and rounding can
|
|
171
|
+
* move a pairing from 4.5001:1 to 4.4998:1 — so a repair that converges on the
|
|
172
|
+
* exact floor and is then rounded ships a value that fails the floor it was
|
|
173
|
+
* computed to satisfy. Measuring the canonical form closes that gap by making the
|
|
174
|
+
* thing measured and the thing committed the same thing.
|
|
175
|
+
*/
|
|
176
|
+
export function canonical(color) {
|
|
177
|
+
return parseColor(formatOklch(color)) ?? color;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Relative luminance of an sRGB colour, per WCAG 2.1.
|
|
181
|
+
*
|
|
182
|
+
* Computed from linear-light channels, which is why this goes through OKLab
|
|
183
|
+
* rather than being read off `L`: OKLCH lightness is perceptual and WCAG's is
|
|
184
|
+
* not, and the two disagree most in the saturated blues and yellows where the
|
|
185
|
+
* contrast floors actually bite.
|
|
186
|
+
*/
|
|
187
|
+
export function relativeLuminance(color) {
|
|
188
|
+
const { r, g, b } = oklabToLinearRgb(oklchToOklab(gamutMap(color)));
|
|
189
|
+
return 0.2126 * unit(r) + 0.7152 * unit(g) + 0.0722 * unit(b);
|
|
190
|
+
}
|
|
191
|
+
/** The WCAG 2.1 contrast ratio, 1–21. Order-independent. */
|
|
192
|
+
export function contrastRatio(a, b) {
|
|
193
|
+
const la = relativeLuminance(a);
|
|
194
|
+
const lb = relativeLuminance(b);
|
|
195
|
+
const [lighter, darker] = la > lb ? [la, lb] : [lb, la];
|
|
196
|
+
return (lighter + 0.05) / (darker + 0.05);
|
|
197
|
+
}
|
|
198
|
+
/** Clamps a linear channel into 0–1. */
|
|
199
|
+
function unit(value) {
|
|
200
|
+
return Math.min(1, Math.max(0, value));
|
|
201
|
+
}
|
|
202
|
+
/** The direction in which a colour's lightness must move to gain contrast. */
|
|
203
|
+
export function contrastDirection(foreground, background) {
|
|
204
|
+
return foreground.l >= background.l ? 1 : -1;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Moves a colour's lightness until it clears a contrast floor, by the smallest
|
|
208
|
+
* step that works.
|
|
209
|
+
*
|
|
210
|
+
* A theme's status colours come from its author's palette, and a palette chosen
|
|
211
|
+
* for a terminal is not automatically legible as a UI accent: Solarized's yellow
|
|
212
|
+
* is the colour Solarized is famous for, and it is also nearly invisible on
|
|
213
|
+
* Solarized's own light background. The catalogue's answer is not to discard the
|
|
214
|
+
* colour or to accept the failure, but to keep the hue and chroma the author
|
|
215
|
+
* chose and move only the lightness, by the least amount that clears the floor.
|
|
216
|
+
*
|
|
217
|
+
* `budget` bounds that movement. Past it the colour is no longer the one the
|
|
218
|
+
* palette specifies, so the repair reports `satisfied: false` and the validator
|
|
219
|
+
* fails the theme instead of shipping a palette that quietly is not Solarized.
|
|
220
|
+
*/
|
|
221
|
+
export function repairContrast(foreground, background, minimum, budget = 0.22) {
|
|
222
|
+
const initial = contrastRatio(foreground, background);
|
|
223
|
+
if (initial >= minimum) {
|
|
224
|
+
return { color: foreground, ratio: initial, delta: 0, satisfied: true };
|
|
225
|
+
}
|
|
226
|
+
// Both directions are tried, nearest first. Moving away from the background's
|
|
227
|
+
// lightness is the usual answer, but when the colour is already near an end of the
|
|
228
|
+
// range there is no headroom in that direction — Solarized Light's cursor is a
|
|
229
|
+
// mid grey on a near-white canvas, and *lightening* it has 0.03 to work with while
|
|
230
|
+
// darkening it has the whole range.
|
|
231
|
+
const preferred = contrastDirection(foreground, background);
|
|
232
|
+
const step = 0.002;
|
|
233
|
+
const maximumSteps = Math.floor(budget / step);
|
|
234
|
+
for (let index = 1; index <= maximumSteps; index += 1) {
|
|
235
|
+
for (const direction of [preferred, -preferred]) {
|
|
236
|
+
const candidate = { ...foreground, l: foreground.l + direction * step * index };
|
|
237
|
+
if (candidate.l <= 0 || candidate.l >= 1)
|
|
238
|
+
continue;
|
|
239
|
+
const ratio = contrastRatio(candidate, background);
|
|
240
|
+
if (ratio >= minimum) {
|
|
241
|
+
return {
|
|
242
|
+
color: candidate,
|
|
243
|
+
ratio,
|
|
244
|
+
delta: Number((step * index).toFixed(4)),
|
|
245
|
+
satisfied: true,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
color: foreground,
|
|
252
|
+
ratio: initial,
|
|
253
|
+
delta: 0,
|
|
254
|
+
satisfied: false,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Interpolates two colours in OKLCH.
|
|
259
|
+
*
|
|
260
|
+
* Hue takes the shorter arc, so a blend from magenta (330°) to orange (30°) goes
|
|
261
|
+
* through red rather than the long way round through green. When either side is
|
|
262
|
+
* neutral its hue is meaningless, so the other side's hue is carried across
|
|
263
|
+
* instead of being interpolated toward an arbitrary zero.
|
|
264
|
+
*/
|
|
265
|
+
export function mix(a, b, amount) {
|
|
266
|
+
const t = Math.min(1, Math.max(0, amount));
|
|
267
|
+
const neutral = 1e-6;
|
|
268
|
+
const aChromatic = a.c > neutral;
|
|
269
|
+
const bChromatic = b.c > neutral;
|
|
270
|
+
let hue;
|
|
271
|
+
if (aChromatic && bChromatic) {
|
|
272
|
+
const delta = ((b.h - a.h + 540) % 360) - 180;
|
|
273
|
+
hue = (a.h + delta * t + 360) % 360;
|
|
274
|
+
}
|
|
275
|
+
else if (aChromatic) {
|
|
276
|
+
hue = a.h;
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
hue = b.h;
|
|
280
|
+
}
|
|
281
|
+
return {
|
|
282
|
+
l: a.l + (b.l - a.l) * t,
|
|
283
|
+
c: a.c + (b.c - a.c) * t,
|
|
284
|
+
h: hue,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
/** Shifts lightness by `delta`, keeping chroma and hue. Chroma is damped at the extremes. */
|
|
288
|
+
export function shiftLightness(color, delta) {
|
|
289
|
+
const l = Math.min(1, Math.max(0, color.l + delta));
|
|
290
|
+
// Chroma that was representable at the original lightness may not be at the new
|
|
291
|
+
// one — every hue's maximum chroma collapses toward the black and white ends.
|
|
292
|
+
// Damping before the gamut map keeps the hue from drifting as it is reduced.
|
|
293
|
+
const headroom = Math.min(1, 4 * Math.min(l, 1 - l) + 0.15);
|
|
294
|
+
return { l, c: color.c * headroom, h: color.h };
|
|
295
|
+
}
|
|
296
|
+
/** Scales chroma, clamped to the maximum the hue can hold. */
|
|
297
|
+
export function scaleChroma(color, factor) {
|
|
298
|
+
return { ...color, c: Math.max(0, Math.min(0.4, color.c * factor)) };
|
|
299
|
+
}
|
|
300
|
+
/** The perceptual distance between two colours, for deduplication and assertions. */
|
|
301
|
+
export function deltaEok(a, b) {
|
|
302
|
+
const first = oklchToOklab(a);
|
|
303
|
+
const second = oklchToOklab(b);
|
|
304
|
+
return Math.hypot(first.l - second.l, first.a - second.a, first.b - second.b);
|
|
305
|
+
}
|
|
306
|
+
//# sourceMappingURL=oklch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oklch.js","sourceRoot":"","sources":["../src/oklch.ts"],"names":[],"mappings":"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"}
|