@a_ng_d/utils-ui-color-palette 1.9.0 → 1.10.1

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.
Files changed (113) hide show
  1. package/README.md +82 -6
  2. package/dist/color-S7JZ1G0L.js.map +1 -1
  3. package/dist/formats/primitives/makeCompose.d.ts +4 -0
  4. package/dist/formats/primitives/makeCompose.d.ts.map +1 -0
  5. package/dist/formats/primitives/makeCssCustomProps.d.ts +5 -0
  6. package/dist/formats/primitives/makeCssCustomProps.d.ts.map +1 -0
  7. package/dist/formats/{makeCsv.d.ts → primitives/makeCsv.d.ts} +1 -2
  8. package/dist/formats/primitives/makeCsv.d.ts.map +1 -0
  9. package/dist/formats/primitives/makeDtcgTokens.d.ts +5 -0
  10. package/dist/formats/primitives/makeDtcgTokens.d.ts.map +1 -0
  11. package/dist/formats/primitives/makeLessVariables.d.ts +5 -0
  12. package/dist/formats/primitives/makeLessVariables.d.ts.map +1 -0
  13. package/dist/formats/{makeNativeTokens.d.ts → primitives/makeNativeTokens.d.ts} +1 -2
  14. package/dist/formats/primitives/makeNativeTokens.d.ts.map +1 -0
  15. package/dist/formats/{makeResources.d.ts → primitives/makeResources.d.ts} +1 -2
  16. package/dist/formats/primitives/makeResources.d.ts.map +1 -0
  17. package/dist/formats/primitives/makeScssVariables.d.ts +5 -0
  18. package/dist/formats/primitives/makeScssVariables.d.ts.map +1 -0
  19. package/dist/formats/{makeStyleDictionaryV3Tokens.d.ts → primitives/makeStyleDictionaryV3Tokens.d.ts} +1 -2
  20. package/dist/formats/primitives/makeStyleDictionaryV3Tokens.d.ts.map +1 -0
  21. package/dist/formats/primitives/makeSwiftUI.d.ts +4 -0
  22. package/dist/formats/primitives/makeSwiftUI.d.ts.map +1 -0
  23. package/dist/formats/{makeTailwindV3Config.d.ts → primitives/makeTailwindV3Config.d.ts} +1 -2
  24. package/dist/formats/primitives/makeTailwindV3Config.d.ts.map +1 -0
  25. package/dist/formats/{makeTailwindV4Config.d.ts → primitives/makeTailwindV4Config.d.ts} +1 -2
  26. package/dist/formats/primitives/makeTailwindV4Config.d.ts.map +1 -0
  27. package/dist/formats/primitives/makeUIKit.d.ts +4 -0
  28. package/dist/formats/primitives/makeUIKit.d.ts.map +1 -0
  29. package/dist/formats/{makeUniversalTokens.d.ts → primitives/makeUniversalTokens.d.ts} +1 -2
  30. package/dist/formats/primitives/makeUniversalTokens.d.ts.map +1 -0
  31. package/dist/formats/semantics/_helpers.d.ts +26 -0
  32. package/dist/formats/semantics/_helpers.d.ts.map +1 -0
  33. package/dist/formats/semantics/makeComposeSemantics.d.ts +5 -0
  34. package/dist/formats/semantics/makeComposeSemantics.d.ts.map +1 -0
  35. package/dist/formats/semantics/makeCssSemantics.d.ts +5 -0
  36. package/dist/formats/semantics/makeCssSemantics.d.ts.map +1 -0
  37. package/dist/formats/semantics/makeCsvSemantics.d.ts +5 -0
  38. package/dist/formats/semantics/makeCsvSemantics.d.ts.map +1 -0
  39. package/dist/formats/semantics/makeDtcgSemantics.d.ts +5 -0
  40. package/dist/formats/semantics/makeDtcgSemantics.d.ts.map +1 -0
  41. package/dist/formats/semantics/makeLessSemantics.d.ts +5 -0
  42. package/dist/formats/semantics/makeLessSemantics.d.ts.map +1 -0
  43. package/dist/formats/semantics/makeNativeSemantics.d.ts +5 -0
  44. package/dist/formats/semantics/makeNativeSemantics.d.ts.map +1 -0
  45. package/dist/formats/semantics/makeResourcesSemantics.d.ts +5 -0
  46. package/dist/formats/semantics/makeResourcesSemantics.d.ts.map +1 -0
  47. package/dist/formats/semantics/makeScssSemantics.d.ts +5 -0
  48. package/dist/formats/semantics/makeScssSemantics.d.ts.map +1 -0
  49. package/dist/formats/semantics/makeStyleDictionaryV3Semantics.d.ts +5 -0
  50. package/dist/formats/semantics/makeStyleDictionaryV3Semantics.d.ts.map +1 -0
  51. package/dist/formats/semantics/makeSwiftUISemantics.d.ts +5 -0
  52. package/dist/formats/semantics/makeSwiftUISemantics.d.ts.map +1 -0
  53. package/dist/formats/semantics/makeTailwindV3Semantics.d.ts +5 -0
  54. package/dist/formats/semantics/makeTailwindV3Semantics.d.ts.map +1 -0
  55. package/dist/formats/semantics/makeTailwindV4Semantics.d.ts +5 -0
  56. package/dist/formats/semantics/makeTailwindV4Semantics.d.ts.map +1 -0
  57. package/dist/formats/semantics/makeUIKitSemantics.d.ts +5 -0
  58. package/dist/formats/semantics/makeUIKitSemantics.d.ts.map +1 -0
  59. package/dist/formats/semantics/makeUniversalSemantics.d.ts +5 -0
  60. package/dist/formats/semantics/makeUniversalSemantics.d.ts.map +1 -0
  61. package/dist/index-Beb8qoyd.js.map +1 -1
  62. package/dist/index.d.ts +3 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +10 -8
  65. package/dist/index.js.map +1 -1
  66. package/dist/modules/code/code.d.ts +22 -16
  67. package/dist/modules/code/code.d.ts.map +1 -1
  68. package/dist/modules/code/code.js +1029 -552
  69. package/dist/modules/code/code.js.map +1 -1
  70. package/dist/modules/color/color.d.ts +0 -1
  71. package/dist/modules/color-harmony/color-harmony.d.ts +0 -1
  72. package/dist/modules/color-harmony/color-harmony.js.map +1 -1
  73. package/dist/modules/contrast/contrast.d.ts +0 -1
  74. package/dist/modules/contrast/contrast.js.map +1 -1
  75. package/dist/modules/data/data.d.ts +1 -2
  76. package/dist/modules/data/data.d.ts.map +1 -1
  77. package/dist/modules/data/data.js +99 -73
  78. package/dist/modules/data/data.js.map +1 -1
  79. package/dist/modules/dominant-colors/dominant-colors.d.ts +0 -1
  80. package/dist/modules/dominant-colors/dominant-colors.js.map +1 -1
  81. package/dist/modules/system/system.d.ts +17 -0
  82. package/dist/modules/system/system.d.ts.map +1 -0
  83. package/dist/modules/system/system.js +77 -0
  84. package/dist/modules/system/system.js.map +1 -0
  85. package/dist/types/code.types.d.ts +6 -0
  86. package/dist/types/code.types.d.ts.map +1 -0
  87. package/dist/types/configuration.types.d.ts +0 -1
  88. package/dist/types/data.types.d.ts +0 -1
  89. package/dist/types/model.types.d.ts +0 -1
  90. package/dist/types/system.types.d.ts +40 -0
  91. package/dist/types/system.types.d.ts.map +1 -0
  92. package/package.json +4 -3
  93. package/dist/formats/makeCompose.d.ts +0 -5
  94. package/dist/formats/makeCompose.d.ts.map +0 -1
  95. package/dist/formats/makeCssCustomProps.d.ts +0 -6
  96. package/dist/formats/makeCssCustomProps.d.ts.map +0 -1
  97. package/dist/formats/makeCsv.d.ts.map +0 -1
  98. package/dist/formats/makeDtcgTokens.d.ts +0 -6
  99. package/dist/formats/makeDtcgTokens.d.ts.map +0 -1
  100. package/dist/formats/makeLessVariables.d.ts +0 -6
  101. package/dist/formats/makeLessVariables.d.ts.map +0 -1
  102. package/dist/formats/makeNativeTokens.d.ts.map +0 -1
  103. package/dist/formats/makeResources.d.ts.map +0 -1
  104. package/dist/formats/makeScssVariables.d.ts +0 -6
  105. package/dist/formats/makeScssVariables.d.ts.map +0 -1
  106. package/dist/formats/makeStyleDictionaryV3Tokens.d.ts.map +0 -1
  107. package/dist/formats/makeSwiftUI.d.ts +0 -5
  108. package/dist/formats/makeSwiftUI.d.ts.map +0 -1
  109. package/dist/formats/makeTailwindV3Config.d.ts.map +0 -1
  110. package/dist/formats/makeTailwindV4Config.d.ts.map +0 -1
  111. package/dist/formats/makeUIKit.d.ts +0 -5
  112. package/dist/formats/makeUIKit.d.ts.map +0 -1
  113. package/dist/formats/makeUniversalTokens.d.ts.map +0 -1
package/README.md CHANGED
@@ -20,6 +20,7 @@ UI Color Palette is available for:
20
20
  - APCA contrast calculations
21
21
  - WCAG 2.1 compliance checking
22
22
  - Contrast ratio calculations between colors
23
+ - Pre-computed text contrast scores (light/dark) per shade
23
24
 
24
25
  - **Color Manipulation**:
25
26
 
@@ -41,6 +42,13 @@ UI Color Palette is available for:
41
42
  - Automatic color relationship calculations
42
43
  - Support for all major color harmony types
43
44
 
45
+ - **Color System & Semantic Tokens**:
46
+
47
+ - Build a semantic color system from a taxonomy schema and palette data
48
+ - Bind semantic tokens to primitive shades with optional per-theme overrides
49
+ - Exclude specific tokens from code generation via the `isExcluded` flag
50
+ - Generate semantic token files for CSS, SCSS, LESS, DTCG, Tailwind v3/v4, SwiftUI, UIKit, Compose, Native, Universal, CSV, Android Resources, and Style Dictionary v3
51
+
44
52
  - **Palette Generation**:
45
53
  - Create harmonious color schemes
46
54
  - Generate accessible color combinations
@@ -304,6 +312,74 @@ const data = new Data(config)
304
312
  // Generate palette data
305
313
  const paletteData = data.makePaletteData()
306
314
  const fullData = data.makePaletteFullData()
315
+
316
+ // Access pre-computed text contrast scores
317
+ paletteData.themes[0].colors[0].shades.forEach((shade) => {
318
+ if (shade.textContrast) {
319
+ // WCAG scores for light/dark text on this shade
320
+ console.log(shade.textContrast.wcag.light) // { ratio: 4.5, score: 'AA' }
321
+ console.log(shade.textContrast.wcag.dark) // { ratio: 12.6, score: 'AAA' }
322
+
323
+ // APCA scores for light/dark text on this shade
324
+ console.log(shade.textContrast.apca.light) // { lc: -60.2, recommendedUsage: 'BODY_TEXT' }
325
+ console.log(shade.textContrast.apca.dark) // { lc: 85.1, recommendedUsage: 'FLUENT_TEXT' }
326
+ }
327
+ })
328
+ ```
329
+
330
+ ### Color System & Semantic Tokens
331
+
332
+ ```typescript
333
+ import { System, Code } from '@a_ng_d/utils-ui-color-palette'
334
+
335
+ // Define a taxonomy schema (groups of semantic dimensions)
336
+ const system = new System({
337
+ paletteData,
338
+ system: {
339
+ schema: {
340
+ groups: [
341
+ {
342
+ id: 'role',
343
+ name: 'Role',
344
+ members: [
345
+ { id: 'brand', name: 'Brand' },
346
+ { id: 'neutral', name: 'Neutral' },
347
+ ],
348
+ },
349
+ {
350
+ id: 'prominence',
351
+ name: 'Prominence',
352
+ members: [
353
+ { id: 'default', name: 'Default' },
354
+ { id: 'subtle', name: 'Subtle' },
355
+ ],
356
+ },
357
+ ],
358
+ },
359
+ bindings: [
360
+ {
361
+ path: ['brand', 'default'],
362
+ description: 'Primary brand color',
363
+ ref: 'blue:500',
364
+ overrides: { dark: 'blue:400' }, // per-theme override
365
+ },
366
+ {
367
+ path: ['neutral', 'subtle'],
368
+ ref: 'gray:200',
369
+ isExcluded: true, // skip this token in code generation
370
+ },
371
+ ],
372
+ },
373
+ })
374
+
375
+ // Resolve the system data (tokens + refs)
376
+ const systemData = system.makeSystemData()
377
+
378
+ // Generate semantic token files alongside primitives
379
+ const code = new Code({ paletteData, systemData })
380
+ const files = code.makeCssFiles()
381
+ // files[0].content includes both --color-blue-500 primitives
382
+ // and --brand-default / --neutral-default semantic custom properties
307
383
  ```
308
384
 
309
385
  ## Testing
@@ -320,13 +396,13 @@ Current test coverage results:
320
396
 
321
397
  | File | % Stmts | % Branch | % Funcs | % Lines |
322
398
  | ----------------- | ------- | -------- | ------- | ------- |
323
- | **All files** | **94.29** | **85.63** | **92.3** | **94.29** |
399
+ | **All files** | **91.61** | **87.27** | **91.59** | **91.61** |
324
400
  | code | 100 | 100 | 100 | 100 |
325
- | color | 92.06 | 72.38 | 80.95 | 92.06 |
326
- | color-harmony | 100 | 96.42 | 100 | 100 |
327
- | contrast | 89 | 93.02 | 100 | 89 |
328
- | data | 92.69 | 84.74 | 100 | 92.69 |
329
- | dominant-colors | 100 | 100 | 100 | 100 |
401
+ | color | 93.54 | 77.51 | 83.33 | 93.54 |
402
+ | color-harmony | 100 | 96.66 | 100 | 100 |
403
+ | contrast | 89 | 93.33 | 100 | 89 |
404
+ | data | 93.48 | 89.74 | 100 | 93.48 |
405
+ | dominant-colors | 77.58 | 89.06 | 90.47 | 77.58 |
330
406
 
331
407
  To run coverage tests:
332
408
 
@@ -1 +1 @@
1
- {"version":3,"file":"color-S7JZ1G0L.js","sources":["../node_modules/hsluv/dist/hsluv.mjs","../src/modules/color/color.ts"],"sourcesContent":["export class Hsluv {\n constructor() {\n // RGB\n this.hex = '#000000';\n this.rgb_r = 0;\n this.rgb_g = 0;\n this.rgb_b = 0;\n // CIE XYZ\n this.xyz_x = 0;\n this.xyz_y = 0;\n this.xyz_z = 0;\n // CIE LUV\n this.luv_l = 0;\n this.luv_u = 0;\n this.luv_v = 0;\n // CIE LUV LCh\n this.lch_l = 0;\n this.lch_c = 0;\n this.lch_h = 0;\n // HSLuv\n this.hsluv_h = 0;\n this.hsluv_s = 0;\n this.hsluv_l = 0;\n // HPLuv\n this.hpluv_h = 0;\n this.hpluv_p = 0;\n this.hpluv_l = 0;\n // 6 lines in slope-intercept format: R < 0, R > 1, G < 0, G > 1, B < 0, B > 1\n this.r0s = 0;\n this.r0i = 0;\n this.r1s = 0;\n this.r1i = 0;\n this.g0s = 0;\n this.g0i = 0;\n this.g1s = 0;\n this.g1i = 0;\n this.b0s = 0;\n this.b0i = 0;\n this.b1s = 0;\n this.b1i = 0;\n }\n static fromLinear(c) {\n if (c <= 0.0031308) {\n return 12.92 * c;\n }\n else {\n return 1.055 * Math.pow(c, 1 / 2.4) - 0.055;\n }\n }\n static toLinear(c) {\n if (c > 0.04045) {\n return Math.pow((c + 0.055) / 1.055, 2.4);\n }\n else {\n return c / 12.92;\n }\n }\n static yToL(Y) {\n if (Y <= Hsluv.epsilon) {\n return Y / Hsluv.refY * Hsluv.kappa;\n }\n else {\n return 116 * Math.pow(Y / Hsluv.refY, 1 / 3) - 16;\n }\n }\n static lToY(L) {\n if (L <= 8) {\n return Hsluv.refY * L / Hsluv.kappa;\n }\n else {\n return Hsluv.refY * Math.pow((L + 16) / 116, 3);\n }\n }\n static rgbChannelToHex(chan) {\n const c = Math.round(chan * 255);\n const digit2 = c % 16;\n const digit1 = (c - digit2) / 16 | 0;\n return Hsluv.hexChars.charAt(digit1) + Hsluv.hexChars.charAt(digit2);\n }\n static hexToRgbChannel(hex, offset) {\n const digit1 = Hsluv.hexChars.indexOf(hex.charAt(offset));\n const digit2 = Hsluv.hexChars.indexOf(hex.charAt(offset + 1));\n const n = digit1 * 16 + digit2;\n return n / 255.0;\n }\n static distanceFromOriginAngle(slope, intercept, angle) {\n const d = intercept / (Math.sin(angle) - slope * Math.cos(angle));\n if (d < 0) {\n return Infinity;\n }\n else {\n return d;\n }\n }\n static distanceFromOrigin(slope, intercept) {\n return Math.abs(intercept) / Math.sqrt(Math.pow(slope, 2) + 1);\n }\n static min6(f1, f2, f3, f4, f5, f6) {\n return Math.min(f1, Math.min(f2, Math.min(f3, Math.min(f4, Math.min(f5, f6)))));\n }\n rgbToHex() {\n this.hex = \"#\";\n this.hex += Hsluv.rgbChannelToHex(this.rgb_r);\n this.hex += Hsluv.rgbChannelToHex(this.rgb_g);\n this.hex += Hsluv.rgbChannelToHex(this.rgb_b);\n }\n hexToRgb() {\n this.hex = this.hex.toLowerCase();\n this.rgb_r = Hsluv.hexToRgbChannel(this.hex, 1);\n this.rgb_g = Hsluv.hexToRgbChannel(this.hex, 3);\n this.rgb_b = Hsluv.hexToRgbChannel(this.hex, 5);\n }\n xyzToRgb() {\n this.rgb_r = Hsluv.fromLinear(Hsluv.m_r0 * this.xyz_x + Hsluv.m_r1 * this.xyz_y + Hsluv.m_r2 * this.xyz_z);\n this.rgb_g = Hsluv.fromLinear(Hsluv.m_g0 * this.xyz_x + Hsluv.m_g1 * this.xyz_y + Hsluv.m_g2 * this.xyz_z);\n this.rgb_b = Hsluv.fromLinear(Hsluv.m_b0 * this.xyz_x + Hsluv.m_b1 * this.xyz_y + Hsluv.m_b2 * this.xyz_z);\n }\n rgbToXyz() {\n const lr = Hsluv.toLinear(this.rgb_r);\n const lg = Hsluv.toLinear(this.rgb_g);\n const lb = Hsluv.toLinear(this.rgb_b);\n this.xyz_x = 0.41239079926595 * lr + 0.35758433938387 * lg + 0.18048078840183 * lb;\n this.xyz_y = 0.21263900587151 * lr + 0.71516867876775 * lg + 0.072192315360733 * lb;\n this.xyz_z = 0.019330818715591 * lr + 0.11919477979462 * lg + 0.95053215224966 * lb;\n }\n xyzToLuv() {\n const divider = this.xyz_x + 15 * this.xyz_y + 3 * this.xyz_z;\n let varU = 4 * this.xyz_x;\n let varV = 9 * this.xyz_y;\n if (divider !== 0) {\n varU /= divider;\n varV /= divider;\n }\n else {\n varU = NaN;\n varV = NaN;\n }\n this.luv_l = Hsluv.yToL(this.xyz_y);\n if (this.luv_l === 0) {\n this.luv_u = 0;\n this.luv_v = 0;\n }\n else {\n this.luv_u = 13 * this.luv_l * (varU - Hsluv.refU);\n this.luv_v = 13 * this.luv_l * (varV - Hsluv.refV);\n }\n }\n luvToXyz() {\n if (this.luv_l === 0) {\n this.xyz_x = 0;\n this.xyz_y = 0;\n this.xyz_z = 0;\n return;\n }\n const varU = this.luv_u / (13 * this.luv_l) + Hsluv.refU;\n const varV = this.luv_v / (13 * this.luv_l) + Hsluv.refV;\n this.xyz_y = Hsluv.lToY(this.luv_l);\n this.xyz_x = 0 - 9 * this.xyz_y * varU / ((varU - 4) * varV - varU * varV);\n this.xyz_z = (9 * this.xyz_y - 15 * varV * this.xyz_y - varV * this.xyz_x) / (3 * varV);\n }\n luvToLch() {\n this.lch_l = this.luv_l;\n this.lch_c = Math.sqrt(this.luv_u * this.luv_u + this.luv_v * this.luv_v);\n if (this.lch_c < 0.00000001) {\n this.lch_h = 0;\n }\n else {\n const hrad = Math.atan2(this.luv_v, this.luv_u);\n this.lch_h = hrad * 180.0 / Math.PI;\n if (this.lch_h < 0) {\n this.lch_h = 360 + this.lch_h;\n }\n }\n }\n lchToLuv() {\n const hrad = this.lch_h / 180.0 * Math.PI;\n this.luv_l = this.lch_l;\n this.luv_u = Math.cos(hrad) * this.lch_c;\n this.luv_v = Math.sin(hrad) * this.lch_c;\n }\n calculateBoundingLines(l) {\n const sub1 = Math.pow(l + 16, 3) / 1560896;\n const sub2 = sub1 > Hsluv.epsilon ? sub1 : l / Hsluv.kappa;\n const s1r = sub2 * (284517 * Hsluv.m_r0 - 94839 * Hsluv.m_r2);\n const s2r = sub2 * (838422 * Hsluv.m_r2 + 769860 * Hsluv.m_r1 + 731718 * Hsluv.m_r0);\n const s3r = sub2 * (632260 * Hsluv.m_r2 - 126452 * Hsluv.m_r1);\n const s1g = sub2 * (284517 * Hsluv.m_g0 - 94839 * Hsluv.m_g2);\n const s2g = sub2 * (838422 * Hsluv.m_g2 + 769860 * Hsluv.m_g1 + 731718 * Hsluv.m_g0);\n const s3g = sub2 * (632260 * Hsluv.m_g2 - 126452 * Hsluv.m_g1);\n const s1b = sub2 * (284517 * Hsluv.m_b0 - 94839 * Hsluv.m_b2);\n const s2b = sub2 * (838422 * Hsluv.m_b2 + 769860 * Hsluv.m_b1 + 731718 * Hsluv.m_b0);\n const s3b = sub2 * (632260 * Hsluv.m_b2 - 126452 * Hsluv.m_b1);\n this.r0s = s1r / s3r;\n this.r0i = s2r * l / s3r;\n this.r1s = s1r / (s3r + 126452);\n this.r1i = (s2r - 769860) * l / (s3r + 126452);\n this.g0s = s1g / s3g;\n this.g0i = s2g * l / s3g;\n this.g1s = s1g / (s3g + 126452);\n this.g1i = (s2g - 769860) * l / (s3g + 126452);\n this.b0s = s1b / s3b;\n this.b0i = s2b * l / s3b;\n this.b1s = s1b / (s3b + 126452);\n this.b1i = (s2b - 769860) * l / (s3b + 126452);\n }\n calcMaxChromaHpluv() {\n const r0 = Hsluv.distanceFromOrigin(this.r0s, this.r0i);\n const r1 = Hsluv.distanceFromOrigin(this.r1s, this.r1i);\n const g0 = Hsluv.distanceFromOrigin(this.g0s, this.g0i);\n const g1 = Hsluv.distanceFromOrigin(this.g1s, this.g1i);\n const b0 = Hsluv.distanceFromOrigin(this.b0s, this.b0i);\n const b1 = Hsluv.distanceFromOrigin(this.b1s, this.b1i);\n return Hsluv.min6(r0, r1, g0, g1, b0, b1);\n }\n calcMaxChromaHsluv(h) {\n const hueRad = h / 360 * Math.PI * 2;\n const r0 = Hsluv.distanceFromOriginAngle(this.r0s, this.r0i, hueRad);\n const r1 = Hsluv.distanceFromOriginAngle(this.r1s, this.r1i, hueRad);\n const g0 = Hsluv.distanceFromOriginAngle(this.g0s, this.g0i, hueRad);\n const g1 = Hsluv.distanceFromOriginAngle(this.g1s, this.g1i, hueRad);\n const b0 = Hsluv.distanceFromOriginAngle(this.b0s, this.b0i, hueRad);\n const b1 = Hsluv.distanceFromOriginAngle(this.b1s, this.b1i, hueRad);\n return Hsluv.min6(r0, r1, g0, g1, b0, b1);\n }\n hsluvToLch() {\n if (this.hsluv_l > 99.9999999) {\n this.lch_l = 100;\n this.lch_c = 0;\n }\n else if (this.hsluv_l < 0.00000001) {\n this.lch_l = 0;\n this.lch_c = 0;\n }\n else {\n this.lch_l = this.hsluv_l;\n this.calculateBoundingLines(this.hsluv_l);\n const max = this.calcMaxChromaHsluv(this.hsluv_h);\n this.lch_c = max / 100 * this.hsluv_s;\n }\n this.lch_h = this.hsluv_h;\n }\n lchToHsluv() {\n if (this.lch_l > 99.9999999) {\n this.hsluv_s = 0;\n this.hsluv_l = 100;\n }\n else if (this.lch_l < 0.00000001) {\n this.hsluv_s = 0;\n this.hsluv_l = 0;\n }\n else {\n this.calculateBoundingLines(this.lch_l);\n const max = this.calcMaxChromaHsluv(this.lch_h);\n this.hsluv_s = this.lch_c / max * 100;\n this.hsluv_l = this.lch_l;\n }\n this.hsluv_h = this.lch_h;\n }\n hpluvToLch() {\n if (this.hpluv_l > 99.9999999) {\n this.lch_l = 100;\n this.lch_c = 0;\n }\n else if (this.hpluv_l < 0.00000001) {\n this.lch_l = 0;\n this.lch_c = 0;\n }\n else {\n this.lch_l = this.hpluv_l;\n this.calculateBoundingLines(this.hpluv_l);\n const max = this.calcMaxChromaHpluv();\n this.lch_c = max / 100 * this.hpluv_p;\n }\n this.lch_h = this.hpluv_h;\n }\n lchToHpluv() {\n if (this.lch_l > 99.9999999) {\n this.hpluv_p = 0;\n this.hpluv_l = 100;\n }\n else if (this.lch_l < 0.00000001) {\n this.hpluv_p = 0;\n this.hpluv_l = 0;\n }\n else {\n this.calculateBoundingLines(this.lch_l);\n const max = this.calcMaxChromaHpluv();\n this.hpluv_p = this.lch_c / max * 100;\n this.hpluv_l = this.lch_l;\n }\n this.hpluv_h = this.lch_h;\n }\n hsluvToRgb() {\n this.hsluvToLch();\n this.lchToLuv();\n this.luvToXyz();\n this.xyzToRgb();\n }\n hpluvToRgb() {\n this.hpluvToLch();\n this.lchToLuv();\n this.luvToXyz();\n this.xyzToRgb();\n }\n hsluvToHex() {\n this.hsluvToRgb();\n this.rgbToHex();\n }\n hpluvToHex() {\n this.hpluvToRgb();\n this.rgbToHex();\n }\n rgbToHsluv() {\n this.rgbToXyz();\n this.xyzToLuv();\n this.luvToLch();\n this.lchToHpluv();\n this.lchToHsluv();\n }\n rgbToHpluv() {\n this.rgbToXyz();\n this.xyzToLuv();\n this.luvToLch();\n this.lchToHpluv();\n this.lchToHpluv();\n }\n hexToHsluv() {\n this.hexToRgb();\n this.rgbToHsluv();\n }\n hexToHpluv() {\n this.hexToRgb();\n this.rgbToHpluv();\n }\n}\nHsluv.hexChars = \"0123456789abcdef\";\nHsluv.refY = 1.0;\nHsluv.refU = 0.19783000664283;\nHsluv.refV = 0.46831999493879;\nHsluv.kappa = 903.2962962;\nHsluv.epsilon = 0.0088564516;\nHsluv.m_r0 = 3.240969941904521;\nHsluv.m_r1 = -1.537383177570093;\nHsluv.m_r2 = -0.498610760293;\nHsluv.m_g0 = -0.96924363628087;\nHsluv.m_g1 = 1.87596750150772;\nHsluv.m_g2 = 0.041555057407175;\nHsluv.m_b0 = 0.055630079696993;\nHsluv.m_b1 = -0.20397695888897;\nHsluv.m_b2 = 1.056971514242878;\n","import { Hsluv } from 'hsluv'\nimport chroma from 'chroma-js'\nimport { ColorFormat } from '@tps/model.types'\nimport {\n AlgorithmVersionConfiguration,\n VisionSimulationModeConfiguration,\n} from '@tps/configuration.types'\nimport { Channel, ChannelWithAlpha, HexModel } from '@tps/color.types'\n\nconst colorBlindMatrices = {\n PROTANOPIA: [\n [0.567, 0.433, 0],\n [0.558, 0.442, 0],\n [0, 0.242, 0.758],\n ],\n PROTANOMALY: [\n [0.817, 0.183, 0],\n [0.333, 0.667, 0],\n [0, 0.125, 0.875],\n ],\n DEUTERANOPIA: [\n [0.625, 0.375, 0],\n [0.7, 0.3, 0],\n [0, 0.3, 0.7],\n ],\n DEUTERANOMALY: [\n [0.8, 0.2, 0],\n [0.258, 0.742, 0],\n [0, 0.142, 0.858],\n ],\n TRITANOPIA: [\n [0.95, 0.05, 0],\n [0, 0.433, 0.567],\n [0, 0.475, 0.525],\n ],\n TRITANOMALY: [\n [0.967, 0.033, 0],\n [0, 0.733, 0.267],\n [0, 0.183, 0.817],\n ],\n ACHROMATOPSIA: [\n [0.299, 0.587, 0.114],\n [0.299, 0.587, 0.114],\n [0.299, 0.587, 0.114],\n ],\n ACHROMATOMALY: [\n [0.618, 0.32, 0.062],\n [0.163, 0.775, 0.062],\n [0.163, 0.32, 0.516],\n ],\n}\n\nconst applyColorMatrix = (color: Channel, matrix: number[][]): Channel => {\n const [r, g, b] = color\n const [m1, m2, m3] = matrix\n\n return [\n Math.round(r * m1[0] + g * m1[1] + b * m1[2]),\n Math.round(r * m2[0] + g * m2[1] + b * m2[2]),\n Math.round(r * m3[0] + g * m3[1] + b * m3[2]),\n ]\n}\n\nconst rgbToCmyk = (\n r: number,\n g: number,\n b: number\n): [number, number, number, number] => {\n const r1 = r / 255,\n g1 = g / 255,\n b1 = b / 255\n const k = 1 - Math.max(r1, g1, b1)\n\n if (k === 1) return [0, 0, 0, 1]\n\n return [\n (1 - r1 - k) / (1 - k),\n (1 - g1 - k) / (1 - k),\n (1 - b1 - k) / (1 - k),\n k,\n ]\n}\n\nconst cmykToRgb = (\n c: number,\n m: number,\n y: number,\n k: number\n): Channel => [\n Math.round(255 * (1 - c) * (1 - k)),\n Math.round(255 * (1 - m) * (1 - k)),\n Math.round(255 * (1 - y) * (1 - k)),\n]\n\nexport default class Color {\n private render: 'HEX' | 'RGB'\n private sourceColor: Channel\n private lightness: number\n private alpha: number\n private hueShifting: number\n private chromaShifting: number\n private algorithmVersion: AlgorithmVersionConfiguration\n private visionSimulationMode: VisionSimulationModeConfiguration\n\n constructor({\n render = 'HEX',\n sourceColor = [0, 0, 0],\n lightness = parseFloat((chroma(sourceColor).luminance() * 100).toFixed(1)),\n alpha = 1,\n hueShifting = 0,\n chromaShifting = 100,\n algorithmVersion = 'v3',\n visionSimulationMode = 'NONE',\n }: {\n render?: 'HEX' | 'RGB'\n sourceColor?: Channel\n lightness?: number\n alpha?: number\n hueShifting?: number\n chromaShifting?: number\n algorithmVersion?: AlgorithmVersionConfiguration\n visionSimulationMode?: VisionSimulationModeConfiguration\n }) {\n this.render = render\n this.sourceColor = sourceColor\n this.lightness = lightness\n this.alpha = alpha\n this.hueShifting = hueShifting\n this.chromaShifting = chromaShifting\n this.algorithmVersion = algorithmVersion\n this.visionSimulationMode = visionSimulationMode\n }\n\n adjustHue = (hue: number): number => {\n if (hue + this.hueShifting < 0) return hue + this.hueShifting + 360\n if (hue + this.hueShifting > 360) return hue + this.hueShifting - 360\n\n return hue + this.hueShifting\n }\n\n adjustChroma = (chroma: number): number => {\n if (this.algorithmVersion === 'v1') return chroma\n if (this.algorithmVersion === 'v2')\n return Math.sin((this.lightness / 100) * Math.PI) * chroma\n if (this.algorithmVersion === 'v3') {\n const lightnessFactor = this.lightness / 100\n const sinComponent = Math.sin(lightnessFactor * Math.PI)\n const tanhComponent = Math.tanh(lightnessFactor * Math.PI)\n const weightedComponent = sinComponent * 0.5 + tanhComponent * 0.5\n const smoothedComponent = Math.pow(weightedComponent, 0.5)\n\n return smoothedComponent * chroma\n }\n\n return chroma\n }\n\n setColor = (): ColorFormat<typeof this.render> => {\n if (this.render === 'HEX')\n return this.simulateColorBlindHex(this.sourceColor)\n\n return this.simulateColorBlindRgb(this.sourceColor)\n }\n\n setColorWithAlpha = (): ColorFormat<typeof this.render> => {\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(this.sourceColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(this.sourceColor), this.alpha]\n }\n\n lch = (): ColorFormat<typeof this.render> => {\n const lch = chroma(this.sourceColor).lch(),\n newColor = chroma\n .lch(\n this.lightness,\n this.adjustChroma(lch[1] * (this.chromaShifting / 100)),\n this.adjustHue(lch[2])\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n lcha = (): ColorFormat<typeof this.render> => {\n const lch = chroma(this.sourceColor).lch(),\n newColor = chroma\n .lch(\n lch[0],\n this.adjustChroma(lch[1] * (this.chromaShifting / 100)),\n this.adjustHue(lch[2])\n )\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n oklch = (): ColorFormat<typeof this.render> => {\n const oklch = chroma(this.sourceColor).oklch(),\n newColor = chroma\n .oklch(\n this.lightness / 100,\n this.adjustChroma(oklch[1] * (this.chromaShifting / 100)),\n this.adjustHue(oklch[2])\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n oklcha = (): ColorFormat<typeof this.render> => {\n const oklch = chroma(this.sourceColor).oklch(),\n newColor = chroma\n .oklch(\n oklch[0],\n this.adjustChroma(oklch[1] * (this.chromaShifting / 100)),\n this.adjustHue(oklch[2])\n )\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n lab = (): ColorFormat<typeof this.render> => {\n const labA = chroma(this.sourceColor).get('lab.a'),\n labB = chroma(this.sourceColor).get('lab.b'),\n chr = Math.sqrt(labA ** 2 + labB ** 2) * (this.chromaShifting / 100)\n let h = Math.atan(labB / labA) + this.hueShifting * (Math.PI / 180)\n\n if (h > Math.PI) h = Math.PI\n else if (h < -Math.PI) h = Math.PI\n\n let newLabA = chr * Math.cos(h),\n newLabB = chr * Math.sin(h)\n\n if (Math.sign(labA) === -1 && Math.sign(labB) === 1) {\n newLabA *= -1\n newLabB *= -1\n }\n if (Math.sign(labA) === -1 && Math.sign(labB) === -1) {\n newLabA *= -1\n newLabB *= -1\n }\n\n const newColor = chroma\n .lab(\n this.lightness,\n this.adjustChroma(newLabA),\n this.adjustChroma(newLabB)\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n laba = (): ColorFormat<typeof this.render> => {\n const labA = chroma(this.sourceColor).get('lab.a'),\n labB = chroma(this.sourceColor).get('lab.b'),\n labL = chroma(this.sourceColor).get('lab.l'),\n chr = Math.sqrt(labA ** 2 + labB ** 2) * (this.chromaShifting / 100)\n let h = Math.atan(labB / labA) + this.hueShifting * (Math.PI / 180)\n\n if (h > Math.PI) h = Math.PI\n else if (h < -Math.PI) h = Math.PI\n\n let newLabA = chr * Math.cos(h),\n newLabB = chr * Math.sin(h)\n\n if (Math.sign(labA) === -1 && Math.sign(labB) === 1) {\n newLabA *= -1\n newLabB *= -1\n }\n if (Math.sign(labA) === -1 && Math.sign(labB) === -1) {\n newLabA *= -1\n newLabB *= -1\n }\n\n const newColor = chroma\n .lab(labL, this.adjustChroma(newLabA), this.adjustChroma(newLabB))\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n oklab = (): ColorFormat<typeof this.render> => {\n const labA = chroma(this.sourceColor).get('oklab.a'),\n labB = chroma(this.sourceColor).get('oklab.b'),\n chr = Math.sqrt(labA ** 2 + labB ** 2) * (this.chromaShifting / 100)\n let h = Math.atan(labB / labA) + this.hueShifting * (Math.PI / 180)\n\n if (h > Math.PI) h = Math.PI\n else if (h < -Math.PI) h = Math.PI\n\n let newLabA = chr * Math.cos(h),\n newLabB = chr * Math.sin(h)\n\n if (Math.sign(labA) === -1 && Math.sign(labB) === 1) {\n newLabA *= -1\n newLabB *= -1\n }\n if (Math.sign(labA) === -1 && Math.sign(labB) === -1) {\n newLabA *= -1\n newLabB *= -1\n }\n\n if (Number.isNaN(newLabA)) newLabA = 0\n if (Number.isNaN(newLabB)) newLabB = 0\n\n const newColor = chroma\n .oklab(\n this.lightness / 100,\n this.adjustChroma(newLabA),\n this.adjustChroma(newLabB)\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n oklaba = (): ColorFormat<typeof this.render> => {\n const labA = chroma(this.sourceColor).get('oklab.a'),\n labB = chroma(this.sourceColor).get('oklab.b'),\n labL = chroma(this.sourceColor).get('oklab.l'),\n chr = Math.sqrt(labA ** 2 + labB ** 2) * (this.chromaShifting / 100)\n let h = Math.atan(labB / labA) + this.hueShifting * (Math.PI / 180)\n\n if (h > Math.PI) h = Math.PI\n else if (h < -Math.PI) h = Math.PI\n\n let newLabA = chr * Math.cos(h),\n newLabB = chr * Math.sin(h)\n\n if (Math.sign(labA) === -1 && Math.sign(labB) === 1) {\n newLabA *= -1\n newLabB *= -1\n }\n if (Math.sign(labA) === -1 && Math.sign(labB) === -1) {\n newLabA *= -1\n newLabB *= -1\n }\n\n if (Number.isNaN(newLabA)) newLabA = 0\n if (Number.isNaN(newLabB)) newLabB = 0\n\n const newColor = chroma\n .oklab(labL, this.adjustChroma(newLabA), this.adjustChroma(newLabB))\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n hsl = (): ColorFormat<typeof this.render> => {\n const hsl = chroma(this.sourceColor).hsl(),\n newColor = chroma\n .hsl(\n this.adjustHue(hsl[0]),\n this.adjustChroma(hsl[1] * (this.chromaShifting / 100)),\n this.lightness / 100\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n hsla = (): ColorFormat<typeof this.render> => {\n const hsl = chroma(this.sourceColor).hsl(),\n newColor = chroma\n .hsl(\n this.adjustHue(hsl[0]),\n this.adjustChroma(hsl[1] * (this.chromaShifting / 100)),\n hsl[2]\n )\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n hsluv = (): ColorFormat<typeof this.render> => {\n const hsluv = new Hsluv()\n\n hsluv.rgb_r = this.sourceColor[0] / 255\n hsluv.rgb_g = this.sourceColor[1] / 255\n hsluv.rgb_b = this.sourceColor[2] / 255\n\n hsluv.rgbToHsluv()\n\n hsluv.hsluv_l = this.lightness\n hsluv.hsluv_s = this.adjustChroma(\n hsluv.hsluv_s * (this.chromaShifting / 100)\n )\n hsluv.hsluv_h = this.adjustHue(hsluv.hsluv_h)\n\n if (Number.isNaN(hsluv.hsluv_s)) hsluv.hsluv_s = 0\n if (Number.isNaN(hsluv.hsluv_h)) hsluv.hsluv_h = 0\n\n hsluv.hsluvToRgb()\n\n const newColor: Channel = [\n hsluv.rgb_r * 255,\n hsluv.rgb_g * 255,\n hsluv.rgb_b * 255,\n ]\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n hsluva = (): ColorFormat<typeof this.render> => {\n const hsluv = new Hsluv()\n\n hsluv.rgb_r = this.sourceColor[0] / 255\n hsluv.rgb_g = this.sourceColor[1] / 255\n hsluv.rgb_b = this.sourceColor[2] / 255\n\n hsluv.rgbToHsluv()\n\n hsluv.hsluv_s = this.adjustChroma(\n hsluv.hsluv_s * (this.chromaShifting / 100)\n )\n hsluv.hsluv_h = this.adjustHue(hsluv.hsluv_h)\n\n if (Number.isNaN(hsluv.hsluv_s)) hsluv.hsluv_s = 0\n if (Number.isNaN(hsluv.hsluv_h)) hsluv.hsluv_h = 0\n\n hsluv.hsluvToRgb()\n\n const newColor: Channel = [\n hsluv.rgb_r * 255,\n hsluv.rgb_g * 255,\n hsluv.rgb_b * 255,\n ]\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n hsv = (): ColorFormat<typeof this.render> => {\n const hsv = chroma(this.sourceColor).hsv(),\n newColor = chroma\n .hsv(\n this.adjustHue(Number.isNaN(hsv[0]) ? 0 : hsv[0]),\n this.adjustChroma(hsv[1] * (this.chromaShifting / 100)),\n this.lightness / 100\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n hsva = (): ColorFormat<typeof this.render> => {\n const hsv = chroma(this.sourceColor).hsv(),\n newColor = chroma\n .hsv(\n this.adjustHue(Number.isNaN(hsv[0]) ? 0 : hsv[0]),\n this.adjustChroma(hsv[1] * (this.chromaShifting / 100)),\n hsv[2]\n )\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n cmyk = (): ColorFormat<typeof this.render> => {\n const hsl = chroma(this.sourceColor).hsl()\n const [r, g, b] = chroma\n .hsl(\n this.adjustHue(Number.isNaN(hsl[0]) ? 0 : hsl[0]),\n hsl[1],\n hsl[2]\n )\n .rgb()\n\n const [c, m, y] = rgbToCmyk(r, g, b)\n const adjustedC = Math.min(\n 1,\n Math.max(0, this.adjustChroma(c * (this.chromaShifting / 100)))\n )\n const adjustedM = Math.min(\n 1,\n Math.max(0, this.adjustChroma(m * (this.chromaShifting / 100)))\n )\n const adjustedY = Math.min(\n 1,\n Math.max(0, this.adjustChroma(y * (this.chromaShifting / 100)))\n )\n const adjustedK = Math.min(1, Math.max(0, 1 - this.lightness / 100))\n\n const newColor = cmykToRgb(adjustedC, adjustedM, adjustedY, adjustedK)\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n cmyka = (): ColorFormat<typeof this.render> => {\n const hsl = chroma(this.sourceColor).hsl()\n const [r, g, b] = chroma\n .hsl(\n this.adjustHue(Number.isNaN(hsl[0]) ? 0 : hsl[0]),\n hsl[1],\n hsl[2]\n )\n .rgb()\n\n const [c, m, y, k] = rgbToCmyk(r, g, b)\n const adjustedC = Math.min(\n 1,\n Math.max(0, this.adjustChroma(c * (this.chromaShifting / 100)))\n )\n const adjustedM = Math.min(\n 1,\n Math.max(0, this.adjustChroma(m * (this.chromaShifting / 100)))\n )\n const adjustedY = Math.min(\n 1,\n Math.max(0, this.adjustChroma(y * (this.chromaShifting / 100)))\n )\n\n const newColor = cmykToRgb(adjustedC, adjustedM, adjustedY, k)\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n getHsluv = (): Channel => {\n const hsluv = new Hsluv()\n hsluv.rgb_r = this.sourceColor[0] / 255\n hsluv.rgb_g = this.sourceColor[1] / 255\n hsluv.rgb_b = this.sourceColor[2] / 255\n hsluv.rgbToHsluv()\n\n return [hsluv.hsluv_h, hsluv.hsluv_s, hsluv.hsluv_l]\n }\n\n simulateColorBlindHex = (color: Channel): HexModel => {\n const actions: {\n [action: string]: () => void\n } = {\n NONE: () => chroma(color).hex(),\n PROTANOMALY: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.PROTANOMALY\n )\n return chroma(transformed).hex()\n },\n PROTANOPIA: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.PROTANOPIA\n )\n return chroma(transformed).hex()\n },\n DEUTERANOMALY: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.DEUTERANOMALY\n )\n return chroma(transformed).hex()\n },\n DEUTERANOPIA: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.DEUTERANOPIA\n )\n return chroma(transformed).hex()\n },\n TRITANOMALY: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.TRITANOMALY\n )\n return chroma(transformed).hex()\n },\n TRITANOPIA: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.TRITANOPIA\n )\n return chroma(transformed).hex()\n },\n ACHROMATOMALY: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.ACHROMATOMALY\n )\n return chroma(transformed).hex()\n },\n ACHROMATOPSIA: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.ACHROMATOPSIA\n )\n return chroma(transformed).hex()\n },\n }\n\n const result = actions[this.visionSimulationMode]?.()\n return result !== undefined ? result : '#000000'\n }\n\n simulateColorBlindRgb = (color: Channel): Channel => {\n const actions: {\n [action: string]: () => void\n } = {\n NONE: () => chroma(color).rgb(),\n PROTANOMALY: () =>\n applyColorMatrix(color, colorBlindMatrices.PROTANOMALY),\n PROTANOPIA: () => applyColorMatrix(color, colorBlindMatrices.PROTANOPIA),\n DEUTERANOMALY: () =>\n applyColorMatrix(color, colorBlindMatrices.DEUTERANOMALY),\n DEUTERANOPIA: () =>\n applyColorMatrix(color, colorBlindMatrices.DEUTERANOPIA),\n TRITANOMALY: () =>\n applyColorMatrix(color, colorBlindMatrices.TRITANOMALY),\n TRITANOPIA: () => applyColorMatrix(color, colorBlindMatrices.TRITANOPIA),\n ACHROMATOMALY: () =>\n applyColorMatrix(color, colorBlindMatrices.ACHROMATOMALY),\n ACHROMATOPSIA: () =>\n applyColorMatrix(color, colorBlindMatrices.ACHROMATOPSIA),\n }\n\n const result = actions[this.visionSimulationMode]?.()\n return result !== undefined ? result : [0, 0, 0]\n }\n\n mixColorsRgb = (\n colorA: ChannelWithAlpha,\n colorB: ChannelWithAlpha\n ): Channel => {\n const [r1, g1, b1, a1] = colorA\n const [r2, g2, b2, a2] = colorB\n\n if (a1 === 1) return [r1, g1, b1]\n if (a1 === 0) return [r2, g2, b2]\n\n const alpha = a1 + a2 * (1 - a1)\n const r = Math.min(\n 255,\n Math.max(0, Math.round((r1 * a1 + r2 * a2 * (1 - a1)) / alpha))\n )\n const g = Math.min(\n 255,\n Math.max(0, Math.round((g1 * a1 + g2 * a2 * (1 - a1)) / alpha))\n )\n const b = Math.min(\n 255,\n Math.max(0, Math.round((b1 * a1 + b2 * a2 * (1 - a1)) / alpha))\n )\n\n return this.simulateColorBlindRgb([r, g, b])\n }\n\n mixColorsHex = (colorA: HexModel, colorB: HexModel): HexModel => {\n const hexRegex = /^#([0-9A-Fa-f]{3}){1,2}([0-9A-Fa-f]{2})?$/\n if (!hexRegex.test(colorA)) return colorA\n if (!hexRegex.test(colorB)) return colorB\n\n const rgbA = chroma(colorA).rgba()\n const rgbB = chroma(colorB).rgba()\n const mixed = this.mixColorsRgb(rgbA, rgbB)\n\n return chroma(mixed).hex()\n }\n}\n"],"names":["Hsluv","c","Y","L","chan","digit2","digit1","hex","offset","slope","intercept","angle","d","f1","f2","f3","f4","f5","f6","lr","lg","lb","divider","varU","varV","hrad","l","sub1","sub2","s1r","s2r","s3r","s1g","s2g","s3g","s1b","s2b","s3b","r0","r1","g0","g1","b0","b1","h","hueRad","max","colorBlindMatrices","applyColorMatrix","color","matrix","r","g","b","m1","m2","m3","rgbToCmyk","k","cmykToRgb","m","y","Color","render","sourceColor","lightness","chroma","alpha","hueShifting","chromaShifting","algorithmVersion","visionSimulationMode","__publicField","hue","lightnessFactor","sinComponent","tanhComponent","weightedComponent","lch","newColor","oklch","labA","labB","chr","newLabA","newLabB","labL","hsl","hsluv","hsv","adjustedC","adjustedM","adjustedY","adjustedK","actions","transformed","result","_a","colorA","colorB","a1","r2","g2","b2","a2","hexRegex","rgbA","rgbB","mixed"],"mappings":";;;;AAAO,MAAMA,EAAM;AAAA,EACf,cAAc;AAEV,SAAK,MAAM,WACX,KAAK,QAAQ,GACb,KAAK,QAAQ,GACb,KAAK,QAAQ,GAEb,KAAK,QAAQ,GACb,KAAK,QAAQ,GACb,KAAK,QAAQ,GAEb,KAAK,QAAQ,GACb,KAAK,QAAQ,GACb,KAAK,QAAQ,GAEb,KAAK,QAAQ,GACb,KAAK,QAAQ,GACb,KAAK,QAAQ,GAEb,KAAK,UAAU,GACf,KAAK,UAAU,GACf,KAAK,UAAU,GAEf,KAAK,UAAU,GACf,KAAK,UAAU,GACf,KAAK,UAAU,GAEf,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM,GACX,KAAK,MAAM;AAAA,EACnB;AAAA,EACI,OAAO,WAAWC,GAAG;AACjB,WAAIA,KAAK,WACE,QAAQA,IAGR,QAAQ,KAAK,IAAIA,GAAG,IAAI,GAAG,IAAI;AAAA,EAElD;AAAA,EACI,OAAO,SAASA,GAAG;AACf,WAAIA,IAAI,UACG,KAAK,KAAKA,IAAI,SAAS,OAAO,GAAG,IAGjCA,IAAI;AAAA,EAEvB;AAAA,EACI,OAAO,KAAKC,GAAG;AACX,WAAIA,KAAKF,EAAM,UACJE,IAAIF,EAAM,OAAOA,EAAM,QAGvB,MAAM,KAAK,IAAIE,IAAIF,EAAM,MAAM,IAAI,CAAC,IAAI;AAAA,EAE3D;AAAA,EACI,OAAO,KAAKG,GAAG;AACX,WAAIA,KAAK,IACEH,EAAM,OAAOG,IAAIH,EAAM,QAGvBA,EAAM,OAAO,KAAK,KAAKG,IAAI,MAAM,KAAK,CAAC;AAAA,EAE1D;AAAA,EACI,OAAO,gBAAgBC,GAAM;AACzB,UAAMH,IAAI,KAAK,MAAMG,IAAO,GAAG,GACzBC,IAASJ,IAAI,IACbK,KAAUL,IAAII,KAAU,KAAK;AACnC,WAAOL,EAAM,SAAS,OAAOM,CAAM,IAAIN,EAAM,SAAS,OAAOK,CAAM;AAAA,EAC3E;AAAA,EACI,OAAO,gBAAgBE,GAAKC,GAAQ;AAChC,UAAMF,IAASN,EAAM,SAAS,QAAQO,EAAI,OAAOC,CAAM,CAAC,GAClDH,IAASL,EAAM,SAAS,QAAQO,EAAI,OAAOC,IAAS,CAAC,CAAC;AAE5D,YADUF,IAAS,KAAKD,KACb;AAAA,EACnB;AAAA,EACI,OAAO,wBAAwBI,GAAOC,GAAWC,GAAO;AACpD,UAAMC,IAAIF,KAAa,KAAK,IAAIC,CAAK,IAAIF,IAAQ,KAAK,IAAIE,CAAK;AAC/D,WAAIC,IAAI,IACG,QAGAA;AAAA,EAEnB;AAAA,EACI,OAAO,mBAAmBH,GAAOC,GAAW;AACxC,WAAO,KAAK,IAAIA,CAAS,IAAI,KAAK,KAAK,KAAK,IAAID,GAAO,CAAC,IAAI,CAAC;AAAA,EACrE;AAAA,EACI,OAAO,KAAKI,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAI;AAChC,WAAO,KAAK,IAAIL,GAAI,KAAK,IAAIC,GAAI,KAAK,IAAIC,GAAI,KAAK,IAAIC,GAAI,KAAK,IAAIC,GAAIC,CAAE,CAAC,CAAC,CAAC,CAAC;AAAA,EACtF;AAAA,EACI,WAAW;AACP,SAAK,MAAM,KACX,KAAK,OAAOlB,EAAM,gBAAgB,KAAK,KAAK,GAC5C,KAAK,OAAOA,EAAM,gBAAgB,KAAK,KAAK,GAC5C,KAAK,OAAOA,EAAM,gBAAgB,KAAK,KAAK;AAAA,EACpD;AAAA,EACI,WAAW;AACP,SAAK,MAAM,KAAK,IAAI,YAAa,GACjC,KAAK,QAAQA,EAAM,gBAAgB,KAAK,KAAK,CAAC,GAC9C,KAAK,QAAQA,EAAM,gBAAgB,KAAK,KAAK,CAAC,GAC9C,KAAK,QAAQA,EAAM,gBAAgB,KAAK,KAAK,CAAC;AAAA,EACtD;AAAA,EACI,WAAW;AACP,SAAK,QAAQA,EAAM,WAAWA,EAAM,OAAO,KAAK,QAAQA,EAAM,OAAO,KAAK,QAAQA,EAAM,OAAO,KAAK,KAAK,GACzG,KAAK,QAAQA,EAAM,WAAWA,EAAM,OAAO,KAAK,QAAQA,EAAM,OAAO,KAAK,QAAQA,EAAM,OAAO,KAAK,KAAK,GACzG,KAAK,QAAQA,EAAM,WAAWA,EAAM,OAAO,KAAK,QAAQA,EAAM,OAAO,KAAK,QAAQA,EAAM,OAAO,KAAK,KAAK;AAAA,EACjH;AAAA,EACI,WAAW;AACP,UAAMmB,IAAKnB,EAAM,SAAS,KAAK,KAAK,GAC9BoB,IAAKpB,EAAM,SAAS,KAAK,KAAK,GAC9BqB,IAAKrB,EAAM,SAAS,KAAK,KAAK;AACpC,SAAK,QAAQ,mBAAmBmB,IAAK,mBAAmBC,IAAK,mBAAmBC,GAChF,KAAK,QAAQ,mBAAmBF,IAAK,mBAAmBC,IAAK,oBAAoBC,GACjF,KAAK,QAAQ,oBAAoBF,IAAK,mBAAmBC,IAAK,mBAAmBC;AAAA,EACzF;AAAA,EACI,WAAW;AACP,UAAMC,IAAU,KAAK,QAAQ,KAAK,KAAK,QAAQ,IAAI,KAAK;AACxD,QAAIC,IAAO,IAAI,KAAK,OAChBC,IAAO,IAAI,KAAK;AACpB,IAAIF,MAAY,KACZC,KAAQD,GACRE,KAAQF,MAGRC,IAAO,KACPC,IAAO,MAEX,KAAK,QAAQxB,EAAM,KAAK,KAAK,KAAK,GAC9B,KAAK,UAAU,KACf,KAAK,QAAQ,GACb,KAAK,QAAQ,MAGb,KAAK,QAAQ,KAAK,KAAK,SAASuB,IAAOvB,EAAM,OAC7C,KAAK,QAAQ,KAAK,KAAK,SAASwB,IAAOxB,EAAM;AAAA,EAEzD;AAAA,EACI,WAAW;AACP,QAAI,KAAK,UAAU,GAAG;AAClB,WAAK,QAAQ,GACb,KAAK,QAAQ,GACb,KAAK,QAAQ;AACb;AAAA,IACZ;AACQ,UAAMuB,IAAO,KAAK,SAAS,KAAK,KAAK,SAASvB,EAAM,MAC9CwB,IAAO,KAAK,SAAS,KAAK,KAAK,SAASxB,EAAM;AACpD,SAAK,QAAQA,EAAM,KAAK,KAAK,KAAK,GAClC,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQuB,MAASA,IAAO,KAAKC,IAAOD,IAAOC,IACrE,KAAK,SAAS,IAAI,KAAK,QAAQ,KAAKA,IAAO,KAAK,QAAQA,IAAO,KAAK,UAAU,IAAIA;AAAA,EAC1F;AAAA,EACI,WAAW;AAGP,QAFA,KAAK,QAAQ,KAAK,OAClB,KAAK,QAAQ,KAAK,KAAK,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,KAAK,GACpE,KAAK,QAAQ;AACb,WAAK,QAAQ;AAAA,SAEZ;AACD,YAAMC,IAAO,KAAK,MAAM,KAAK,OAAO,KAAK,KAAK;AAC9C,WAAK,QAAQA,IAAO,MAAQ,KAAK,IAC7B,KAAK,QAAQ,MACb,KAAK,QAAQ,MAAM,KAAK;AAAA,IAExC;AAAA,EACA;AAAA,EACI,WAAW;AACP,UAAMA,IAAO,KAAK,QAAQ,MAAQ,KAAK;AACvC,SAAK,QAAQ,KAAK,OAClB,KAAK,QAAQ,KAAK,IAAIA,CAAI,IAAI,KAAK,OACnC,KAAK,QAAQ,KAAK,IAAIA,CAAI,IAAI,KAAK;AAAA,EAC3C;AAAA,EACI,uBAAuBC,GAAG;AACtB,UAAMC,IAAO,KAAK,IAAID,IAAI,IAAI,CAAC,IAAI,SAC7BE,IAAOD,IAAO3B,EAAM,UAAU2B,IAAOD,IAAI1B,EAAM,OAC/C6B,IAAMD,KAAQ,SAAS5B,EAAM,OAAO,QAAQA,EAAM,OAClD8B,IAAMF,KAAQ,SAAS5B,EAAM,OAAO,SAASA,EAAM,OAAO,SAASA,EAAM,OACzE+B,IAAMH,KAAQ,SAAS5B,EAAM,OAAO,SAASA,EAAM,OACnDgC,IAAMJ,KAAQ,SAAS5B,EAAM,OAAO,QAAQA,EAAM,OAClDiC,IAAML,KAAQ,SAAS5B,EAAM,OAAO,SAASA,EAAM,OAAO,SAASA,EAAM,OACzEkC,IAAMN,KAAQ,SAAS5B,EAAM,OAAO,SAASA,EAAM,OACnDmC,IAAMP,KAAQ,SAAS5B,EAAM,OAAO,QAAQA,EAAM,OAClDoC,IAAMR,KAAQ,SAAS5B,EAAM,OAAO,SAASA,EAAM,OAAO,SAASA,EAAM,OACzEqC,IAAMT,KAAQ,SAAS5B,EAAM,OAAO,SAASA,EAAM;AACzD,SAAK,MAAM6B,IAAME,GACjB,KAAK,MAAMD,IAAMJ,IAAIK,GACrB,KAAK,MAAMF,KAAOE,IAAM,SACxB,KAAK,OAAOD,IAAM,UAAUJ,KAAKK,IAAM,SACvC,KAAK,MAAMC,IAAME,GACjB,KAAK,MAAMD,IAAMP,IAAIQ,GACrB,KAAK,MAAMF,KAAOE,IAAM,SACxB,KAAK,OAAOD,IAAM,UAAUP,KAAKQ,IAAM,SACvC,KAAK,MAAMC,IAAME,GACjB,KAAK,MAAMD,IAAMV,IAAIW,GACrB,KAAK,MAAMF,KAAOE,IAAM,SACxB,KAAK,OAAOD,IAAM,UAAUV,KAAKW,IAAM;AAAA,EAC/C;AAAA,EACI,qBAAqB;AACjB,UAAMC,IAAKtC,EAAM,mBAAmB,KAAK,KAAK,KAAK,GAAG,GAChDuC,IAAKvC,EAAM,mBAAmB,KAAK,KAAK,KAAK,GAAG,GAChDwC,IAAKxC,EAAM,mBAAmB,KAAK,KAAK,KAAK,GAAG,GAChDyC,IAAKzC,EAAM,mBAAmB,KAAK,KAAK,KAAK,GAAG,GAChD0C,IAAK1C,EAAM,mBAAmB,KAAK,KAAK,KAAK,GAAG,GAChD2C,IAAK3C,EAAM,mBAAmB,KAAK,KAAK,KAAK,GAAG;AACtD,WAAOA,EAAM,KAAKsC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,CAAE;AAAA,EAChD;AAAA,EACI,mBAAmBC,GAAG;AAClB,UAAMC,IAASD,IAAI,MAAM,KAAK,KAAK,GAC7BN,IAAKtC,EAAM,wBAAwB,KAAK,KAAK,KAAK,KAAK6C,CAAM,GAC7DN,IAAKvC,EAAM,wBAAwB,KAAK,KAAK,KAAK,KAAK6C,CAAM,GAC7DL,IAAKxC,EAAM,wBAAwB,KAAK,KAAK,KAAK,KAAK6C,CAAM,GAC7DJ,IAAKzC,EAAM,wBAAwB,KAAK,KAAK,KAAK,KAAK6C,CAAM,GAC7DH,IAAK1C,EAAM,wBAAwB,KAAK,KAAK,KAAK,KAAK6C,CAAM,GAC7DF,IAAK3C,EAAM,wBAAwB,KAAK,KAAK,KAAK,KAAK6C,CAAM;AACnE,WAAO7C,EAAM,KAAKsC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,CAAE;AAAA,EAChD;AAAA,EACI,aAAa;AACT,QAAI,KAAK,UAAU;AACf,WAAK,QAAQ,KACb,KAAK,QAAQ;AAAA,aAER,KAAK,UAAU;AACpB,WAAK,QAAQ,GACb,KAAK,QAAQ;AAAA,SAEZ;AACD,WAAK,QAAQ,KAAK,SAClB,KAAK,uBAAuB,KAAK,OAAO;AACxC,YAAMG,IAAM,KAAK,mBAAmB,KAAK,OAAO;AAChD,WAAK,QAAQA,IAAM,MAAM,KAAK;AAAA,IAC1C;AACQ,SAAK,QAAQ,KAAK;AAAA,EAC1B;AAAA,EACI,aAAa;AACT,QAAI,KAAK,QAAQ;AACb,WAAK,UAAU,GACf,KAAK,UAAU;AAAA,aAEV,KAAK,QAAQ;AAClB,WAAK,UAAU,GACf,KAAK,UAAU;AAAA,SAEd;AACD,WAAK,uBAAuB,KAAK,KAAK;AACtC,YAAMA,IAAM,KAAK,mBAAmB,KAAK,KAAK;AAC9C,WAAK,UAAU,KAAK,QAAQA,IAAM,KAClC,KAAK,UAAU,KAAK;AAAA,IAChC;AACQ,SAAK,UAAU,KAAK;AAAA,EAC5B;AAAA,EACI,aAAa;AACT,QAAI,KAAK,UAAU;AACf,WAAK,QAAQ,KACb,KAAK,QAAQ;AAAA,aAER,KAAK,UAAU;AACpB,WAAK,QAAQ,GACb,KAAK,QAAQ;AAAA,SAEZ;AACD,WAAK,QAAQ,KAAK,SAClB,KAAK,uBAAuB,KAAK,OAAO;AACxC,YAAMA,IAAM,KAAK,mBAAoB;AACrC,WAAK,QAAQA,IAAM,MAAM,KAAK;AAAA,IAC1C;AACQ,SAAK,QAAQ,KAAK;AAAA,EAC1B;AAAA,EACI,aAAa;AACT,QAAI,KAAK,QAAQ;AACb,WAAK,UAAU,GACf,KAAK,UAAU;AAAA,aAEV,KAAK,QAAQ;AAClB,WAAK,UAAU,GACf,KAAK,UAAU;AAAA,SAEd;AACD,WAAK,uBAAuB,KAAK,KAAK;AACtC,YAAMA,IAAM,KAAK,mBAAoB;AACrC,WAAK,UAAU,KAAK,QAAQA,IAAM,KAClC,KAAK,UAAU,KAAK;AAAA,IAChC;AACQ,SAAK,UAAU,KAAK;AAAA,EAC5B;AAAA,EACI,aAAa;AACT,SAAK,WAAY,GACjB,KAAK,SAAU,GACf,KAAK,SAAU,GACf,KAAK,SAAU;AAAA,EACvB;AAAA,EACI,aAAa;AACT,SAAK,WAAY,GACjB,KAAK,SAAU,GACf,KAAK,SAAU,GACf,KAAK,SAAU;AAAA,EACvB;AAAA,EACI,aAAa;AACT,SAAK,WAAY,GACjB,KAAK,SAAU;AAAA,EACvB;AAAA,EACI,aAAa;AACT,SAAK,WAAY,GACjB,KAAK,SAAU;AAAA,EACvB;AAAA,EACI,aAAa;AACT,SAAK,SAAU,GACf,KAAK,SAAU,GACf,KAAK,SAAU,GACf,KAAK,WAAY,GACjB,KAAK,WAAY;AAAA,EACzB;AAAA,EACI,aAAa;AACT,SAAK,SAAU,GACf,KAAK,SAAU,GACf,KAAK,SAAU,GACf,KAAK,WAAY,GACjB,KAAK,WAAY;AAAA,EACzB;AAAA,EACI,aAAa;AACT,SAAK,SAAU,GACf,KAAK,WAAY;AAAA,EACzB;AAAA,EACI,aAAa;AACT,SAAK,SAAU,GACf,KAAK,WAAY;AAAA,EACzB;AACA;AACA9C,EAAM,WAAW;AACjBA,EAAM,OAAO;AACbA,EAAM,OAAO;AACbA,EAAM,OAAO;AACbA,EAAM,QAAQ;AACdA,EAAM,UAAU;AAChBA,EAAM,OAAO;AACbA,EAAM,OAAO;AACbA,EAAM,OAAO;AACbA,EAAM,OAAO;AACbA,EAAM,OAAO;AACbA,EAAM,OAAO;AACbA,EAAM,OAAO;AACbA,EAAM,OAAO;AACbA,EAAM,OAAO;ACpVb,MAAM+C,IAAqB;AAAA,EACzB,YAAY;AAAA,IACV,CAAC,OAAO,OAAO,CAAC;AAAA,IAChB,CAAC,OAAO,OAAO,CAAC;AAAA,IAChB,CAAC,GAAG,OAAO,KAAK;AAAA,EAClB;AAAA,EACA,aAAa;AAAA,IACX,CAAC,OAAO,OAAO,CAAC;AAAA,IAChB,CAAC,OAAO,OAAO,CAAC;AAAA,IAChB,CAAC,GAAG,OAAO,KAAK;AAAA,EAClB;AAAA,EACA,cAAc;AAAA,IACZ,CAAC,OAAO,OAAO,CAAC;AAAA,IAChB,CAAC,KAAK,KAAK,CAAC;AAAA,IACZ,CAAC,GAAG,KAAK,GAAG;AAAA,EACd;AAAA,EACA,eAAe;AAAA,IACb,CAAC,KAAK,KAAK,CAAC;AAAA,IACZ,CAAC,OAAO,OAAO,CAAC;AAAA,IAChB,CAAC,GAAG,OAAO,KAAK;AAAA,EAClB;AAAA,EACA,YAAY;AAAA,IACV,CAAC,MAAM,MAAM,CAAC;AAAA,IACd,CAAC,GAAG,OAAO,KAAK;AAAA,IAChB,CAAC,GAAG,OAAO,KAAK;AAAA,EAClB;AAAA,EACA,aAAa;AAAA,IACX,CAAC,OAAO,OAAO,CAAC;AAAA,IAChB,CAAC,GAAG,OAAO,KAAK;AAAA,IAChB,CAAC,GAAG,OAAO,KAAK;AAAA,EAClB;AAAA,EACA,eAAe;AAAA,IACb,CAAC,OAAO,OAAO,KAAK;AAAA,IACpB,CAAC,OAAO,OAAO,KAAK;AAAA,IACpB,CAAC,OAAO,OAAO,KAAK;AAAA,EACtB;AAAA,EACA,eAAe;AAAA,IACb,CAAC,OAAO,MAAM,KAAK;AAAA,IACnB,CAAC,OAAO,OAAO,KAAK;AAAA,IACpB,CAAC,OAAO,MAAM,KAAK;AAAA,EAAA;AAEvB,GAEMC,IAAmB,CAACC,GAAgBC,MAAgC;AACxE,QAAM,CAACC,GAAGC,GAAGC,CAAC,IAAIJ,GACZ,CAACK,GAAIC,GAAIC,CAAE,IAAIN;AAEd,SAAA;AAAA,IACL,KAAK,MAAMC,IAAIG,EAAG,CAAC,IAAIF,IAAIE,EAAG,CAAC,IAAID,IAAIC,EAAG,CAAC,CAAC;AAAA,IAC5C,KAAK,MAAMH,IAAII,EAAG,CAAC,IAAIH,IAAIG,EAAG,CAAC,IAAIF,IAAIE,EAAG,CAAC,CAAC;AAAA,IAC5C,KAAK,MAAMJ,IAAIK,EAAG,CAAC,IAAIJ,IAAII,EAAG,CAAC,IAAIH,IAAIG,EAAG,CAAC,CAAC;AAAA,EAC9C;AACF,GAEMC,IAAY,CAChBN,GACAC,GACAC,MACqC;AACrC,QAAMd,IAAKY,IAAI,KACbV,IAAKW,IAAI,KACTT,IAAKU,IAAI,KACLK,IAAI,IAAI,KAAK,IAAInB,GAAIE,GAAIE,CAAE;AAEjC,SAAIe,MAAM,IAAU,CAAC,GAAG,GAAG,GAAG,CAAC,IAExB;AAAA,KACJ,IAAInB,IAAKmB,MAAM,IAAIA;AAAA,KACnB,IAAIjB,IAAKiB,MAAM,IAAIA;AAAA,KACnB,IAAIf,IAAKe,MAAM,IAAIA;AAAA,IACpBA;AAAA,EACF;AACF,GAEMC,IAAY,CAChB1D,GACA2D,GACAC,GACAH,MACY;AAAA,EACZ,KAAK,MAAM,OAAO,IAAIzD,MAAM,IAAIyD,EAAE;AAAA,EAClC,KAAK,MAAM,OAAO,IAAIE,MAAM,IAAIF,EAAE;AAAA,EAClC,KAAK,MAAM,OAAO,IAAIG,MAAM,IAAIH,EAAE;AACpC;AAEA,MAAqBI,EAAM;AAAA,EAUzB,YAAY;AAAA,IACV,QAAAC,IAAS;AAAA,IACT,aAAAC,IAAc,CAAC,GAAG,GAAG,CAAC;AAAA,IACtB,WAAAC,IAAY,YAAYC,EAAOF,CAAW,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC;AAAA,IACzE,OAAAG,IAAQ;AAAA,IACR,aAAAC,IAAc;AAAA,IACd,gBAAAC,IAAiB;AAAA,IACjB,kBAAAC,IAAmB;AAAA,IACnB,sBAAAC,IAAuB;AAAA,EAAA,GAUtB;AA3BK,IAAAC,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AA+BR,IAAAA,EAAA,mBAAY,CAACC,MACPA,IAAM,KAAK,cAAc,IAAUA,IAAM,KAAK,cAAc,MAC5DA,IAAM,KAAK,cAAc,MAAYA,IAAM,KAAK,cAAc,MAE3DA,IAAM,KAAK;AAGpB,IAAAD,EAAA,sBAAe,CAACN,MAA2B;AACrC,UAAA,KAAK,qBAAqB,KAAaA,QAAAA;AAC3C,UAAI,KAAK,qBAAqB;AAC5B,eAAO,KAAK,IAAK,KAAK,YAAY,MAAO,KAAK,EAAE,IAAIA;AAClD,UAAA,KAAK,qBAAqB,MAAM;AAC5B,cAAAQ,IAAkB,KAAK,YAAY,KACnCC,IAAe,KAAK,IAAID,IAAkB,KAAK,EAAE,GACjDE,IAAgB,KAAK,KAAKF,IAAkB,KAAK,EAAE,GACnDG,IAAoBF,IAAe,MAAMC,IAAgB;AAG/D,eAF0B,KAAK,IAAIC,GAAmB,GAAG,IAE9BX;AAAAA,MAAA;AAGtBA,aAAAA;AAAAA,IACT;AAEA,IAAAM,EAAA,kBAAW,MACL,KAAK,WAAW,QACX,KAAK,sBAAsB,KAAK,WAAW,IAE7C,KAAK,sBAAsB,KAAK,WAAW;AAGpD,IAAAA,EAAA,2BAAoB,MACd,KAAK,WAAW,QACXN,EACJ,IAAI,GAAG,KAAK,sBAAsB,KAAK,WAAW,GAAG,KAAK,KAAK,EAC/D,IAAI,IAEF,CAAC,GAAG,KAAK,sBAAsB,KAAK,WAAW,GAAG,KAAK,KAAK;AAGrE,IAAAM,EAAA,aAAM,MAAuC;AACrC,YAAAM,IAAMZ,EAAO,KAAK,WAAW,EAAE,IAAI,GACvCa,IAAWb,EACR;AAAA,QACC,KAAK;AAAA,QACL,KAAK,aAAaY,EAAI,CAAC,KAAK,KAAK,iBAAiB,IAAI;AAAA,QACtD,KAAK,UAAUA,EAAI,CAAC,CAAC;AAAA,QAEtB,IAAI;AAET,aAAI,KAAK,WAAW,QAAc,KAAK,sBAAsBC,CAAQ,IAE9D,KAAK,sBAAsBA,CAAQ;AAAA,IAC5C;AAEA,IAAAP,EAAA,cAAO,MAAuC;AACtC,YAAAM,IAAMZ,EAAO,KAAK,WAAW,EAAE,IAAI,GACvCa,IAAWb,EACR;AAAA,QACCY,EAAI,CAAC;AAAA,QACL,KAAK,aAAaA,EAAI,CAAC,KAAK,KAAK,iBAAiB,IAAI;AAAA,QACtD,KAAK,UAAUA,EAAI,CAAC,CAAC;AAAA,QAEtB,IAAI;AAET,aAAI,KAAK,WAAW,QACXZ,EACJ,IAAI,GAAG,KAAK,sBAAsBa,CAAQ,GAAG,KAAK,KAAK,EACvD,IAAI,IAEF,CAAC,GAAG,KAAK,sBAAsBA,CAAQ,GAAG,KAAK,KAAK;AAAA,IAC7D;AAEA,IAAAP,EAAA,eAAQ,MAAuC;AACvC,YAAAQ,IAAQd,EAAO,KAAK,WAAW,EAAE,MAAM,GAC3Ca,IAAWb,EACR;AAAA,QACC,KAAK,YAAY;AAAA,QACjB,KAAK,aAAac,EAAM,CAAC,KAAK,KAAK,iBAAiB,IAAI;AAAA,QACxD,KAAK,UAAUA,EAAM,CAAC,CAAC;AAAA,QAExB,IAAI;AAET,aAAI,KAAK,WAAW,QAAc,KAAK,sBAAsBD,CAAQ,IAE9D,KAAK,sBAAsBA,CAAQ;AAAA,IAC5C;AAEA,IAAAP,EAAA,gBAAS,MAAuC;AACxC,YAAAQ,IAAQd,EAAO,KAAK,WAAW,EAAE,MAAM,GAC3Ca,IAAWb,EACR;AAAA,QACCc,EAAM,CAAC;AAAA,QACP,KAAK,aAAaA,EAAM,CAAC,KAAK,KAAK,iBAAiB,IAAI;AAAA,QACxD,KAAK,UAAUA,EAAM,CAAC,CAAC;AAAA,QAExB,IAAI;AAET,aAAI,KAAK,WAAW,QACXd,EACJ,IAAI,GAAG,KAAK,sBAAsBa,CAAQ,GAAG,KAAK,KAAK,EACvD,IAAI,IAEF,CAAC,GAAG,KAAK,sBAAsBA,CAAQ,GAAG,KAAK,KAAK;AAAA,IAC7D;AAEA,IAAAP,EAAA,aAAM,MAAuC;AACrC,YAAAS,IAAOf,EAAO,KAAK,WAAW,EAAE,IAAI,OAAO,GAC/CgB,IAAOhB,EAAO,KAAK,WAAW,EAAE,IAAI,OAAO,GAC3CiB,IAAM,KAAK,KAAKF,KAAQ,IAAIC,KAAQ,CAAC,KAAK,KAAK,iBAAiB;AAC9D,UAAAtC,IAAI,KAAK,KAAKsC,IAAOD,CAAI,IAAI,KAAK,eAAe,KAAK,KAAK;AAE/D,OAAIrC,IAAI,KAAK,MACJA,IAAI,CAAC,KAAK,YAAQ,KAAK;AAE5B,UAAAwC,IAAUD,IAAM,KAAK,IAAIvC,CAAC,GAC5ByC,IAAUF,IAAM,KAAK,IAAIvC,CAAC;AAExB,MAAA,KAAK,KAAKqC,CAAI,MAAM,MAAM,KAAK,KAAKC,CAAI,MAAM,MACrCE,KAAA,IACAC,KAAA,KAET,KAAK,KAAKJ,CAAI,MAAM,MAAM,KAAK,KAAKC,CAAI,MAAM,OACrCE,KAAA,IACAC,KAAA;AAGb,YAAMN,IAAWb,EACd;AAAA,QACC,KAAK;AAAA,QACL,KAAK,aAAakB,CAAO;AAAA,QACzB,KAAK,aAAaC,CAAO;AAAA,QAE1B,IAAI;AAEP,aAAI,KAAK,WAAW,QAAc,KAAK,sBAAsBN,CAAQ,IAE9D,KAAK,sBAAsBA,CAAQ;AAAA,IAC5C;AAEA,IAAAP,EAAA,cAAO,MAAuC;AAC5C,YAAMS,IAAOf,EAAO,KAAK,WAAW,EAAE,IAAI,OAAO,GAC/CgB,IAAOhB,EAAO,KAAK,WAAW,EAAE,IAAI,OAAO,GAC3CoB,IAAOpB,EAAO,KAAK,WAAW,EAAE,IAAI,OAAO,GAC3CiB,IAAM,KAAK,KAAKF,KAAQ,IAAIC,KAAQ,CAAC,KAAK,KAAK,iBAAiB;AAC9D,UAAAtC,IAAI,KAAK,KAAKsC,IAAOD,CAAI,IAAI,KAAK,eAAe,KAAK,KAAK;AAE/D,OAAIrC,IAAI,KAAK,MACJA,IAAI,CAAC,KAAK,YAAQ,KAAK;AAE5B,UAAAwC,IAAUD,IAAM,KAAK,IAAIvC,CAAC,GAC5ByC,IAAUF,IAAM,KAAK,IAAIvC,CAAC;AAExB,MAAA,KAAK,KAAKqC,CAAI,MAAM,MAAM,KAAK,KAAKC,CAAI,MAAM,MACrCE,KAAA,IACAC,KAAA,KAET,KAAK,KAAKJ,CAAI,MAAM,MAAM,KAAK,KAAKC,CAAI,MAAM,OACrCE,KAAA,IACAC,KAAA;AAGb,YAAMN,IAAWb,EACd,IAAIoB,GAAM,KAAK,aAAaF,CAAO,GAAG,KAAK,aAAaC,CAAO,CAAC,EAChE,IAAI;AAEP,aAAI,KAAK,WAAW,QACXnB,EACJ,IAAI,GAAG,KAAK,sBAAsBa,CAAQ,GAAG,KAAK,KAAK,EACvD,IAAI,IAEF,CAAC,GAAG,KAAK,sBAAsBA,CAAQ,GAAG,KAAK,KAAK;AAAA,IAC7D;AAEA,IAAAP,EAAA,eAAQ,MAAuC;AACvC,YAAAS,IAAOf,EAAO,KAAK,WAAW,EAAE,IAAI,SAAS,GACjDgB,IAAOhB,EAAO,KAAK,WAAW,EAAE,IAAI,SAAS,GAC7CiB,IAAM,KAAK,KAAKF,KAAQ,IAAIC,KAAQ,CAAC,KAAK,KAAK,iBAAiB;AAC9D,UAAAtC,IAAI,KAAK,KAAKsC,IAAOD,CAAI,IAAI,KAAK,eAAe,KAAK,KAAK;AAE/D,OAAIrC,IAAI,KAAK,MACJA,IAAI,CAAC,KAAK,YAAQ,KAAK;AAE5B,UAAAwC,IAAUD,IAAM,KAAK,IAAIvC,CAAC,GAC5ByC,IAAUF,IAAM,KAAK,IAAIvC,CAAC;AAExB,MAAA,KAAK,KAAKqC,CAAI,MAAM,MAAM,KAAK,KAAKC,CAAI,MAAM,MACrCE,KAAA,IACAC,KAAA,KAET,KAAK,KAAKJ,CAAI,MAAM,MAAM,KAAK,KAAKC,CAAI,MAAM,OACrCE,KAAA,IACAC,KAAA,KAGT,OAAO,MAAMD,CAAO,MAAaA,IAAA,IACjC,OAAO,MAAMC,CAAO,MAAaA,IAAA;AAErC,YAAMN,IAAWb,EACd;AAAA,QACC,KAAK,YAAY;AAAA,QACjB,KAAK,aAAakB,CAAO;AAAA,QACzB,KAAK,aAAaC,CAAO;AAAA,QAE1B,IAAI;AAEP,aAAI,KAAK,WAAW,QAAc,KAAK,sBAAsBN,CAAQ,IAE9D,KAAK,sBAAsBA,CAAQ;AAAA,IAC5C;AAEA,IAAAP,EAAA,gBAAS,MAAuC;AAC9C,YAAMS,IAAOf,EAAO,KAAK,WAAW,EAAE,IAAI,SAAS,GACjDgB,IAAOhB,EAAO,KAAK,WAAW,EAAE,IAAI,SAAS,GAC7CoB,IAAOpB,EAAO,KAAK,WAAW,EAAE,IAAI,SAAS,GAC7CiB,IAAM,KAAK,KAAKF,KAAQ,IAAIC,KAAQ,CAAC,KAAK,KAAK,iBAAiB;AAC9D,UAAAtC,IAAI,KAAK,KAAKsC,IAAOD,CAAI,IAAI,KAAK,eAAe,KAAK,KAAK;AAE/D,OAAIrC,IAAI,KAAK,MACJA,IAAI,CAAC,KAAK,YAAQ,KAAK;AAE5B,UAAAwC,IAAUD,IAAM,KAAK,IAAIvC,CAAC,GAC5ByC,IAAUF,IAAM,KAAK,IAAIvC,CAAC;AAExB,MAAA,KAAK,KAAKqC,CAAI,MAAM,MAAM,KAAK,KAAKC,CAAI,MAAM,MACrCE,KAAA,IACAC,KAAA,KAET,KAAK,KAAKJ,CAAI,MAAM,MAAM,KAAK,KAAKC,CAAI,MAAM,OACrCE,KAAA,IACAC,KAAA,KAGT,OAAO,MAAMD,CAAO,MAAaA,IAAA,IACjC,OAAO,MAAMC,CAAO,MAAaA,IAAA;AAErC,YAAMN,IAAWb,EACd,MAAMoB,GAAM,KAAK,aAAaF,CAAO,GAAG,KAAK,aAAaC,CAAO,CAAC,EAClE,IAAI;AAEP,aAAI,KAAK,WAAW,QACXnB,EACJ,IAAI,GAAG,KAAK,sBAAsBa,CAAQ,GAAG,KAAK,KAAK,EACvD,IAAI,IAEF,CAAC,GAAG,KAAK,sBAAsBA,CAAQ,GAAG,KAAK,KAAK;AAAA,IAC7D;AAEA,IAAAP,EAAA,aAAM,MAAuC;AACrC,YAAAe,IAAMrB,EAAO,KAAK,WAAW,EAAE,IAAI,GACvCa,IAAWb,EACR;AAAA,QACC,KAAK,UAAUqB,EAAI,CAAC,CAAC;AAAA,QACrB,KAAK,aAAaA,EAAI,CAAC,KAAK,KAAK,iBAAiB,IAAI;AAAA,QACtD,KAAK,YAAY;AAAA,QAElB,IAAI;AAET,aAAI,KAAK,WAAW,QAAc,KAAK,sBAAsBR,CAAQ,IAE9D,KAAK,sBAAsBA,CAAQ;AAAA,IAC5C;AAEA,IAAAP,EAAA,cAAO,MAAuC;AACtC,YAAAe,IAAMrB,EAAO,KAAK,WAAW,EAAE,IAAI,GACvCa,IAAWb,EACR;AAAA,QACC,KAAK,UAAUqB,EAAI,CAAC,CAAC;AAAA,QACrB,KAAK,aAAaA,EAAI,CAAC,KAAK,KAAK,iBAAiB,IAAI;AAAA,QACtDA,EAAI,CAAC;AAAA,QAEN,IAAI;AAET,aAAI,KAAK,WAAW,QACXrB,EACJ,IAAI,GAAG,KAAK,sBAAsBa,CAAQ,GAAG,KAAK,KAAK,EACvD,IAAI,IAEF,CAAC,GAAG,KAAK,sBAAsBA,CAAQ,GAAG,KAAK,KAAK;AAAA,IAC7D;AAEA,IAAAP,EAAA,eAAQ,MAAuC;AACvC,YAAAgB,IAAQ,IAAIxF,EAAM;AAExB,MAAAwF,EAAM,QAAQ,KAAK,YAAY,CAAC,IAAI,KACpCA,EAAM,QAAQ,KAAK,YAAY,CAAC,IAAI,KACpCA,EAAM,QAAQ,KAAK,YAAY,CAAC,IAAI,KAEpCA,EAAM,WAAW,GAEjBA,EAAM,UAAU,KAAK,WACrBA,EAAM,UAAU,KAAK;AAAA,QACnBA,EAAM,WAAW,KAAK,iBAAiB;AAAA,MACzC,GACAA,EAAM,UAAU,KAAK,UAAUA,EAAM,OAAO,GAExC,OAAO,MAAMA,EAAM,OAAO,QAAS,UAAU,IAC7C,OAAO,MAAMA,EAAM,OAAO,QAAS,UAAU,IAEjDA,EAAM,WAAW;AAEjB,YAAMT,IAAoB;AAAA,QACxBS,EAAM,QAAQ;AAAA,QACdA,EAAM,QAAQ;AAAA,QACdA,EAAM,QAAQ;AAAA,MAChB;AAEA,aAAI,KAAK,WAAW,QAAc,KAAK,sBAAsBT,CAAQ,IAE9D,KAAK,sBAAsBA,CAAQ;AAAA,IAC5C;AAEA,IAAAP,EAAA,gBAAS,MAAuC;AACxC,YAAAgB,IAAQ,IAAIxF,EAAM;AAExB,MAAAwF,EAAM,QAAQ,KAAK,YAAY,CAAC,IAAI,KACpCA,EAAM,QAAQ,KAAK,YAAY,CAAC,IAAI,KACpCA,EAAM,QAAQ,KAAK,YAAY,CAAC,IAAI,KAEpCA,EAAM,WAAW,GAEjBA,EAAM,UAAU,KAAK;AAAA,QACnBA,EAAM,WAAW,KAAK,iBAAiB;AAAA,MACzC,GACAA,EAAM,UAAU,KAAK,UAAUA,EAAM,OAAO,GAExC,OAAO,MAAMA,EAAM,OAAO,QAAS,UAAU,IAC7C,OAAO,MAAMA,EAAM,OAAO,QAAS,UAAU,IAEjDA,EAAM,WAAW;AAEjB,YAAMT,IAAoB;AAAA,QACxBS,EAAM,QAAQ;AAAA,QACdA,EAAM,QAAQ;AAAA,QACdA,EAAM,QAAQ;AAAA,MAChB;AAEA,aAAI,KAAK,WAAW,QACXtB,EACJ,IAAI,GAAG,KAAK,sBAAsBa,CAAQ,GAAG,KAAK,KAAK,EACvD,IAAI,IAEF,CAAC,GAAG,KAAK,sBAAsBA,CAAQ,GAAG,KAAK,KAAK;AAAA,IAC7D;AAEA,IAAAP,EAAA,aAAM,MAAuC;AACrC,YAAAiB,IAAMvB,EAAO,KAAK,WAAW,EAAE,IAAI,GACvCa,IAAWb,EACR;AAAA,QACC,KAAK,UAAU,OAAO,MAAMuB,EAAI,CAAC,CAAC,IAAI,IAAIA,EAAI,CAAC,CAAC;AAAA,QAChD,KAAK,aAAaA,EAAI,CAAC,KAAK,KAAK,iBAAiB,IAAI;AAAA,QACtD,KAAK,YAAY;AAAA,QAElB,IAAI;AAET,aAAI,KAAK,WAAW,QAAc,KAAK,sBAAsBV,CAAQ,IAE9D,KAAK,sBAAsBA,CAAQ;AAAA,IAC5C;AAEA,IAAAP,EAAA,cAAO,MAAuC;AACtC,YAAAiB,IAAMvB,EAAO,KAAK,WAAW,EAAE,IAAI,GACvCa,IAAWb,EACR;AAAA,QACC,KAAK,UAAU,OAAO,MAAMuB,EAAI,CAAC,CAAC,IAAI,IAAIA,EAAI,CAAC,CAAC;AAAA,QAChD,KAAK,aAAaA,EAAI,CAAC,KAAK,KAAK,iBAAiB,IAAI;AAAA,QACtDA,EAAI,CAAC;AAAA,QAEN,IAAI;AAET,aAAI,KAAK,WAAW,QACXvB,EACJ,IAAI,GAAG,KAAK,sBAAsBa,CAAQ,GAAG,KAAK,KAAK,EACvD,IAAI,IAEF,CAAC,GAAG,KAAK,sBAAsBA,CAAQ,GAAG,KAAK,KAAK;AAAA,IAC7D;AAEA,IAAAP,EAAA,cAAO,MAAuC;AAC5C,YAAMe,IAAMrB,EAAO,KAAK,WAAW,EAAE,IAAI,GACnC,CAACf,GAAGC,GAAGC,CAAC,IAAIa,EACf;AAAA,QACC,KAAK,UAAU,OAAO,MAAMqB,EAAI,CAAC,CAAC,IAAI,IAAIA,EAAI,CAAC,CAAC;AAAA,QAChDA,EAAI,CAAC;AAAA,QACLA,EAAI,CAAC;AAAA,QAEN,IAAI,GAED,CAACtF,GAAG2D,GAAGC,CAAC,IAAIJ,EAAUN,GAAGC,GAAGC,CAAC,GAC7BqC,IAAY,KAAK;AAAA,QACrB;AAAA,QACA,KAAK,IAAI,GAAG,KAAK,aAAazF,KAAK,KAAK,iBAAiB,IAAI,CAAC;AAAA,MAChE,GACM0F,IAAY,KAAK;AAAA,QACrB;AAAA,QACA,KAAK,IAAI,GAAG,KAAK,aAAa/B,KAAK,KAAK,iBAAiB,IAAI,CAAC;AAAA,MAChE,GACMgC,IAAY,KAAK;AAAA,QACrB;AAAA,QACA,KAAK,IAAI,GAAG,KAAK,aAAa/B,KAAK,KAAK,iBAAiB,IAAI,CAAC;AAAA,MAChE,GACMgC,IAAY,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK,YAAY,GAAG,CAAC,GAE7Dd,IAAWpB,EAAU+B,GAAWC,GAAWC,GAAWC,CAAS;AAErE,aAAI,KAAK,WAAW,QAAc,KAAK,sBAAsBd,CAAQ,IAE9D,KAAK,sBAAsBA,CAAQ;AAAA,IAC5C;AAEA,IAAAP,EAAA,eAAQ,MAAuC;AAC7C,YAAMe,IAAMrB,EAAO,KAAK,WAAW,EAAE,IAAI,GACnC,CAACf,GAAGC,GAAGC,CAAC,IAAIa,EACf;AAAA,QACC,KAAK,UAAU,OAAO,MAAMqB,EAAI,CAAC,CAAC,IAAI,IAAIA,EAAI,CAAC,CAAC;AAAA,QAChDA,EAAI,CAAC;AAAA,QACLA,EAAI,CAAC;AAAA,QAEN,IAAI,GAED,CAACtF,GAAG2D,GAAGC,GAAGH,CAAC,IAAID,EAAUN,GAAGC,GAAGC,CAAC,GAChCqC,IAAY,KAAK;AAAA,QACrB;AAAA,QACA,KAAK,IAAI,GAAG,KAAK,aAAazF,KAAK,KAAK,iBAAiB,IAAI,CAAC;AAAA,MAChE,GACM0F,IAAY,KAAK;AAAA,QACrB;AAAA,QACA,KAAK,IAAI,GAAG,KAAK,aAAa/B,KAAK,KAAK,iBAAiB,IAAI,CAAC;AAAA,MAChE,GACMgC,IAAY,KAAK;AAAA,QACrB;AAAA,QACA,KAAK,IAAI,GAAG,KAAK,aAAa/B,KAAK,KAAK,iBAAiB,IAAI,CAAC;AAAA,MAChE,GAEMkB,IAAWpB,EAAU+B,GAAWC,GAAWC,GAAWlC,CAAC;AAE7D,aAAI,KAAK,WAAW,QACXQ,EACJ,IAAI,GAAG,KAAK,sBAAsBa,CAAQ,GAAG,KAAK,KAAK,EACvD,IAAI,IAEF,CAAC,GAAG,KAAK,sBAAsBA,CAAQ,GAAG,KAAK,KAAK;AAAA,IAC7D;AAEA,IAAAP,EAAA,kBAAW,MAAe;AAClB,YAAAgB,IAAQ,IAAIxF,EAAM;AACxB,aAAAwF,EAAM,QAAQ,KAAK,YAAY,CAAC,IAAI,KACpCA,EAAM,QAAQ,KAAK,YAAY,CAAC,IAAI,KACpCA,EAAM,QAAQ,KAAK,YAAY,CAAC,IAAI,KACpCA,EAAM,WAAW,GAEV,CAACA,EAAM,SAASA,EAAM,SAASA,EAAM,OAAO;AAAA,IACrD;AAEA,IAAAhB,EAAA,+BAAwB,CAACvB,MAA6B;;AACpD,YAAM6C,IAEF;AAAA,QACF,MAAM,MAAM5B,EAAOjB,CAAK,EAAE,IAAI;AAAA,QAC9B,aAAa,MAAM;AACjB,gBAAM8C,IAAc/C;AAAA,YAClBC;AAAA,YACAF,EAAmB;AAAA,UACrB;AACO,iBAAAmB,EAAO6B,CAAW,EAAE,IAAI;AAAA,QACjC;AAAA,QACA,YAAY,MAAM;AAChB,gBAAMA,IAAc/C;AAAA,YAClBC;AAAA,YACAF,EAAmB;AAAA,UACrB;AACO,iBAAAmB,EAAO6B,CAAW,EAAE,IAAI;AAAA,QACjC;AAAA,QACA,eAAe,MAAM;AACnB,gBAAMA,IAAc/C;AAAA,YAClBC;AAAA,YACAF,EAAmB;AAAA,UACrB;AACO,iBAAAmB,EAAO6B,CAAW,EAAE,IAAI;AAAA,QACjC;AAAA,QACA,cAAc,MAAM;AAClB,gBAAMA,IAAc/C;AAAA,YAClBC;AAAA,YACAF,EAAmB;AAAA,UACrB;AACO,iBAAAmB,EAAO6B,CAAW,EAAE,IAAI;AAAA,QACjC;AAAA,QACA,aAAa,MAAM;AACjB,gBAAMA,IAAc/C;AAAA,YAClBC;AAAA,YACAF,EAAmB;AAAA,UACrB;AACO,iBAAAmB,EAAO6B,CAAW,EAAE,IAAI;AAAA,QACjC;AAAA,QACA,YAAY,MAAM;AAChB,gBAAMA,IAAc/C;AAAA,YAClBC;AAAA,YACAF,EAAmB;AAAA,UACrB;AACO,iBAAAmB,EAAO6B,CAAW,EAAE,IAAI;AAAA,QACjC;AAAA,QACA,eAAe,MAAM;AACnB,gBAAMA,IAAc/C;AAAA,YAClBC;AAAA,YACAF,EAAmB;AAAA,UACrB;AACO,iBAAAmB,EAAO6B,CAAW,EAAE,IAAI;AAAA,QACjC;AAAA,QACA,eAAe,MAAM;AACnB,gBAAMA,IAAc/C;AAAA,YAClBC;AAAA,YACAF,EAAmB;AAAA,UACrB;AACO,iBAAAmB,EAAO6B,CAAW,EAAE,IAAI;AAAA,QAAA;AAAA,MAEnC,GAEMC,KAASC,IAAAH,EAAQ,KAAK,0BAAb,gBAAAG,EAAA,KAAAH;AACR,aAAAE,MAAW,SAAYA,IAAS;AAAA,IACzC;AAEA,IAAAxB,EAAA,+BAAwB,CAACvB,MAA4B;;AACnD,YAAM6C,IAEF;AAAA,QACF,MAAM,MAAM5B,EAAOjB,CAAK,EAAE,IAAI;AAAA,QAC9B,aAAa,MACXD,EAAiBC,GAAOF,EAAmB,WAAW;AAAA,QACxD,YAAY,MAAMC,EAAiBC,GAAOF,EAAmB,UAAU;AAAA,QACvE,eAAe,MACbC,EAAiBC,GAAOF,EAAmB,aAAa;AAAA,QAC1D,cAAc,MACZC,EAAiBC,GAAOF,EAAmB,YAAY;AAAA,QACzD,aAAa,MACXC,EAAiBC,GAAOF,EAAmB,WAAW;AAAA,QACxD,YAAY,MAAMC,EAAiBC,GAAOF,EAAmB,UAAU;AAAA,QACvE,eAAe,MACbC,EAAiBC,GAAOF,EAAmB,aAAa;AAAA,QAC1D,eAAe,MACbC,EAAiBC,GAAOF,EAAmB,aAAa;AAAA,MAC5D,GAEMiD,KAASC,IAAAH,EAAQ,KAAK,0BAAb,gBAAAG,EAAA,KAAAH;AACf,aAAOE,MAAW,SAAYA,IAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjD;AAEA,IAAAxB,EAAA,sBAAe,CACb0B,GACAC,MACY;AACZ,YAAM,CAAC5D,GAAIE,GAAIE,GAAIyD,CAAE,IAAIF,GACnB,CAACG,GAAIC,GAAIC,GAAIC,CAAE,IAAIL;AAEzB,UAAIC,MAAO,EAAG,QAAO,CAAC7D,GAAIE,GAAIE,CAAE;AAChC,UAAIyD,MAAO,EAAG,QAAO,CAACC,GAAIC,GAAIC,CAAE;AAE1B,YAAApC,IAAQiC,IAAKI,KAAM,IAAIJ,IACvBjD,IAAI,KAAK;AAAA,QACb;AAAA,QACA,KAAK,IAAI,GAAG,KAAK,OAAOZ,IAAK6D,IAAKC,IAAKG,KAAM,IAAIJ,MAAOjC,CAAK,CAAC;AAAA,MAChE,GACMf,IAAI,KAAK;AAAA,QACb;AAAA,QACA,KAAK,IAAI,GAAG,KAAK,OAAOX,IAAK2D,IAAKE,IAAKE,KAAM,IAAIJ,MAAOjC,CAAK,CAAC;AAAA,MAChE,GACMd,IAAI,KAAK;AAAA,QACb;AAAA,QACA,KAAK,IAAI,GAAG,KAAK,OAAOV,IAAKyD,IAAKG,IAAKC,KAAM,IAAIJ,MAAOjC,CAAK,CAAC;AAAA,MAChE;AAEA,aAAO,KAAK,sBAAsB,CAAChB,GAAGC,GAAGC,CAAC,CAAC;AAAA,IAC7C;AAEA,IAAAmB,EAAA,sBAAe,CAAC0B,GAAkBC,MAA+B;AAC/D,YAAMM,IAAW;AACjB,UAAI,CAACA,EAAS,KAAKP,CAAM,EAAU,QAAAA;AACnC,UAAI,CAACO,EAAS,KAAKN,CAAM,EAAU,QAAAA;AAEnC,YAAMO,IAAOxC,EAAOgC,CAAM,EAAE,KAAK,GAC3BS,IAAOzC,EAAOiC,CAAM,EAAE,KAAK,GAC3BS,IAAQ,KAAK,aAAaF,GAAMC,CAAI;AAEnC,aAAAzC,EAAO0C,CAAK,EAAE,IAAI;AAAA,IAC3B;AAjlBE,SAAK,SAAS7C,GACd,KAAK,cAAcC,GACnB,KAAK,YAAYC,GACjB,KAAK,QAAQE,GACb,KAAK,cAAcC,GACnB,KAAK,iBAAiBC,GACtB,KAAK,mBAAmBC,GACxB,KAAK,uBAAuBC;AAAA,EAAA;AA2kBhC;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"color-S7JZ1G0L.js","sources":["../node_modules/hsluv/dist/hsluv.mjs","../src/modules/color/color.ts"],"sourcesContent":["export class Hsluv {\n constructor() {\n // RGB\n this.hex = '#000000';\n this.rgb_r = 0;\n this.rgb_g = 0;\n this.rgb_b = 0;\n // CIE XYZ\n this.xyz_x = 0;\n this.xyz_y = 0;\n this.xyz_z = 0;\n // CIE LUV\n this.luv_l = 0;\n this.luv_u = 0;\n this.luv_v = 0;\n // CIE LUV LCh\n this.lch_l = 0;\n this.lch_c = 0;\n this.lch_h = 0;\n // HSLuv\n this.hsluv_h = 0;\n this.hsluv_s = 0;\n this.hsluv_l = 0;\n // HPLuv\n this.hpluv_h = 0;\n this.hpluv_p = 0;\n this.hpluv_l = 0;\n // 6 lines in slope-intercept format: R < 0, R > 1, G < 0, G > 1, B < 0, B > 1\n this.r0s = 0;\n this.r0i = 0;\n this.r1s = 0;\n this.r1i = 0;\n this.g0s = 0;\n this.g0i = 0;\n this.g1s = 0;\n this.g1i = 0;\n this.b0s = 0;\n this.b0i = 0;\n this.b1s = 0;\n this.b1i = 0;\n }\n static fromLinear(c) {\n if (c <= 0.0031308) {\n return 12.92 * c;\n }\n else {\n return 1.055 * Math.pow(c, 1 / 2.4) - 0.055;\n }\n }\n static toLinear(c) {\n if (c > 0.04045) {\n return Math.pow((c + 0.055) / 1.055, 2.4);\n }\n else {\n return c / 12.92;\n }\n }\n static yToL(Y) {\n if (Y <= Hsluv.epsilon) {\n return Y / Hsluv.refY * Hsluv.kappa;\n }\n else {\n return 116 * Math.pow(Y / Hsluv.refY, 1 / 3) - 16;\n }\n }\n static lToY(L) {\n if (L <= 8) {\n return Hsluv.refY * L / Hsluv.kappa;\n }\n else {\n return Hsluv.refY * Math.pow((L + 16) / 116, 3);\n }\n }\n static rgbChannelToHex(chan) {\n const c = Math.round(chan * 255);\n const digit2 = c % 16;\n const digit1 = (c - digit2) / 16 | 0;\n return Hsluv.hexChars.charAt(digit1) + Hsluv.hexChars.charAt(digit2);\n }\n static hexToRgbChannel(hex, offset) {\n const digit1 = Hsluv.hexChars.indexOf(hex.charAt(offset));\n const digit2 = Hsluv.hexChars.indexOf(hex.charAt(offset + 1));\n const n = digit1 * 16 + digit2;\n return n / 255.0;\n }\n static distanceFromOriginAngle(slope, intercept, angle) {\n const d = intercept / (Math.sin(angle) - slope * Math.cos(angle));\n if (d < 0) {\n return Infinity;\n }\n else {\n return d;\n }\n }\n static distanceFromOrigin(slope, intercept) {\n return Math.abs(intercept) / Math.sqrt(Math.pow(slope, 2) + 1);\n }\n static min6(f1, f2, f3, f4, f5, f6) {\n return Math.min(f1, Math.min(f2, Math.min(f3, Math.min(f4, Math.min(f5, f6)))));\n }\n rgbToHex() {\n this.hex = \"#\";\n this.hex += Hsluv.rgbChannelToHex(this.rgb_r);\n this.hex += Hsluv.rgbChannelToHex(this.rgb_g);\n this.hex += Hsluv.rgbChannelToHex(this.rgb_b);\n }\n hexToRgb() {\n this.hex = this.hex.toLowerCase();\n this.rgb_r = Hsluv.hexToRgbChannel(this.hex, 1);\n this.rgb_g = Hsluv.hexToRgbChannel(this.hex, 3);\n this.rgb_b = Hsluv.hexToRgbChannel(this.hex, 5);\n }\n xyzToRgb() {\n this.rgb_r = Hsluv.fromLinear(Hsluv.m_r0 * this.xyz_x + Hsluv.m_r1 * this.xyz_y + Hsluv.m_r2 * this.xyz_z);\n this.rgb_g = Hsluv.fromLinear(Hsluv.m_g0 * this.xyz_x + Hsluv.m_g1 * this.xyz_y + Hsluv.m_g2 * this.xyz_z);\n this.rgb_b = Hsluv.fromLinear(Hsluv.m_b0 * this.xyz_x + Hsluv.m_b1 * this.xyz_y + Hsluv.m_b2 * this.xyz_z);\n }\n rgbToXyz() {\n const lr = Hsluv.toLinear(this.rgb_r);\n const lg = Hsluv.toLinear(this.rgb_g);\n const lb = Hsluv.toLinear(this.rgb_b);\n this.xyz_x = 0.41239079926595 * lr + 0.35758433938387 * lg + 0.18048078840183 * lb;\n this.xyz_y = 0.21263900587151 * lr + 0.71516867876775 * lg + 0.072192315360733 * lb;\n this.xyz_z = 0.019330818715591 * lr + 0.11919477979462 * lg + 0.95053215224966 * lb;\n }\n xyzToLuv() {\n const divider = this.xyz_x + 15 * this.xyz_y + 3 * this.xyz_z;\n let varU = 4 * this.xyz_x;\n let varV = 9 * this.xyz_y;\n if (divider !== 0) {\n varU /= divider;\n varV /= divider;\n }\n else {\n varU = NaN;\n varV = NaN;\n }\n this.luv_l = Hsluv.yToL(this.xyz_y);\n if (this.luv_l === 0) {\n this.luv_u = 0;\n this.luv_v = 0;\n }\n else {\n this.luv_u = 13 * this.luv_l * (varU - Hsluv.refU);\n this.luv_v = 13 * this.luv_l * (varV - Hsluv.refV);\n }\n }\n luvToXyz() {\n if (this.luv_l === 0) {\n this.xyz_x = 0;\n this.xyz_y = 0;\n this.xyz_z = 0;\n return;\n }\n const varU = this.luv_u / (13 * this.luv_l) + Hsluv.refU;\n const varV = this.luv_v / (13 * this.luv_l) + Hsluv.refV;\n this.xyz_y = Hsluv.lToY(this.luv_l);\n this.xyz_x = 0 - 9 * this.xyz_y * varU / ((varU - 4) * varV - varU * varV);\n this.xyz_z = (9 * this.xyz_y - 15 * varV * this.xyz_y - varV * this.xyz_x) / (3 * varV);\n }\n luvToLch() {\n this.lch_l = this.luv_l;\n this.lch_c = Math.sqrt(this.luv_u * this.luv_u + this.luv_v * this.luv_v);\n if (this.lch_c < 0.00000001) {\n this.lch_h = 0;\n }\n else {\n const hrad = Math.atan2(this.luv_v, this.luv_u);\n this.lch_h = hrad * 180.0 / Math.PI;\n if (this.lch_h < 0) {\n this.lch_h = 360 + this.lch_h;\n }\n }\n }\n lchToLuv() {\n const hrad = this.lch_h / 180.0 * Math.PI;\n this.luv_l = this.lch_l;\n this.luv_u = Math.cos(hrad) * this.lch_c;\n this.luv_v = Math.sin(hrad) * this.lch_c;\n }\n calculateBoundingLines(l) {\n const sub1 = Math.pow(l + 16, 3) / 1560896;\n const sub2 = sub1 > Hsluv.epsilon ? sub1 : l / Hsluv.kappa;\n const s1r = sub2 * (284517 * Hsluv.m_r0 - 94839 * Hsluv.m_r2);\n const s2r = sub2 * (838422 * Hsluv.m_r2 + 769860 * Hsluv.m_r1 + 731718 * Hsluv.m_r0);\n const s3r = sub2 * (632260 * Hsluv.m_r2 - 126452 * Hsluv.m_r1);\n const s1g = sub2 * (284517 * Hsluv.m_g0 - 94839 * Hsluv.m_g2);\n const s2g = sub2 * (838422 * Hsluv.m_g2 + 769860 * Hsluv.m_g1 + 731718 * Hsluv.m_g0);\n const s3g = sub2 * (632260 * Hsluv.m_g2 - 126452 * Hsluv.m_g1);\n const s1b = sub2 * (284517 * Hsluv.m_b0 - 94839 * Hsluv.m_b2);\n const s2b = sub2 * (838422 * Hsluv.m_b2 + 769860 * Hsluv.m_b1 + 731718 * Hsluv.m_b0);\n const s3b = sub2 * (632260 * Hsluv.m_b2 - 126452 * Hsluv.m_b1);\n this.r0s = s1r / s3r;\n this.r0i = s2r * l / s3r;\n this.r1s = s1r / (s3r + 126452);\n this.r1i = (s2r - 769860) * l / (s3r + 126452);\n this.g0s = s1g / s3g;\n this.g0i = s2g * l / s3g;\n this.g1s = s1g / (s3g + 126452);\n this.g1i = (s2g - 769860) * l / (s3g + 126452);\n this.b0s = s1b / s3b;\n this.b0i = s2b * l / s3b;\n this.b1s = s1b / (s3b + 126452);\n this.b1i = (s2b - 769860) * l / (s3b + 126452);\n }\n calcMaxChromaHpluv() {\n const r0 = Hsluv.distanceFromOrigin(this.r0s, this.r0i);\n const r1 = Hsluv.distanceFromOrigin(this.r1s, this.r1i);\n const g0 = Hsluv.distanceFromOrigin(this.g0s, this.g0i);\n const g1 = Hsluv.distanceFromOrigin(this.g1s, this.g1i);\n const b0 = Hsluv.distanceFromOrigin(this.b0s, this.b0i);\n const b1 = Hsluv.distanceFromOrigin(this.b1s, this.b1i);\n return Hsluv.min6(r0, r1, g0, g1, b0, b1);\n }\n calcMaxChromaHsluv(h) {\n const hueRad = h / 360 * Math.PI * 2;\n const r0 = Hsluv.distanceFromOriginAngle(this.r0s, this.r0i, hueRad);\n const r1 = Hsluv.distanceFromOriginAngle(this.r1s, this.r1i, hueRad);\n const g0 = Hsluv.distanceFromOriginAngle(this.g0s, this.g0i, hueRad);\n const g1 = Hsluv.distanceFromOriginAngle(this.g1s, this.g1i, hueRad);\n const b0 = Hsluv.distanceFromOriginAngle(this.b0s, this.b0i, hueRad);\n const b1 = Hsluv.distanceFromOriginAngle(this.b1s, this.b1i, hueRad);\n return Hsluv.min6(r0, r1, g0, g1, b0, b1);\n }\n hsluvToLch() {\n if (this.hsluv_l > 99.9999999) {\n this.lch_l = 100;\n this.lch_c = 0;\n }\n else if (this.hsluv_l < 0.00000001) {\n this.lch_l = 0;\n this.lch_c = 0;\n }\n else {\n this.lch_l = this.hsluv_l;\n this.calculateBoundingLines(this.hsluv_l);\n const max = this.calcMaxChromaHsluv(this.hsluv_h);\n this.lch_c = max / 100 * this.hsluv_s;\n }\n this.lch_h = this.hsluv_h;\n }\n lchToHsluv() {\n if (this.lch_l > 99.9999999) {\n this.hsluv_s = 0;\n this.hsluv_l = 100;\n }\n else if (this.lch_l < 0.00000001) {\n this.hsluv_s = 0;\n this.hsluv_l = 0;\n }\n else {\n this.calculateBoundingLines(this.lch_l);\n const max = this.calcMaxChromaHsluv(this.lch_h);\n this.hsluv_s = this.lch_c / max * 100;\n this.hsluv_l = this.lch_l;\n }\n this.hsluv_h = this.lch_h;\n }\n hpluvToLch() {\n if (this.hpluv_l > 99.9999999) {\n this.lch_l = 100;\n this.lch_c = 0;\n }\n else if (this.hpluv_l < 0.00000001) {\n this.lch_l = 0;\n this.lch_c = 0;\n }\n else {\n this.lch_l = this.hpluv_l;\n this.calculateBoundingLines(this.hpluv_l);\n const max = this.calcMaxChromaHpluv();\n this.lch_c = max / 100 * this.hpluv_p;\n }\n this.lch_h = this.hpluv_h;\n }\n lchToHpluv() {\n if (this.lch_l > 99.9999999) {\n this.hpluv_p = 0;\n this.hpluv_l = 100;\n }\n else if (this.lch_l < 0.00000001) {\n this.hpluv_p = 0;\n this.hpluv_l = 0;\n }\n else {\n this.calculateBoundingLines(this.lch_l);\n const max = this.calcMaxChromaHpluv();\n this.hpluv_p = this.lch_c / max * 100;\n this.hpluv_l = this.lch_l;\n }\n this.hpluv_h = this.lch_h;\n }\n hsluvToRgb() {\n this.hsluvToLch();\n this.lchToLuv();\n this.luvToXyz();\n this.xyzToRgb();\n }\n hpluvToRgb() {\n this.hpluvToLch();\n this.lchToLuv();\n this.luvToXyz();\n this.xyzToRgb();\n }\n hsluvToHex() {\n this.hsluvToRgb();\n this.rgbToHex();\n }\n hpluvToHex() {\n this.hpluvToRgb();\n this.rgbToHex();\n }\n rgbToHsluv() {\n this.rgbToXyz();\n this.xyzToLuv();\n this.luvToLch();\n this.lchToHpluv();\n this.lchToHsluv();\n }\n rgbToHpluv() {\n this.rgbToXyz();\n this.xyzToLuv();\n this.luvToLch();\n this.lchToHpluv();\n this.lchToHpluv();\n }\n hexToHsluv() {\n this.hexToRgb();\n this.rgbToHsluv();\n }\n hexToHpluv() {\n this.hexToRgb();\n this.rgbToHpluv();\n }\n}\nHsluv.hexChars = \"0123456789abcdef\";\nHsluv.refY = 1.0;\nHsluv.refU = 0.19783000664283;\nHsluv.refV = 0.46831999493879;\nHsluv.kappa = 903.2962962;\nHsluv.epsilon = 0.0088564516;\nHsluv.m_r0 = 3.240969941904521;\nHsluv.m_r1 = -1.537383177570093;\nHsluv.m_r2 = -0.498610760293;\nHsluv.m_g0 = -0.96924363628087;\nHsluv.m_g1 = 1.87596750150772;\nHsluv.m_g2 = 0.041555057407175;\nHsluv.m_b0 = 0.055630079696993;\nHsluv.m_b1 = -0.20397695888897;\nHsluv.m_b2 = 1.056971514242878;\n","import { Hsluv } from 'hsluv'\nimport chroma from 'chroma-js'\nimport { ColorFormat } from '@tps/model.types'\nimport {\n AlgorithmVersionConfiguration,\n VisionSimulationModeConfiguration,\n} from '@tps/configuration.types'\nimport { Channel, ChannelWithAlpha, HexModel } from '@tps/color.types'\n\nconst colorBlindMatrices = {\n PROTANOPIA: [\n [0.567, 0.433, 0],\n [0.558, 0.442, 0],\n [0, 0.242, 0.758],\n ],\n PROTANOMALY: [\n [0.817, 0.183, 0],\n [0.333, 0.667, 0],\n [0, 0.125, 0.875],\n ],\n DEUTERANOPIA: [\n [0.625, 0.375, 0],\n [0.7, 0.3, 0],\n [0, 0.3, 0.7],\n ],\n DEUTERANOMALY: [\n [0.8, 0.2, 0],\n [0.258, 0.742, 0],\n [0, 0.142, 0.858],\n ],\n TRITANOPIA: [\n [0.95, 0.05, 0],\n [0, 0.433, 0.567],\n [0, 0.475, 0.525],\n ],\n TRITANOMALY: [\n [0.967, 0.033, 0],\n [0, 0.733, 0.267],\n [0, 0.183, 0.817],\n ],\n ACHROMATOPSIA: [\n [0.299, 0.587, 0.114],\n [0.299, 0.587, 0.114],\n [0.299, 0.587, 0.114],\n ],\n ACHROMATOMALY: [\n [0.618, 0.32, 0.062],\n [0.163, 0.775, 0.062],\n [0.163, 0.32, 0.516],\n ],\n}\n\nconst applyColorMatrix = (color: Channel, matrix: number[][]): Channel => {\n const [r, g, b] = color\n const [m1, m2, m3] = matrix\n\n return [\n Math.round(r * m1[0] + g * m1[1] + b * m1[2]),\n Math.round(r * m2[0] + g * m2[1] + b * m2[2]),\n Math.round(r * m3[0] + g * m3[1] + b * m3[2]),\n ]\n}\n\nconst rgbToCmyk = (\n r: number,\n g: number,\n b: number\n): [number, number, number, number] => {\n const r1 = r / 255,\n g1 = g / 255,\n b1 = b / 255\n const k = 1 - Math.max(r1, g1, b1)\n\n if (k === 1) return [0, 0, 0, 1]\n\n return [\n (1 - r1 - k) / (1 - k),\n (1 - g1 - k) / (1 - k),\n (1 - b1 - k) / (1 - k),\n k,\n ]\n}\n\nconst cmykToRgb = (\n c: number,\n m: number,\n y: number,\n k: number\n): Channel => [\n Math.round(255 * (1 - c) * (1 - k)),\n Math.round(255 * (1 - m) * (1 - k)),\n Math.round(255 * (1 - y) * (1 - k)),\n]\n\nexport default class Color {\n private render: 'HEX' | 'RGB'\n private sourceColor: Channel\n private lightness: number\n private alpha: number\n private hueShifting: number\n private chromaShifting: number\n private algorithmVersion: AlgorithmVersionConfiguration\n private visionSimulationMode: VisionSimulationModeConfiguration\n\n constructor({\n render = 'HEX',\n sourceColor = [0, 0, 0],\n lightness = parseFloat((chroma(sourceColor).luminance() * 100).toFixed(1)),\n alpha = 1,\n hueShifting = 0,\n chromaShifting = 100,\n algorithmVersion = 'v3',\n visionSimulationMode = 'NONE',\n }: {\n render?: 'HEX' | 'RGB'\n sourceColor?: Channel\n lightness?: number\n alpha?: number\n hueShifting?: number\n chromaShifting?: number\n algorithmVersion?: AlgorithmVersionConfiguration\n visionSimulationMode?: VisionSimulationModeConfiguration\n }) {\n this.render = render\n this.sourceColor = sourceColor\n this.lightness = lightness\n this.alpha = alpha\n this.hueShifting = hueShifting\n this.chromaShifting = chromaShifting\n this.algorithmVersion = algorithmVersion\n this.visionSimulationMode = visionSimulationMode\n }\n\n adjustHue = (hue: number): number => {\n if (hue + this.hueShifting < 0) return hue + this.hueShifting + 360\n if (hue + this.hueShifting > 360) return hue + this.hueShifting - 360\n\n return hue + this.hueShifting\n }\n\n adjustChroma = (chroma: number): number => {\n if (this.algorithmVersion === 'v1') return chroma\n if (this.algorithmVersion === 'v2')\n return Math.sin((this.lightness / 100) * Math.PI) * chroma\n if (this.algorithmVersion === 'v3') {\n const lightnessFactor = this.lightness / 100\n const sinComponent = Math.sin(lightnessFactor * Math.PI)\n const tanhComponent = Math.tanh(lightnessFactor * Math.PI)\n const weightedComponent = sinComponent * 0.5 + tanhComponent * 0.5\n const smoothedComponent = Math.pow(weightedComponent, 0.5)\n\n return smoothedComponent * chroma\n }\n\n return chroma\n }\n\n setColor = (): ColorFormat<typeof this.render> => {\n if (this.render === 'HEX')\n return this.simulateColorBlindHex(this.sourceColor)\n\n return this.simulateColorBlindRgb(this.sourceColor)\n }\n\n setColorWithAlpha = (): ColorFormat<typeof this.render> => {\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(this.sourceColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(this.sourceColor), this.alpha]\n }\n\n lch = (): ColorFormat<typeof this.render> => {\n const lch = chroma(this.sourceColor).lch(),\n newColor = chroma\n .lch(\n this.lightness,\n this.adjustChroma(lch[1] * (this.chromaShifting / 100)),\n this.adjustHue(lch[2])\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n lcha = (): ColorFormat<typeof this.render> => {\n const lch = chroma(this.sourceColor).lch(),\n newColor = chroma\n .lch(\n lch[0],\n this.adjustChroma(lch[1] * (this.chromaShifting / 100)),\n this.adjustHue(lch[2])\n )\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n oklch = (): ColorFormat<typeof this.render> => {\n const oklch = chroma(this.sourceColor).oklch(),\n newColor = chroma\n .oklch(\n this.lightness / 100,\n this.adjustChroma(oklch[1] * (this.chromaShifting / 100)),\n this.adjustHue(oklch[2])\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n oklcha = (): ColorFormat<typeof this.render> => {\n const oklch = chroma(this.sourceColor).oklch(),\n newColor = chroma\n .oklch(\n oklch[0],\n this.adjustChroma(oklch[1] * (this.chromaShifting / 100)),\n this.adjustHue(oklch[2])\n )\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n lab = (): ColorFormat<typeof this.render> => {\n const labA = chroma(this.sourceColor).get('lab.a'),\n labB = chroma(this.sourceColor).get('lab.b'),\n chr = Math.sqrt(labA ** 2 + labB ** 2) * (this.chromaShifting / 100)\n let h = Math.atan(labB / labA) + this.hueShifting * (Math.PI / 180)\n\n if (h > Math.PI) h = Math.PI\n else if (h < -Math.PI) h = Math.PI\n\n let newLabA = chr * Math.cos(h),\n newLabB = chr * Math.sin(h)\n\n if (Math.sign(labA) === -1 && Math.sign(labB) === 1) {\n newLabA *= -1\n newLabB *= -1\n }\n if (Math.sign(labA) === -1 && Math.sign(labB) === -1) {\n newLabA *= -1\n newLabB *= -1\n }\n\n const newColor = chroma\n .lab(\n this.lightness,\n this.adjustChroma(newLabA),\n this.adjustChroma(newLabB)\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n laba = (): ColorFormat<typeof this.render> => {\n const labA = chroma(this.sourceColor).get('lab.a'),\n labB = chroma(this.sourceColor).get('lab.b'),\n labL = chroma(this.sourceColor).get('lab.l'),\n chr = Math.sqrt(labA ** 2 + labB ** 2) * (this.chromaShifting / 100)\n let h = Math.atan(labB / labA) + this.hueShifting * (Math.PI / 180)\n\n if (h > Math.PI) h = Math.PI\n else if (h < -Math.PI) h = Math.PI\n\n let newLabA = chr * Math.cos(h),\n newLabB = chr * Math.sin(h)\n\n if (Math.sign(labA) === -1 && Math.sign(labB) === 1) {\n newLabA *= -1\n newLabB *= -1\n }\n if (Math.sign(labA) === -1 && Math.sign(labB) === -1) {\n newLabA *= -1\n newLabB *= -1\n }\n\n const newColor = chroma\n .lab(labL, this.adjustChroma(newLabA), this.adjustChroma(newLabB))\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n oklab = (): ColorFormat<typeof this.render> => {\n const labA = chroma(this.sourceColor).get('oklab.a'),\n labB = chroma(this.sourceColor).get('oklab.b'),\n chr = Math.sqrt(labA ** 2 + labB ** 2) * (this.chromaShifting / 100)\n let h = Math.atan(labB / labA) + this.hueShifting * (Math.PI / 180)\n\n if (h > Math.PI) h = Math.PI\n else if (h < -Math.PI) h = Math.PI\n\n let newLabA = chr * Math.cos(h),\n newLabB = chr * Math.sin(h)\n\n if (Math.sign(labA) === -1 && Math.sign(labB) === 1) {\n newLabA *= -1\n newLabB *= -1\n }\n if (Math.sign(labA) === -1 && Math.sign(labB) === -1) {\n newLabA *= -1\n newLabB *= -1\n }\n\n if (Number.isNaN(newLabA)) newLabA = 0\n if (Number.isNaN(newLabB)) newLabB = 0\n\n const newColor = chroma\n .oklab(\n this.lightness / 100,\n this.adjustChroma(newLabA),\n this.adjustChroma(newLabB)\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n oklaba = (): ColorFormat<typeof this.render> => {\n const labA = chroma(this.sourceColor).get('oklab.a'),\n labB = chroma(this.sourceColor).get('oklab.b'),\n labL = chroma(this.sourceColor).get('oklab.l'),\n chr = Math.sqrt(labA ** 2 + labB ** 2) * (this.chromaShifting / 100)\n let h = Math.atan(labB / labA) + this.hueShifting * (Math.PI / 180)\n\n if (h > Math.PI) h = Math.PI\n else if (h < -Math.PI) h = Math.PI\n\n let newLabA = chr * Math.cos(h),\n newLabB = chr * Math.sin(h)\n\n if (Math.sign(labA) === -1 && Math.sign(labB) === 1) {\n newLabA *= -1\n newLabB *= -1\n }\n if (Math.sign(labA) === -1 && Math.sign(labB) === -1) {\n newLabA *= -1\n newLabB *= -1\n }\n\n if (Number.isNaN(newLabA)) newLabA = 0\n if (Number.isNaN(newLabB)) newLabB = 0\n\n const newColor = chroma\n .oklab(labL, this.adjustChroma(newLabA), this.adjustChroma(newLabB))\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n hsl = (): ColorFormat<typeof this.render> => {\n const hsl = chroma(this.sourceColor).hsl(),\n newColor = chroma\n .hsl(\n this.adjustHue(hsl[0]),\n this.adjustChroma(hsl[1] * (this.chromaShifting / 100)),\n this.lightness / 100\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n hsla = (): ColorFormat<typeof this.render> => {\n const hsl = chroma(this.sourceColor).hsl(),\n newColor = chroma\n .hsl(\n this.adjustHue(hsl[0]),\n this.adjustChroma(hsl[1] * (this.chromaShifting / 100)),\n hsl[2]\n )\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n hsluv = (): ColorFormat<typeof this.render> => {\n const hsluv = new Hsluv()\n\n hsluv.rgb_r = this.sourceColor[0] / 255\n hsluv.rgb_g = this.sourceColor[1] / 255\n hsluv.rgb_b = this.sourceColor[2] / 255\n\n hsluv.rgbToHsluv()\n\n hsluv.hsluv_l = this.lightness\n hsluv.hsluv_s = this.adjustChroma(\n hsluv.hsluv_s * (this.chromaShifting / 100)\n )\n hsluv.hsluv_h = this.adjustHue(hsluv.hsluv_h)\n\n if (Number.isNaN(hsluv.hsluv_s)) hsluv.hsluv_s = 0\n if (Number.isNaN(hsluv.hsluv_h)) hsluv.hsluv_h = 0\n\n hsluv.hsluvToRgb()\n\n const newColor: Channel = [\n hsluv.rgb_r * 255,\n hsluv.rgb_g * 255,\n hsluv.rgb_b * 255,\n ]\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n hsluva = (): ColorFormat<typeof this.render> => {\n const hsluv = new Hsluv()\n\n hsluv.rgb_r = this.sourceColor[0] / 255\n hsluv.rgb_g = this.sourceColor[1] / 255\n hsluv.rgb_b = this.sourceColor[2] / 255\n\n hsluv.rgbToHsluv()\n\n hsluv.hsluv_s = this.adjustChroma(\n hsluv.hsluv_s * (this.chromaShifting / 100)\n )\n hsluv.hsluv_h = this.adjustHue(hsluv.hsluv_h)\n\n if (Number.isNaN(hsluv.hsluv_s)) hsluv.hsluv_s = 0\n if (Number.isNaN(hsluv.hsluv_h)) hsluv.hsluv_h = 0\n\n hsluv.hsluvToRgb()\n\n const newColor: Channel = [\n hsluv.rgb_r * 255,\n hsluv.rgb_g * 255,\n hsluv.rgb_b * 255,\n ]\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n hsv = (): ColorFormat<typeof this.render> => {\n const hsv = chroma(this.sourceColor).hsv(),\n newColor = chroma\n .hsv(\n this.adjustHue(Number.isNaN(hsv[0]) ? 0 : hsv[0]),\n this.adjustChroma(hsv[1] * (this.chromaShifting / 100)),\n this.lightness / 100\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n hsva = (): ColorFormat<typeof this.render> => {\n const hsv = chroma(this.sourceColor).hsv(),\n newColor = chroma\n .hsv(\n this.adjustHue(Number.isNaN(hsv[0]) ? 0 : hsv[0]),\n this.adjustChroma(hsv[1] * (this.chromaShifting / 100)),\n hsv[2]\n )\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n cmyk = (): ColorFormat<typeof this.render> => {\n const hsl = chroma(this.sourceColor).hsl()\n const [r, g, b] = chroma\n .hsl(\n this.adjustHue(Number.isNaN(hsl[0]) ? 0 : hsl[0]),\n hsl[1],\n hsl[2]\n )\n .rgb()\n\n const [c, m, y] = rgbToCmyk(r, g, b)\n const adjustedC = Math.min(\n 1,\n Math.max(0, this.adjustChroma(c * (this.chromaShifting / 100)))\n )\n const adjustedM = Math.min(\n 1,\n Math.max(0, this.adjustChroma(m * (this.chromaShifting / 100)))\n )\n const adjustedY = Math.min(\n 1,\n Math.max(0, this.adjustChroma(y * (this.chromaShifting / 100)))\n )\n const adjustedK = Math.min(1, Math.max(0, 1 - this.lightness / 100))\n\n const newColor = cmykToRgb(adjustedC, adjustedM, adjustedY, adjustedK)\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n cmyka = (): ColorFormat<typeof this.render> => {\n const hsl = chroma(this.sourceColor).hsl()\n const [r, g, b] = chroma\n .hsl(\n this.adjustHue(Number.isNaN(hsl[0]) ? 0 : hsl[0]),\n hsl[1],\n hsl[2]\n )\n .rgb()\n\n const [c, m, y, k] = rgbToCmyk(r, g, b)\n const adjustedC = Math.min(\n 1,\n Math.max(0, this.adjustChroma(c * (this.chromaShifting / 100)))\n )\n const adjustedM = Math.min(\n 1,\n Math.max(0, this.adjustChroma(m * (this.chromaShifting / 100)))\n )\n const adjustedY = Math.min(\n 1,\n Math.max(0, this.adjustChroma(y * (this.chromaShifting / 100)))\n )\n\n const newColor = cmykToRgb(adjustedC, adjustedM, adjustedY, k)\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n getHsluv = (): Channel => {\n const hsluv = new Hsluv()\n hsluv.rgb_r = this.sourceColor[0] / 255\n hsluv.rgb_g = this.sourceColor[1] / 255\n hsluv.rgb_b = this.sourceColor[2] / 255\n hsluv.rgbToHsluv()\n\n return [hsluv.hsluv_h, hsluv.hsluv_s, hsluv.hsluv_l]\n }\n\n simulateColorBlindHex = (color: Channel): HexModel => {\n const actions: {\n [action: string]: () => void\n } = {\n NONE: () => chroma(color).hex(),\n PROTANOMALY: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.PROTANOMALY\n )\n return chroma(transformed).hex()\n },\n PROTANOPIA: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.PROTANOPIA\n )\n return chroma(transformed).hex()\n },\n DEUTERANOMALY: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.DEUTERANOMALY\n )\n return chroma(transformed).hex()\n },\n DEUTERANOPIA: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.DEUTERANOPIA\n )\n return chroma(transformed).hex()\n },\n TRITANOMALY: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.TRITANOMALY\n )\n return chroma(transformed).hex()\n },\n TRITANOPIA: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.TRITANOPIA\n )\n return chroma(transformed).hex()\n },\n ACHROMATOMALY: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.ACHROMATOMALY\n )\n return chroma(transformed).hex()\n },\n ACHROMATOPSIA: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.ACHROMATOPSIA\n )\n return chroma(transformed).hex()\n },\n }\n\n const result = actions[this.visionSimulationMode]?.()\n return result !== undefined ? result : '#000000'\n }\n\n simulateColorBlindRgb = (color: Channel): Channel => {\n const actions: {\n [action: string]: () => void\n } = {\n NONE: () => chroma(color).rgb(),\n PROTANOMALY: () =>\n applyColorMatrix(color, colorBlindMatrices.PROTANOMALY),\n PROTANOPIA: () => applyColorMatrix(color, colorBlindMatrices.PROTANOPIA),\n DEUTERANOMALY: () =>\n applyColorMatrix(color, colorBlindMatrices.DEUTERANOMALY),\n DEUTERANOPIA: () =>\n applyColorMatrix(color, colorBlindMatrices.DEUTERANOPIA),\n TRITANOMALY: () =>\n applyColorMatrix(color, colorBlindMatrices.TRITANOMALY),\n TRITANOPIA: () => applyColorMatrix(color, colorBlindMatrices.TRITANOPIA),\n ACHROMATOMALY: () =>\n applyColorMatrix(color, colorBlindMatrices.ACHROMATOMALY),\n ACHROMATOPSIA: () =>\n applyColorMatrix(color, colorBlindMatrices.ACHROMATOPSIA),\n }\n\n const result = actions[this.visionSimulationMode]?.()\n return result !== undefined ? result : [0, 0, 0]\n }\n\n mixColorsRgb = (\n colorA: ChannelWithAlpha,\n colorB: ChannelWithAlpha\n ): Channel => {\n const [r1, g1, b1, a1] = colorA\n const [r2, g2, b2, a2] = colorB\n\n if (a1 === 1) return [r1, g1, b1]\n if (a1 === 0) return [r2, g2, b2]\n\n const alpha = a1 + a2 * (1 - a1)\n const r = Math.min(\n 255,\n Math.max(0, Math.round((r1 * a1 + r2 * a2 * (1 - a1)) / alpha))\n )\n const g = Math.min(\n 255,\n Math.max(0, Math.round((g1 * a1 + g2 * a2 * (1 - a1)) / alpha))\n )\n const b = Math.min(\n 255,\n Math.max(0, Math.round((b1 * a1 + b2 * a2 * (1 - a1)) / alpha))\n )\n\n return this.simulateColorBlindRgb([r, g, b])\n }\n\n mixColorsHex = (colorA: HexModel, colorB: HexModel): HexModel => {\n const hexRegex = /^#([0-9A-Fa-f]{3}){1,2}([0-9A-Fa-f]{2})?$/\n if (!hexRegex.test(colorA)) return colorA\n if (!hexRegex.test(colorB)) return colorB\n\n const rgbA = chroma(colorA).rgba()\n const rgbB = chroma(colorB).rgba()\n const mixed = this.mixColorsRgb(rgbA, rgbB)\n\n return chroma(mixed).hex()\n }\n}\n"],"names":["Hsluv","c","Y","L","chan","digit2","digit1","hex","offset","slope","intercept","angle","d","f1","f2","f3","f4","f5","f6","lr","lg","lb","divider","varU","varV","hrad","l","sub1","sub2","s1r","s2r","s3r","s1g","s2g","s3g","s1b","s2b","s3b","r0","r1","g0","g1","b0","b1","h","hueRad","max","colorBlindMatrices","applyColorMatrix","color","matrix","r","g","b","m1","m2","m3","rgbToCmyk","k","cmykToRgb","m","y","Color","render","sourceColor","lightness","chroma","alpha","hueShifting","chromaShifting","algorithmVersion","visionSimulationMode","__publicField","hue","lightnessFactor","sinComponent","tanhComponent","weightedComponent","lch","newColor","oklch","labA","labB","chr","newLabA","newLabB","labL","hsl","hsluv","hsv","adjustedC","adjustedM","adjustedY","adjustedK","actions","transformed","result","_a","colorA","colorB","a1","r2","g2","b2","a2","hexRegex","rgbA","rgbB","mixed"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,4 @@
1
+ import { PaletteData } from '../../types/data.types';
2
+ declare const makeCompose: (paletteData: PaletteData) => string;
3
+ export default makeCompose;
4
+ //# sourceMappingURL=makeCompose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeCompose.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeCompose.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG7C,QAAA,MAAM,WAAW,gBAAiB,WAAW,WA2C5C,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { PaletteData } from '../../types/data.types';
2
+ import { ColorSpaceConfiguration } from '../../types/configuration.types';
3
+ declare const makeCssCustomProps: (paletteData: PaletteData, colorSpace: ColorSpaceConfiguration) => string;
4
+ export default makeCssCustomProps;
5
+ //# sourceMappingURL=makeCssCustomProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeCssCustomProps.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeCssCustomProps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAwB,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAGlE,QAAA,MAAM,kBAAkB,gBACT,WAAW,cACZ,uBAAuB,WAqGpC,CAAA;AAED,eAAe,kBAAkB,CAAA"}
@@ -1,5 +1,4 @@
1
- import { PaletteData } from '../types/data.types';
2
-
1
+ import { PaletteData } from '../../types/data.types';
3
2
  interface colorCsv {
4
3
  name: string;
5
4
  csv: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeCsv.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeCsv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,QAAA,MAAM,OAAO,gBAAiB,WAAW,cA2CxC,CAAA;AAED,eAAe,OAAO,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { PaletteData } from '../../types/data.types';
2
+ import { ColorSpaceConfiguration } from '../../types/configuration.types';
3
+ declare const makeDtcgTokens: (paletteData: PaletteData, colorSpace: ColorSpaceConfiguration) => string;
4
+ export default makeDtcgTokens;
5
+ //# sourceMappingURL=makeDtcgTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeDtcgTokens.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeDtcgTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAwB,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAElE,QAAA,MAAM,cAAc,gBACL,WAAW,cACZ,uBAAuB,WAkMpC,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { PaletteData } from '../../types/data.types';
2
+ import { ColorSpaceConfiguration } from '../../types/configuration.types';
3
+ declare const makeLessVariables: (paletteData: PaletteData, colorSpace: ColorSpaceConfiguration) => string;
4
+ export default makeLessVariables;
5
+ //# sourceMappingURL=makeLessVariables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeLessVariables.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeLessVariables.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAwB,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAGlE,QAAA,MAAM,iBAAiB,gBACR,WAAW,cACZ,uBAAuB,WAuJpC,CAAA;AAED,eAAe,iBAAiB,CAAA"}
@@ -1,5 +1,4 @@
1
- import { PaletteData } from '../types/data.types';
2
-
1
+ import { PaletteData } from '../../types/data.types';
3
2
  declare const makeNativeTokens: (paletteData: PaletteData) => string;
4
3
  export default makeNativeTokens;
5
4
  //# sourceMappingURL=makeNativeTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeNativeTokens.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeNativeTokens.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EAGZ,MAAM,iBAAiB,CAAA;AAGxB,QAAA,MAAM,gBAAgB,gBAAiB,WAAW,WA2FjD,CAAA;AAED,eAAe,gBAAgB,CAAA"}
@@ -1,5 +1,4 @@
1
- import { PaletteData } from '../types/data.types';
2
-
1
+ import { PaletteData } from '../../types/data.types';
3
2
  declare const makeResources: (paletteData: PaletteData) => string;
4
3
  export default makeResources;
5
4
  //# sourceMappingURL=makeResources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeResources.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeResources.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG7C,QAAA,MAAM,aAAa,gBAAiB,WAAW,WA6C9C,CAAA;AAED,eAAe,aAAa,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { PaletteData } from '../../types/data.types';
2
+ import { ColorSpaceConfiguration } from '../../types/configuration.types';
3
+ declare const makeScssVariables: (paletteData: PaletteData, colorSpace: ColorSpaceConfiguration) => string;
4
+ export default makeScssVariables;
5
+ //# sourceMappingURL=makeScssVariables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeScssVariables.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeScssVariables.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAwB,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAGlE,QAAA,MAAM,iBAAiB,gBACR,WAAW,cACZ,uBAAuB,WAsMpC,CAAA;AAED,eAAe,iBAAiB,CAAA"}
@@ -1,5 +1,4 @@
1
- import { PaletteData } from '../types/data.types';
2
-
1
+ import { PaletteData } from '../../types/data.types';
3
2
  declare const makeStyleDictionaryV3Tokens: (paletteData: PaletteData) => string;
4
3
  export default makeStyleDictionaryV3Tokens;
5
4
  //# sourceMappingURL=makeStyleDictionaryV3Tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeStyleDictionaryV3Tokens.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeStyleDictionaryV3Tokens.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EAGZ,MAAM,iBAAiB,CAAA;AAExB,QAAA,MAAM,2BAA2B,gBAAiB,WAAW,WAoE5D,CAAA;AAED,eAAe,2BAA2B,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { PaletteData } from '../../types/data.types';
2
+ declare const makeSwiftUI: (paletteData: PaletteData) => string;
3
+ export default makeSwiftUI;
4
+ //# sourceMappingURL=makeSwiftUI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeSwiftUI.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeSwiftUI.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG7C,QAAA,MAAM,WAAW,gBAAiB,WAAW,WAuD5C,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -1,5 +1,4 @@
1
- import { PaletteData } from '../types/data.types';
2
-
1
+ import { PaletteData } from '../../types/data.types';
3
2
  declare const makeTailwindV3Config: (paletteData: PaletteData) => string;
4
3
  export default makeTailwindV3Config;
5
4
  //# sourceMappingURL=makeTailwindV3Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeTailwindV3Config.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeTailwindV3Config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG7C,QAAA,MAAM,oBAAoB,gBAAiB,WAAW,WA2DrD,CAAA;AAED,eAAe,oBAAoB,CAAA"}
@@ -1,5 +1,4 @@
1
- import { PaletteData } from '../types/data.types';
2
-
1
+ import { PaletteData } from '../../types/data.types';
3
2
  declare const makeTailwindV4Config: (paletteData: PaletteData) => string;
4
3
  export default makeTailwindV4Config;
5
4
  //# sourceMappingURL=makeTailwindV4Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeTailwindV4Config.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeTailwindV4Config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG7C,QAAA,MAAM,oBAAoB,gBAAiB,WAAW,WA2ErD,CAAA;AAED,eAAe,oBAAoB,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { PaletteData } from '../../types/data.types';
2
+ declare const makeUIKit: (paletteData: PaletteData) => string;
3
+ export default makeUIKit;
4
+ //# sourceMappingURL=makeUIKit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeUIKit.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeUIKit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG7C,QAAA,MAAM,SAAS,gBAAiB,WAAW,WA8C1C,CAAA;AAED,eAAe,SAAS,CAAA"}
@@ -1,5 +1,4 @@
1
- import { PaletteData } from '../types/data.types';
2
-
1
+ import { PaletteData } from '../../types/data.types';
3
2
  declare const makeUniversalTokens: (paletteData: PaletteData) => string;
4
3
  export default makeUniversalTokens;
5
4
  //# sourceMappingURL=makeUniversalTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeUniversalTokens.d.ts","sourceRoot":"","sources":["../../../src/formats/primitives/makeUniversalTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAwB,MAAM,iBAAiB,CAAA;AAEnE,QAAA,MAAM,mBAAmB,gBAAiB,WAAW,WA6JpD,CAAA;AAED,eAAe,mBAAmB,CAAA"}
@@ -0,0 +1,26 @@
1
+ import { SystemData, SystemDataToken } from '../../types/system.types';
2
+ import { PaletteData, PaletteDataThemeItem } from '../../types/data.types';
3
+ export interface ParsedRef {
4
+ themeId: string;
5
+ colorId: string;
6
+ shadeName: string;
7
+ }
8
+ export declare const parseShadeId: (shadeId: string) => ParsedRef | null;
9
+ export declare const findColorName: (paletteData: PaletteData, themeId: string, colorId: string) => string | null;
10
+ export declare const findThemeName: (paletteData: PaletteData, themeId: string) => string | null;
11
+ export declare const workingThemes: (paletteData: PaletteData) => Array<PaletteDataThemeItem>;
12
+ export declare const isSourceShade: (shadeName: string) => boolean;
13
+ export interface ResolvedTokenForTheme {
14
+ themeId: string;
15
+ themeName: string | null;
16
+ colorName: string | null;
17
+ shadeName: string | null;
18
+ isUnbound: boolean;
19
+ }
20
+ export declare const resolveTokenPerTheme: (paletteData: PaletteData, token: SystemDataToken) => Array<ResolvedTokenForTheme>;
21
+ export declare const partitionTokens: (paletteData: PaletteData, systemData: SystemData) => {
22
+ bound: Array<SystemDataToken>;
23
+ unbound: Array<SystemDataToken>;
24
+ excluded: Array<SystemDataToken>;
25
+ };
26
+ //# sourceMappingURL=_helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_helpers.d.ts","sourceRoot":"","sources":["../../../src/formats/semantics/_helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,eAAO,MAAM,YAAY,YAAa,MAAM,KAAG,SAAS,GAAG,IAM1D,CAAA;AAED,eAAO,MAAM,aAAa,gBACX,WAAW,WACf,MAAM,WACN,MAAM,KACd,MAAM,GAAG,IAIX,CAAA;AAED,eAAO,MAAM,aAAa,gBACX,WAAW,WACf,MAAM,KACd,MAAM,GAAG,IACoD,CAAA;AAEhE,eAAO,MAAM,aAAa,gBACX,WAAW,KACvB,KAAK,CAAC,oBAAoB,CAGoC,CAAA;AAEjE,eAAO,MAAM,aAAa,cAAe,MAAM,KAAG,OAC1B,CAAA;AAExB,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,eAAO,MAAM,oBAAoB,gBAClB,WAAW,SACjB,eAAe,KACrB,KAAK,CAAC,qBAAqB,CA0B1B,CAAA;AAEJ,eAAO,MAAM,eAAe,gBACb,WAAW,cACZ,UAAU,KACrB;IACD,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;IAC7B,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;IAC/B,QAAQ,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;CAejC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { SystemData } from '../../types/system.types';
2
+ import { PaletteData } from '../../types/data.types';
3
+ declare const makeComposeSemantics: (paletteData: PaletteData, systemData: SystemData) => string;
4
+ export default makeComposeSemantics;
5
+ //# sourceMappingURL=makeComposeSemantics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeComposeSemantics.d.ts","sourceRoot":"","sources":["../../../src/formats/semantics/makeComposeSemantics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAI7C,QAAA,MAAM,oBAAoB,gBACX,WAAW,cACZ,UAAU,KACrB,MAuDF,CAAA;AAED,eAAe,oBAAoB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { SystemData } from '../../types/system.types';
2
+ import { PaletteData } from '../../types/data.types';
3
+ declare const makeCssSemantics: (paletteData: PaletteData, systemData: SystemData) => string;
4
+ export default makeCssSemantics;
5
+ //# sourceMappingURL=makeCssSemantics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeCssSemantics.d.ts","sourceRoot":"","sources":["../../../src/formats/semantics/makeCssSemantics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAQ7C,QAAA,MAAM,gBAAgB,gBACP,WAAW,cACZ,UAAU,KACrB,MA2EF,CAAA;AAED,eAAe,gBAAgB,CAAA"}