@a_ng_d/utils-ui-color-palette 1.6.3 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +111 -10
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -6
- package/dist/index.js.map +1 -1
- package/dist/modules/code/code.js +16 -16
- package/dist/modules/code/code.js.map +1 -1
- package/dist/modules/color-harmony/color-harmony.d.ts +25 -0
- package/dist/modules/color-harmony/color-harmony.d.ts.map +1 -0
- package/dist/modules/color-harmony/color-harmony.js +136 -0
- package/dist/modules/color-harmony/color-harmony.js.map +1 -0
- package/dist/modules/dominant-colors/dominant-colors.d.ts +25 -0
- package/dist/modules/dominant-colors/dominant-colors.d.ts.map +1 -0
- package/dist/modules/dominant-colors/dominant-colors.js +125 -0
- package/dist/modules/dominant-colors/dominant-colors.js.map +1 -0
- package/dist/types/color.types.d.ts +29 -0
- package/dist/types/color.types.d.ts.map +1 -1
- package/package.json +3 -6
package/README.md
CHANGED
|
@@ -27,6 +27,20 @@ UI Color Palette is available for:
|
|
|
27
27
|
- Color mixing and blending
|
|
28
28
|
- Brightness and saturation adjustments
|
|
29
29
|
|
|
30
|
+
- **Dominant Colors Extraction**:
|
|
31
|
+
|
|
32
|
+
- Extract dominant colors from images using K-means clustering
|
|
33
|
+
- Configurable number of colors to extract
|
|
34
|
+
- Automatic color frequency calculation
|
|
35
|
+
- Support for transparent pixel filtering
|
|
36
|
+
|
|
37
|
+
- **Color Harmony Generation**:
|
|
38
|
+
|
|
39
|
+
- Generate analogous, complementary, triadic, tetradic, and square color harmonies
|
|
40
|
+
- Configurable analogous spread angle
|
|
41
|
+
- Automatic color relationship calculations
|
|
42
|
+
- Support for all major color harmony types
|
|
43
|
+
|
|
30
44
|
- **Palette Generation**:
|
|
31
45
|
- Create harmonious color schemes
|
|
32
46
|
- Generate accessible color combinations
|
|
@@ -43,7 +57,13 @@ yarn add @a_ng_d/utils-ui-color-palette
|
|
|
43
57
|
## Usage
|
|
44
58
|
|
|
45
59
|
```typescript
|
|
46
|
-
import {
|
|
60
|
+
import {
|
|
61
|
+
Color,
|
|
62
|
+
Contrast,
|
|
63
|
+
Data,
|
|
64
|
+
DominantColors,
|
|
65
|
+
ColorHarmony,
|
|
66
|
+
} from '@a_ng_d/utils-ui-color-palette'
|
|
47
67
|
|
|
48
68
|
// Use Color class for color manipulation
|
|
49
69
|
const color = new Color({
|
|
@@ -120,6 +140,87 @@ const minSizes = contrast.getMinFontSizes() // Returns minimum font sizes
|
|
|
120
140
|
const lightness = contrast.getLightnessForContrastRatio(4.5) // For WCAG AA
|
|
121
141
|
```
|
|
122
142
|
|
|
143
|
+
### Dominant Colors Extraction
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
import { DominantColors } from '@a_ng_d/utils-ui-color-palette'
|
|
147
|
+
|
|
148
|
+
// Prepare your image data (from canvas, file, etc.)
|
|
149
|
+
const canvas = document.createElement('canvas')
|
|
150
|
+
const ctx = canvas.getContext('2d')
|
|
151
|
+
// ... load your image into the canvas
|
|
152
|
+
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height)
|
|
153
|
+
|
|
154
|
+
// Create a dominant colors extractor
|
|
155
|
+
const dominantColors = new DominantColors({
|
|
156
|
+
imageData: imageData,
|
|
157
|
+
colorCount: 5, // Extract top 5 colors
|
|
158
|
+
maxIterations: 50, // K-means algorithm iterations
|
|
159
|
+
tolerance: 0.01, // Convergence tolerance
|
|
160
|
+
skipTransparent: true, // Skip transparent pixels
|
|
161
|
+
})
|
|
162
|
+
|
|
163
|
+
// Extract the dominant colors
|
|
164
|
+
const colors = dominantColors.extractDominantColors()
|
|
165
|
+
|
|
166
|
+
// Results array contains:
|
|
167
|
+
colors.forEach((result) => {
|
|
168
|
+
console.log({
|
|
169
|
+
color: result.color, // RGB array: [r, g, b]
|
|
170
|
+
hex: result.hex, // Hex string: "#ff0000"
|
|
171
|
+
percentage: result.percentage, // Percentage of image: 25.5
|
|
172
|
+
count: result.count, // Number of pixels: 1000
|
|
173
|
+
})
|
|
174
|
+
})
|
|
175
|
+
|
|
176
|
+
// Update settings dynamically
|
|
177
|
+
dominantColors.setColorCount(8) // Change to 8 colors
|
|
178
|
+
dominantColors.updateOptions({
|
|
179
|
+
maxIterations: 100,
|
|
180
|
+
tolerance: 0.005,
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
// Get current configuration
|
|
184
|
+
const options = dominantColors.getOptions()
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Color Harmony Generation
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
import { ColorHarmony } from '@a_ng_d/utils-ui-color-palette'
|
|
191
|
+
|
|
192
|
+
// Create a color harmony generator
|
|
193
|
+
const colorHarmony = new ColorHarmony({
|
|
194
|
+
baseColor: [255, 0, 0], // Red base color
|
|
195
|
+
analogousSpread: 30, // 30 degrees for analogous colors
|
|
196
|
+
})
|
|
197
|
+
|
|
198
|
+
// Generate specific harmony types
|
|
199
|
+
const analogous = colorHarmony.generateAnalogous()
|
|
200
|
+
const complementary = colorHarmony.generateComplementary()
|
|
201
|
+
const triadic = colorHarmony.generateTriadic()
|
|
202
|
+
const tetradic = colorHarmony.generateTetradic()
|
|
203
|
+
const square = colorHarmony.generateSquare()
|
|
204
|
+
|
|
205
|
+
// Generate harmony by type
|
|
206
|
+
const harmony = colorHarmony.generateHarmony('triadic')
|
|
207
|
+
|
|
208
|
+
// Generate all harmonies at once
|
|
209
|
+
const allHarmonies = colorHarmony.getAllHarmonies()
|
|
210
|
+
|
|
211
|
+
// Results contain both RGB and hex values
|
|
212
|
+
console.log(triadic.colors) // [[255, 0, 0], [0, 255, 0], [0, 0, 255]]
|
|
213
|
+
console.log(triadic.hexColors) // ['#ff0000', '#00ff00', '#0000ff']
|
|
214
|
+
|
|
215
|
+
// Update settings
|
|
216
|
+
colorHarmony.setBaseColor([0, 128, 255])
|
|
217
|
+
colorHarmony.setAnalogousSpread(45)
|
|
218
|
+
colorHarmony.updateOptions({
|
|
219
|
+
analogousSpread: 60,
|
|
220
|
+
returnFormat: 'hex',
|
|
221
|
+
})
|
|
222
|
+
```
|
|
223
|
+
|
|
123
224
|
### Palette Generation
|
|
124
225
|
|
|
125
226
|
```typescript
|
|
@@ -170,15 +271,15 @@ yarn test
|
|
|
170
271
|
|
|
171
272
|
Current test coverage results:
|
|
172
273
|
|
|
173
|
-
| File
|
|
174
|
-
|
|
|
175
|
-
| All files
|
|
176
|
-
|
|
|
177
|
-
| color
|
|
178
|
-
|
|
|
179
|
-
| contrast
|
|
180
|
-
| data
|
|
181
|
-
|
|
|
274
|
+
| File | % Stmts | % Branch | % Funcs | % Lines |
|
|
275
|
+
| ----------------- | ------- | -------- | ------- | ------- |
|
|
276
|
+
| **All files** | **94.29** | **85.63** | **92.3** | **94.29** |
|
|
277
|
+
| code | 100 | 100 | 100 | 100 |
|
|
278
|
+
| color | 92.06 | 72.38 | 80.95 | 92.06 |
|
|
279
|
+
| color-harmony | 100 | 96.42 | 100 | 100 |
|
|
280
|
+
| contrast | 89 | 93.02 | 100 | 89 |
|
|
281
|
+
| data | 92.69 | 84.74 | 100 | 92.69 |
|
|
282
|
+
| dominant-colors | 100 | 100 | 100 | 100 |
|
|
182
283
|
|
|
183
284
|
To run coverage tests:
|
|
184
285
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { HexModel, RgbModel, HslModel, Channel, ChannelWithAlpha, } from './types/color.types';
|
|
1
|
+
export type { HexModel, RgbModel, HslModel, Channel, ChannelWithAlpha, ImageData, DominantColorResult, DominantColorsOptions, HarmonyType, ColorHarmonyResult, ColorHarmonyOptions, } from './types/color.types';
|
|
2
2
|
export type { BaseConfiguration, SourceColorConfiguration, ExchangeConfiguration, ExtractOfBaseConfiguration, EasingConfiguration, PresetConfiguration, ShiftConfiguration, ScaleConfiguration, LockedSourceColorsConfiguration, ColorConfiguration, ThemeConfiguration, ExportConfiguration, ColorSpaceConfiguration, VisionSimulationModeConfiguration, TextColorsThemeConfiguration, ViewConfiguration, AlgorithmVersionConfiguration, DatesConfiguration, PublicationConfiguration, CreatorConfiguration, StatusConfiguration, UserConfiguration, MetaConfiguration, FullConfiguration, DocumentConfiguration, ThirdParty, } from './types/configuration.types';
|
|
3
3
|
export type { PaletteData, LibraryData, PaletteDataThemeItem, PaletteDataColorItem, PaletteDataShadeItem, ExternalPalettes, ColourLovers, } from './types/data.types';
|
|
4
4
|
export type { ColorFormat } from './types/model.types';
|
|
@@ -6,4 +6,6 @@ export { default as Color } from './modules/color/color';
|
|
|
6
6
|
export { default as Contrast } from './modules/contrast/contrast';
|
|
7
7
|
export { default as Data } from './modules/data/data';
|
|
8
8
|
export { default as Code } from './modules/code/code';
|
|
9
|
+
export { default as DominantColors } from './modules/dominant-colors/dominant-colors';
|
|
10
|
+
export { default as ColorHarmony } from './modules/color-harmony/color-harmony';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,+BAA+B,EAC/B,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,iCAAiC,EACjC,4BAA4B,EAC5B,iBAAiB,EACjB,6BAA6B,EAC7B,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,GACX,MAAM,0BAA0B,CAAA;AACjC,YAAY,EACV,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,GACb,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0CAA0C,CAAA;AACpF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,sCAAsC,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { C as
|
|
1
|
+
import { C as a } from "./color-1CXTuV84.js";
|
|
2
2
|
import { default as e } from "./modules/contrast/contrast.js";
|
|
3
|
-
import { default as
|
|
4
|
-
import { default as
|
|
3
|
+
import { default as l } from "./modules/data/data.js";
|
|
4
|
+
import { default as s } from "./modules/code/code.js";
|
|
5
|
+
import { default as p } from "./modules/dominant-colors/dominant-colors.js";
|
|
6
|
+
import { default as C } from "./modules/color-harmony/color-harmony.js";
|
|
5
7
|
export {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
s as Code,
|
|
9
|
+
a as Color,
|
|
10
|
+
C as ColorHarmony,
|
|
8
11
|
e as Contrast,
|
|
9
|
-
|
|
12
|
+
l as Data,
|
|
13
|
+
p as DominantColors
|
|
10
14
|
};
|
|
11
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -294,9 +294,9 @@ public extension Color {
|
|
|
294
294
|
var f;
|
|
295
295
|
isNaN(r.hsl[0]) && (r.hsl[0] = 0), isNaN(r.lch[2]) && (r.lch[2] = 0), isNaN(r.oklch[2]) && (r.oklch[2] = 0);
|
|
296
296
|
const p = {
|
|
297
|
-
RGB: () => `rgb(${Math.floor(r.rgb[0])}
|
|
297
|
+
RGB: () => `rgb(${Math.floor(r.rgb[0])} ${Math.floor(
|
|
298
298
|
r.rgb[1]
|
|
299
|
-
)}
|
|
299
|
+
)} ${Math.floor(r.rgb[2])})`,
|
|
300
300
|
HEX: () => r.hex,
|
|
301
301
|
HSL: () => `hsl(${Math.floor(r.hsl[0])} ${Math.floor(
|
|
302
302
|
r.hsl[1] * 100
|
|
@@ -313,16 +313,16 @@ public extension Color {
|
|
|
313
313
|
const f = {
|
|
314
314
|
RGB: () => {
|
|
315
315
|
var u;
|
|
316
|
-
return `
|
|
316
|
+
return `rgb(${Math.floor(p.rgb[0])} ${Math.floor(
|
|
317
317
|
p.rgb[1]
|
|
318
|
-
)}
|
|
318
|
+
)} ${Math.floor(p.rgb[2])} / ${((u = r.alpha) == null ? void 0 : u.toFixed(2)) ?? 1})`;
|
|
319
319
|
},
|
|
320
320
|
HEX: () => k(p.hex).alpha(r.alpha ?? 1).hex(),
|
|
321
321
|
HSL: () => {
|
|
322
322
|
var u;
|
|
323
|
-
return `
|
|
323
|
+
return `hsl(${Math.floor(p.hsl[0])} ${Math.floor(
|
|
324
324
|
p.hsl[1] * 100
|
|
325
|
-
)}%, ${Math.floor(p.hsl[2] * 100)}% ${((u = r.alpha) == null ? void 0 : u.toFixed(2)) ?? 1})`;
|
|
325
|
+
)}%, ${Math.floor(p.hsl[2] * 100)}% / ${((u = r.alpha) == null ? void 0 : u.toFixed(2)) ?? 1})`;
|
|
326
326
|
},
|
|
327
327
|
LCH: () => {
|
|
328
328
|
var u;
|
|
@@ -476,9 +476,9 @@ public extension Color {
|
|
|
476
476
|
var r;
|
|
477
477
|
isNaN(n.hsl[0]) && (n.hsl[0] = 0), isNaN(n.lch[2]) && (n.lch[2] = 0), isNaN(n.oklch[2]) && (n.oklch[2] = 0);
|
|
478
478
|
const m = {
|
|
479
|
-
RGB: () => `rgb(${Math.floor(n.rgb[0])}
|
|
479
|
+
RGB: () => `rgb(${Math.floor(n.rgb[0])} ${Math.floor(
|
|
480
480
|
n.rgb[1]
|
|
481
|
-
)}
|
|
481
|
+
)} ${Math.floor(n.rgb[2])})`,
|
|
482
482
|
HEX: () => n.hex,
|
|
483
483
|
HSL: () => `hsl(${Math.floor(n.hsl[0])} ${Math.floor(
|
|
484
484
|
n.hsl[1] * 100
|
|
@@ -495,16 +495,16 @@ public extension Color {
|
|
|
495
495
|
const r = {
|
|
496
496
|
RGB: () => {
|
|
497
497
|
var f;
|
|
498
|
-
return `
|
|
498
|
+
return `rgb(${Math.floor(m.rgb[0])} ${Math.floor(
|
|
499
499
|
m.rgb[1]
|
|
500
|
-
)}
|
|
500
|
+
)} ${Math.floor(m.rgb[2])} / ${((f = n.alpha) == null ? void 0 : f.toFixed(2)) ?? 1})`;
|
|
501
501
|
},
|
|
502
502
|
HEX: () => k(m.hex).alpha(n.alpha ?? 1).hex(),
|
|
503
503
|
HSL: () => {
|
|
504
504
|
var f;
|
|
505
|
-
return `
|
|
505
|
+
return `hsl(${Math.floor(m.hsl[0])} ${Math.floor(
|
|
506
506
|
m.hsl[1] * 100
|
|
507
|
-
)}% ${Math.floor(m.hsl[2] * 100)}% ${((f = n.alpha) == null ? void 0 : f.toFixed(2)) ?? 1})`;
|
|
507
|
+
)}% ${Math.floor(m.hsl[2] * 100)}% / ${((f = n.alpha) == null ? void 0 : f.toFixed(2)) ?? 1})`;
|
|
508
508
|
},
|
|
509
509
|
LCH: () => {
|
|
510
510
|
var f;
|
|
@@ -672,9 +672,9 @@ ${s.map((m, r) => `${m},${t[r]},${e[r]},${o[r]}`).join(`
|
|
|
672
672
|
var c;
|
|
673
673
|
isNaN(e.hsl[0]) && (e.hsl[0] = 0), isNaN(e.lch[2]) && (e.lch[2] = 0), isNaN(e.oklch[2]) && (e.oklch[2] = 0);
|
|
674
674
|
const o = {
|
|
675
|
-
RGB: () => `rgb(${Math.floor(e.rgb[0])}
|
|
675
|
+
RGB: () => `rgb(${Math.floor(e.rgb[0])} ${Math.floor(
|
|
676
676
|
e.rgb[1]
|
|
677
|
-
)}
|
|
677
|
+
)} ${Math.floor(e.rgb[2])})`,
|
|
678
678
|
HEX: () => e.hex,
|
|
679
679
|
HSL: () => `hsl(${Math.floor(e.hsl[0])} ${Math.floor(
|
|
680
680
|
e.hsl[1] * 100
|
|
@@ -694,9 +694,9 @@ ${s.map((m, r) => `${m},${t[r]},${e[r]},${o[r]}`).join(`
|
|
|
694
694
|
const c = {
|
|
695
695
|
RGB: () => {
|
|
696
696
|
var m;
|
|
697
|
-
return `rgb(${Math.floor(o.rgb[0])}
|
|
697
|
+
return `rgb(${Math.floor(o.rgb[0])} ${Math.floor(
|
|
698
698
|
o.rgb[1]
|
|
699
|
-
)}
|
|
699
|
+
)} ${Math.floor(o.rgb[2])} / ${((m = e.alpha) == null ? void 0 : m.toFixed(2)) ?? 1})`;
|
|
700
700
|
},
|
|
701
701
|
HEX: () => k(o.hex).alpha(e.alpha ?? 1).hex(),
|
|
702
702
|
HSL: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code.js","sources":["../../../src/formats/makeUniversalTokens.ts","../../../node_modules/@a_ng_d/figmug-utils/dist/modules/case/case.js","../../../src/formats/makeUIKit.ts","../../../src/formats/makeTailwindV4Config.ts","../../../src/formats/makeTailwindV3Config.ts","../../../src/formats/makeSwiftUI.ts","../../../src/formats/makeStyleDictionaryV3Tokens.ts","../../../src/formats/makeScssVariables.ts","../../../src/formats/makeResources.ts","../../../src/formats/makeNativeTokens.ts","../../../src/formats/makeLessVariables.ts","../../../src/formats/makeDtcgTokens.ts","../../../src/formats/makeCsv.ts","../../../src/formats/makeCssCustomProps.ts","../../../src/formats/makeCompose.ts","../../../src/modules/code/code.ts"],"sourcesContent":["import { PaletteData, PaletteDataShadeItem } from '@tps/data.types'\n\nconst makeUniversalTokens = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n json: { [key: string]: any } = {}\n\n const model = (shade: PaletteDataShadeItem) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n return {\n rgb: {\n r: Math.floor(shade.rgb[0]),\n g: Math.floor(shade.rgb[1]),\n b: Math.floor(shade.rgb[2]),\n },\n gl: {\n r: parseFloat(shade.gl[0].toFixed(3)),\n g: parseFloat(shade.gl[1].toFixed(3)),\n b: parseFloat(shade.gl[2].toFixed(3)),\n },\n lch: {\n l: Math.floor(shade.lch[0]),\n c: Math.floor(shade.lch[1]),\n h: Math.floor(shade.lch[2]),\n },\n oklch: {\n l: parseFloat(shade.oklch[0].toFixed(3)),\n c: parseFloat(shade.oklch[1].toFixed(3)),\n h: Math.floor(shade.oklch[2]),\n },\n lab: {\n l: Math.floor(shade.lab[0]),\n a: Math.floor(shade.lab[1]),\n b: Math.floor(shade.lab[2]),\n },\n oklab: {\n l: parseFloat(shade.oklab[0].toFixed(3)),\n a: parseFloat(shade.oklab[1].toFixed(3)),\n b: parseFloat(shade.oklab[2].toFixed(3)),\n },\n hsl: {\n h: Math.floor(shade.hsl[0]),\n s: Math.floor(shade.hsl[1] * 100),\n l: Math.floor(shade.hsl[2] * 100),\n },\n hsluv: {\n h: Math.floor(shade.hsluv[0]),\n s: Math.floor(shade.hsluv[1]),\n l: Math.floor(shade.hsluv[2]),\n },\n hex: shade.hex,\n description: shade.description,\n type: 'color shade/tint',\n }\n }\n\n const modelWithAlpha = (\n shade: PaletteDataShadeItem,\n source: PaletteDataShadeItem\n ) => {\n return {\n rgb: {\n r: Math.floor(source.rgb[0]),\n g: Math.floor(source.rgb[1]),\n b: Math.floor(source.rgb[2]),\n },\n gl: {\n r: parseFloat(source.gl[0].toFixed(3)),\n g: parseFloat(source.gl[1].toFixed(3)),\n b: parseFloat(source.gl[2].toFixed(3)),\n },\n lch: {\n l: Math.floor(source.lch[0]),\n c: Math.floor(source.lch[1]),\n h: Math.floor(source.lch[2]),\n },\n oklch: {\n l: parseFloat(source.oklch[0].toFixed(3)),\n c: parseFloat(source.oklch[1].toFixed(3)),\n h: Math.floor(source.oklch[2]),\n },\n lab: {\n l: Math.floor(source.lab[0]),\n a: Math.floor(source.lab[1]),\n b: Math.floor(source.lab[2]),\n },\n oklab: {\n l: parseFloat(source.oklab[0].toFixed(3)),\n a: parseFloat(source.oklab[1].toFixed(3)),\n b: parseFloat(source.oklab[2].toFixed(3)),\n },\n hsl: {\n h: Math.floor(source.hsl[0]),\n s: Math.floor(source.hsl[1] * 100),\n l: Math.floor(source.hsl[2] * 100),\n },\n hsluv: {\n h: Math.floor(source.hsluv[0]),\n s: Math.floor(source.hsluv[1]),\n l: Math.floor(source.hsluv[2]),\n },\n hex: source.hex,\n alpha: shade.alpha,\n description: shade.description,\n type: 'color shade/tint',\n }\n }\n\n if (workingThemes[0].type === 'custom theme')\n workingThemes.forEach((theme) => {\n json[theme.name] = {}\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json[theme.name][color.name] = {}\n color.shades.forEach((shade) => {\n if (shade && source)\n json[theme.name][color.name][shade.name] = shade.isTransparent\n ? modelWithAlpha(shade, source)\n : model(shade)\n })\n json[theme.name][color.name]['description'] = color.description\n json[theme.name][color.name]['type'] = 'color'\n })\n json[theme.name]['description'] = theme.description\n json[theme.name]['type'] = 'color mode'\n })\n else\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json[color.name] = {}\n color.shades.forEach((shade) => {\n if (shade && source)\n json[color.name][shade.name] = shade.isTransparent\n ? modelWithAlpha(shade, source)\n : model(shade)\n })\n json[color.name]['description'] = color.description\n json[color.name]['type'] = 'color'\n })\n })\n\n json['description'] = paletteData.description\n json['type'] = 'color palette'\n\n return JSON.stringify(json, null, ' ')\n}\n\nexport default makeUniversalTokens\n","var r = Object.defineProperty;\nvar o = (s, e, t) => e in s ? r(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;\nvar a = (s, e, t) => o(s, typeof e != \"symbol\" ? e + \"\" : e, t);\nclass p {\n constructor(e) {\n a(this, \"string\");\n a(this, \"doSnakeCase\", () => this.string.toLowerCase().split(\" \").join(\"_\").replace(/[@/$^%#&!?.,;:+=<>(){}\"«»]/g, \"\"));\n a(this, \"doPascalCase\", () => this.string.charAt(0).toUpperCase() + this.string.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g, (e) => e.toUpperCase()).replace(/[@/$^%#&!?.,;:+=<>(){}\"«» ]/g, \"\").slice(1));\n a(this, \"doKebabCase\", () => this.string.toLowerCase().split(\" \").join(\"-\").replace(/[@/$^%#&!?.,;:+=<>(){}\"«»]/g, \"\"));\n a(this, \"doCamelCase\", () => this.string.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g, (e) => e.toUpperCase()).replace(/[@/$^%#&!?.,;:+=<>(){}\"«» ]/g, \"\"));\n this.string = e;\n }\n}\nexport {\n p as default\n};\n//# sourceMappingURL=case.js.map\n","import { PaletteData } from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeUIKit = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n swift: Array<string> = []\n\n workingThemes.forEach((theme) => {\n const UIColors: Array<string> = []\n theme.colors.forEach((color) => {\n const source = color.shades.find((shade) => shade.type === 'source color')\n\n UIColors.push(`// ${color.name}`)\n color.shades.reverse().forEach((shade) => {\n UIColors.push(\n shade.isTransparent\n ? `static let ${new Case(color.name).doPascalCase()}${\n shade.name === 'source' ? 'Source' : shade.name\n } = UIColor(red: ${source?.gl[0].toFixed(\n 3\n )}, green: ${source?.gl[1].toFixed(3)}, blue: ${source?.gl[2].toFixed(\n 3\n )}, alpha: ${shade.alpha ?? 1})`\n : `static let ${new Case(color.name).doPascalCase()}${\n shade.name === 'source' ? 'Source' : shade.name\n } = UIColor(red: ${shade.gl[0].toFixed(\n 3\n )}, green: ${shade.gl[1].toFixed(3)}, blue: ${shade.gl[2].toFixed(\n 3\n )})`\n )\n })\n UIColors.push('')\n })\n UIColors.pop()\n if (workingThemes[0].type === 'custom theme')\n swift.push(\n `// ${theme.name}\\n struct ${new Case(theme.name).doPascalCase()} {\\n ${UIColors.join(\n '\\n '\n )}\\n }`\n )\n else swift.push(`${UIColors.join('\\n ')}`)\n })\n\n return `import UIKit\\n\\nstruct Color {\\n ${swift.join('\\n\\n ')}\\n}`\n}\n\nexport default makeUIKit\n","import chroma from 'chroma-js'\nimport { PaletteData } from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeTailwindV4Config = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme')\n\n let cssOutput =\n '@import \"tailwindcss\";\\n\\n@theme {\\n --color-*: initial;\\n\\n'\n\n if (workingThemes[0].type !== 'custom theme') {\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n const colorName = new Case(color.name).doKebabCase()\n cssOutput += ` /* ${color.name} */\\n`\n\n color.shades.sort().forEach((shade) => {\n const colorValue = shade.isTransparent\n ? chroma(source?.hex ?? '#000000')\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex\n\n const shadeName = new Case(shade.name).doKebabCase()\n cssOutput += ` --color-${colorName}-${shadeName}: ${colorValue};\\n`\n })\n\n const isLastColor = color === theme.colors[theme.colors.length - 1]\n const isLastTheme = theme === workingThemes[workingThemes.length - 1]\n if (!(isLastColor && isLastTheme)) {\n cssOutput += '\\n'\n }\n })\n })\n } else {\n workingThemes.forEach((theme) => {\n const themeName = new Case(theme.name).doKebabCase()\n\n //cssOutput += ` /* ${theme.name} */\\n`\n\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n const colorName = new Case(color.name).doKebabCase()\n cssOutput += ` /* ${theme.name} - ${color.name} */\\n`\n\n color.shades.forEach((shade) => {\n const colorValue = shade.isTransparent\n ? chroma(source?.hex ?? '#000000')\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex\n\n const shadeName = new Case(shade.name).doKebabCase()\n cssOutput += ` --color-${themeName}-${colorName}-${shadeName}: ${colorValue};\\n`\n })\n\n const isLastColor = color === theme.colors[theme.colors.length - 1]\n const isLastTheme = theme === workingThemes[workingThemes.length - 1]\n if (!(isLastColor && isLastTheme)) {\n cssOutput += '\\n'\n }\n })\n })\n }\n\n cssOutput += '}\\n'\n\n return cssOutput\n}\n\nexport default makeTailwindV4Config\n","import chroma from 'chroma-js'\nimport { PaletteData } from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeTailwindV3Config = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n json: { [key: string]: any } = {\n theme: {\n colors: {},\n },\n }\n\n paletteData.themes[0].colors.forEach((color) => {\n json['theme']['colors'][new Case(color.name).doKebabCase()] = {}\n })\n\n if (workingThemes[0].type === 'custom theme')\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json['theme']['colors'][new Case(color.name).doKebabCase()][\n new Case(theme.name).doKebabCase()\n ] = {}\n color.shades.forEach((shade) => {\n json['theme']['colors'][new Case(color.name).doKebabCase()][\n new Case(theme.name).doKebabCase()\n ][new Case(shade.name).doKebabCase()] = shade.isTransparent\n ? chroma(source?.hex ?? '#000000')\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex\n })\n })\n })\n else\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json['theme']['colors'][new Case(color.name).doKebabCase()] = {}\n color.shades.sort().forEach((shade) => {\n json['theme']['colors'][new Case(color.name).doKebabCase()][\n new Case(shade.name).doKebabCase()\n ] = shade.isTransparent\n ? chroma(source?.hex ?? '#000000')\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex\n })\n })\n })\n\n return `/** @type {import('tailwindcss').Config} */\\nmodule.exports = ${JSON.stringify(json, null, ' ')}`\n}\n\nexport default makeTailwindV3Config\n","import { PaletteData } from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeSwiftUI = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n swift: Array<string> = []\n\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find((shade) => shade.type === 'source color')\n const Colors: Array<string> = []\n\n Colors.push(\n `// ${\n workingThemes[0].type === 'custom theme' ? theme.name + ' - ' : ''\n }${color.name}`\n )\n color.shades.reverse().forEach((shade) => {\n Colors.push(\n shade.isTransparent\n ? `public let ${\n workingThemes[0].type === 'custom theme'\n ? new Case(theme.name + ' ' + color.name).doPascalCase()\n : new Case(color.name).doPascalCase()\n }${\n shade.name === 'source' ? 'Source' : shade.name\n } = Color(red: ${source?.gl[0].toFixed(\n 3\n )}, green: ${source?.gl[1].toFixed(3)}, blue: ${shade.gl[2].toFixed(\n 3\n )}).opacity(${shade.alpha ?? 1})`\n : `public let ${\n workingThemes[0].type === 'custom theme'\n ? new Case(theme.name + ' ' + color.name).doPascalCase()\n : new Case(color.name).doPascalCase()\n }${\n shade.name === 'source' ? 'Source' : shade.name\n } = Color(red: ${shade.gl[0].toFixed(\n 3\n )}, green: ${shade.gl[1].toFixed(3)}, blue: ${shade.gl[2].toFixed(\n 3\n )})`\n )\n })\n Colors.push('')\n Colors.forEach((color) => swift.push(color))\n })\n })\n\n swift.pop()\n\n return `import SwiftUI\\n\\npublic extension Color {\\n static let Token = Color.TokenColor()\\n struct TokenColor {\\n ${swift.join(\n '\\n '\n )}\\n }\\n}`\n}\n\nexport default makeSwiftUI\n","import chroma from 'chroma-js'\nimport {\n PaletteData,\n PaletteDataColorItem,\n PaletteDataShadeItem,\n} from '@tps/data.types'\n\nconst makeStyleDictionaryV3Tokens = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n json: { [key: string]: any } = {\n color: {},\n }\n\n const model = (\n color: PaletteDataColorItem,\n shade: PaletteDataShadeItem,\n source: PaletteDataShadeItem\n ) => {\n return {\n type: 'color',\n value: shade.isTransparent\n ? chroma(source.hex)\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex,\n comment:\n color.description !== ''\n ? color.description + ' - ' + shade.description\n : shade.description,\n }\n }\n\n paletteData.themes[0].colors.forEach((color) => {\n json['color'][color.name] = {}\n })\n\n if (workingThemes[0].type === 'custom theme')\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json['color'][color.name][theme.name] = {}\n color.shades.forEach((shade) => {\n if (shade && source)\n json['color'][color.name][theme.name][shade.name] = model(\n color,\n shade,\n source\n )\n })\n })\n })\n else\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json['color'][color.name] = {}\n color.shades.forEach((shade) => {\n if (shade && source)\n json['color'][color.name][shade.name] = model(color, shade, source)\n })\n })\n })\n\n return JSON.stringify(json, null, ' ')\n}\n\nexport default makeStyleDictionaryV3Tokens\n","import chroma from 'chroma-js'\nimport { PaletteData, PaletteDataShadeItem } from '@tps/data.types'\nimport { ColorSpaceConfiguration } from '@tps/configuration.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeScssVariables = (\n paletteData: PaletteData,\n colorSpace: ColorSpaceConfiguration\n) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n scss: Array<string> = [],\n globalVars: Array<string> = []\n\n const setValueAccordingToColorSpace = (shade: PaletteDataShadeItem) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () =>\n `rgb(${Math.floor(shade.rgb[0])}, ${Math.floor(\n shade.rgb[1]\n )}, ${Math.floor(shade.rgb[2])})`,\n HEX: () => shade.hex,\n HSL: () =>\n `hsl(${Math.floor(shade.hsl[0])} ${Math.floor(\n shade.hsl[1] * 100\n )}% ${Math.floor(shade.hsl[2] * 100)}%)`,\n LCH: () =>\n `lch(${Math.floor(shade.lch[0])}% ${Math.floor(\n shade.lch[1]\n )} ${Math.floor(shade.lch[2])})`,\n OKLCH: () =>\n `oklch(${Math.floor(shade.oklch[0] * 100)}% ${shade.oklch[1].toFixed(3)} ${Math.floor(shade.oklch[2])})`,\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n const setValueAccordingToAlpha = (\n shade: PaletteDataShadeItem,\n source: PaletteDataShadeItem\n ) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () =>\n `rgba(${Math.floor(source.rgb[0])}, ${Math.floor(\n source.rgb[1]\n )}, ${Math.floor(source.rgb[2])}, ${shade.alpha?.toFixed(2) ?? 1})`,\n HEX: () =>\n chroma(source.hex)\n .alpha(shade.alpha ?? 1)\n .hex(),\n HSL: () =>\n `hsla(${Math.floor(source.hsl[0])} ${Math.floor(\n source.hsl[1] * 100\n )}%, ${Math.floor(source.hsl[2] * 100)}% ${shade.alpha?.toFixed(2) ?? 1})`,\n LCH: () =>\n `lch(${Math.floor(source.lch[0])}% ${Math.floor(\n source.lch[1]\n )} ${Math.floor(source.lch[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n OKLCH: () =>\n `oklch(${Math.floor(source.oklch[0 * 100])}% ${source.oklch[1].toFixed(3)} ${Math.floor(source.oklch[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n const defaultTheme = workingThemes.find(\n (theme) => theme.type === 'default theme'\n )\n\n if (defaultTheme) {\n const defaultVars: Array<string> = []\n\n defaultTheme.colors.forEach((color, index) => {\n if (index > 0) {\n defaultVars.push('')\n }\n\n defaultVars.push(`// ${color.name}`)\n color.shades.reverse().forEach((shade) => {\n const source = color.shades.find((c) => c.type === 'source color')\n const variableName = `$${new Case(color.name).doKebabCase()}-${shade.name}`\n\n if (source) {\n defaultVars.push(\n `${variableName}: ${shade.isTransparent ? setValueAccordingToAlpha(shade, source) : setValueAccordingToColorSpace(shade)};`\n )\n }\n })\n })\n\n scss.push(defaultVars.join('\\n'))\n\n return scss.join('\\n')\n }\n\n workingThemes.forEach((theme) => {\n const themeName = new Case(theme.name).doKebabCase()\n const themeVars: Array<string> = []\n\n themeVars.push(`// ${theme.name}`)\n themeVars.push(`@mixin ${themeName} {`)\n\n theme.colors.forEach((color, index) => {\n if (index > 0) {\n themeVars.push('')\n }\n\n themeVars.push(` // ${color.name}`)\n color.shades.reverse().forEach((shade) => {\n const source = color.shades.find((c) => c.type === 'source color')\n const colorName = new Case(color.name).doKebabCase()\n const cssVarName = `--${colorName}-${shade.name}`\n\n if (source) {\n themeVars.push(\n ` ${cssVarName}: ${shade.isTransparent ? setValueAccordingToAlpha(shade, source) : setValueAccordingToColorSpace(shade)};`\n )\n }\n })\n })\n\n themeVars.push('}')\n scss.push(themeVars.join('\\n'))\n })\n\n const colorVariables = new Set<string>()\n\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n color.shades.forEach((shade) => {\n const source = color.shades.find((c) => c.type === 'source color')\n if (source) {\n const colorName = new Case(color.name).doKebabCase()\n const cssVarName = `--${colorName}-${shade.name}`\n colorVariables.add(cssVarName)\n }\n })\n })\n })\n\n if (colorVariables.size > 0) {\n const colorGroups = new Map<string, Array<string>>()\n\n colorVariables.forEach((cssVarName) => {\n const match = cssVarName.match(/--([a-zA-Z0-9-]+)-([a-zA-Z0-9-]+)/)\n if (match) {\n const colorName = match[1]\n if (!colorGroups.has(colorName)) {\n colorGroups.set(colorName, [])\n }\n const scssVarName = `$${cssVarName.substring(2)}`\n colorGroups.get(colorName)!.push(`${scssVarName}: var(${cssVarName});`)\n }\n })\n\n colorGroups.forEach((vars, colorName) => {\n globalVars.push(\n `// ${colorName.charAt(0).toUpperCase() + colorName.slice(1)}`\n )\n globalVars.push(...vars)\n globalVars.push('')\n })\n\n if (globalVars.length > 0 && globalVars[globalVars.length - 1] === '') {\n globalVars.pop()\n }\n\n scss.push(globalVars.join('\\n'))\n }\n\n const rootBlock: string[] = [`:root {`]\n\n workingThemes.forEach((theme, index) => {\n const themeName = new Case(theme.name).doKebabCase()\n rootBlock.push(` &[data-theme=\"${themeName}\"] {\n @include ${themeName};\n }`)\n if (index !== workingThemes.length - 1) rootBlock.push('')\n })\n\n rootBlock.push(`}`)\n scss.push(rootBlock.join('\\n'))\n\n const classBlocks: string[] = []\n\n workingThemes.forEach((theme) => {\n const themeName = new Case(theme.name).doKebabCase()\n classBlocks.push(`.${themeName} {\n @include ${themeName};\n}`)\n })\n\n scss.push(classBlocks.join('\\n\\n'))\n\n return scss.join('\\n\\n')\n}\n\nexport default makeScssVariables\n","import chroma from 'chroma-js'\nimport { PaletteData } from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeResources = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n resources: Array<string> = []\n\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find((shade) => shade.type === 'source color')\n const colors: Array<string> = []\n\n colors.push(\n `${'<'}!--${\n workingThemes[0].type === 'custom theme'\n ? `${theme.name} - ${color.name}--${'>'}`\n : `${color.name}--${'>'}`\n }`\n )\n color.shades.reverse().forEach((shade) => {\n colors.push(\n `<color name=\"${\n workingThemes[0].type === 'custom theme'\n ? new Case(theme.name + ' ' + color.name).doSnakeCase()\n : new Case(color.name).doSnakeCase()\n }_${shade.name}\">${\n shade.isTransparent\n ? chroma(source?.hex ?? '#000000')\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex\n }</color>`\n )\n })\n colors.push('')\n colors.forEach((color) => resources.push(color))\n })\n })\n\n resources.pop()\n\n return `<?xml version=\"1.0\" encoding=\"utf-8\"?>\\n<resources>\\n ${resources.join(\n '\\n '\n )}\\n</resources>`\n}\n\nexport default makeResources\n","import chroma from 'chroma-js'\nimport {\n PaletteData,\n PaletteDataColorItem,\n PaletteDataShadeItem,\n} from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeNativeTokens = (paletteData: PaletteData) => {\n const paletteName = paletteData.name\n\n const colorModel = (\n color: PaletteDataColorItem,\n shade: PaletteDataShadeItem,\n source: PaletteDataShadeItem\n ) => {\n return {\n $type: 'color',\n $value: shade.isTransparent\n ? chroma(source.hex)\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex,\n $description:\n color.description !== ''\n ? color.description + ' - ' + shade.description\n : shade.description,\n }\n }\n\n const themeModel = (name: string, description: string) => {\n return {\n name: name,\n group: 'Modes',\n description: description,\n selectedTokenSets: {\n [`${paletteName}/${name}`]: 'enabled',\n },\n }\n }\n\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n json: { [key: string]: any } = {\n $themes: workingThemes\n .filter((theme) => theme.type === 'custom theme')\n .map((theme) => themeModel(theme.name, theme.description)),\n $metadata: {\n activeThemes: [],\n tokenSetOrder: workingThemes\n .filter((theme) => theme.type === 'custom theme')\n .map(\n (theme) =>\n `${new Case(paletteName).doSnakeCase()}/${new Case(theme.name).doSnakeCase()}`\n ),\n activeSets: [],\n },\n }\n\n if (workingThemes[0].type === 'custom theme')\n workingThemes.forEach((theme) => {\n json[`${paletteName}/${theme.name}`] = {}\n\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n color.shades.forEach((shade) => {\n if (shade && source)\n json[`${paletteName}/${theme.name}`][\n `${new Case(color.name).doSnakeCase()}.${shade.name}`\n ] = colorModel(color, shade, source)\n })\n })\n })\n else\n workingThemes.forEach((theme) => {\n json[paletteName] = {}\n\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n color.shades.forEach((shade) => {\n if (shade && source)\n json[paletteName][\n `${new Case(color.name).doSnakeCase()}.${shade.name}`\n ] = colorModel(color, shade, source)\n })\n })\n })\n\n return JSON.stringify(json, null, ' ')\n}\n\nexport default makeNativeTokens\n","import chroma from 'chroma-js'\nimport { PaletteData, PaletteDataShadeItem } from '@tps/data.types'\nimport { ColorSpaceConfiguration } from '@tps/configuration.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeLessVariables = (\n paletteData: PaletteData,\n colorSpace: ColorSpaceConfiguration\n) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n less: Array<string> = []\n\n const setValueAccordingToColorSpace = (shade: PaletteDataShadeItem) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () =>\n `rgb(${Math.floor(shade.rgb[0])}, ${Math.floor(\n shade.rgb[1]\n )}, ${Math.floor(shade.rgb[2])})`,\n HEX: () => shade.hex,\n HSL: () =>\n `hsl(${Math.floor(shade.hsl[0])} ${Math.floor(\n shade.hsl[1] * 100\n )}% ${Math.floor(shade.hsl[2] * 100)}%)`,\n LCH: () =>\n `lch(${Math.floor(shade.lch[0])}% ${Math.floor(\n shade.lch[1]\n )} ${Math.floor(shade.lch[2])})`,\n OKLCH: () =>\n `oklch(${Math.floor(shade.oklch[0] * 100)}% ${shade.oklch[1].toFixed(3)} ${Math.floor(shade.oklch[2])})`,\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n const setValueAccordingToAlpha = (\n shade: PaletteDataShadeItem,\n source: PaletteDataShadeItem\n ) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () =>\n `rgba(${Math.floor(source.rgb[0])}, ${Math.floor(\n source.rgb[1]\n )}, ${Math.floor(source.rgb[2])}, ${shade.alpha?.toFixed(2) ?? 1})`,\n HEX: () =>\n chroma(source.hex)\n .alpha(shade.alpha ?? 1)\n .hex(),\n HSL: () =>\n `hsla(${Math.floor(source.hsl[0])}, ${Math.floor(\n source.hsl[1] * 100\n )}% ${Math.floor(source.hsl[2] * 100)}% ${shade.alpha?.toFixed(2) ?? 1})`,\n LCH: () =>\n `lch(${Math.floor(source.lch[0])}% ${Math.floor(\n source.lch[1]\n )} ${Math.floor(source.lch[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n OKLCH: () =>\n `oklch(${Math.floor(source.oklch[0] * 100)}% ${source.oklch[1].toFixed(3)} ${Math.floor(source.oklch[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n const defaultTheme = workingThemes.find(\n (theme) => theme.type === 'default theme'\n )\n\n if (defaultTheme) {\n const defaultVars: Array<string> = []\n\n defaultTheme.colors.forEach((color, index) => {\n if (index > 0) {\n defaultVars.push('')\n }\n\n defaultVars.push(`// ${color.name}`)\n color.shades.reverse().forEach((shade) => {\n const source = color.shades.find((c) => c.type === 'source color')\n const variableName = `@${new Case(color.name).doKebabCase()}-${shade.name}`\n\n if (source) {\n defaultVars.push(\n `${variableName}: ${shade.isTransparent ? setValueAccordingToAlpha(shade, source) : setValueAccordingToColorSpace(shade)};`\n )\n }\n })\n })\n\n less.push(defaultVars.join('\\n'))\n\n return less.join('\\n')\n }\n\n workingThemes.forEach((theme) => {\n const themeName = new Case(theme.name).doKebabCase()\n const themeVars: Array<string> = []\n\n themeVars.push(`// ${theme.name}`)\n themeVars.push(`.${themeName}() {`)\n\n theme.colors.forEach((color, index) => {\n if (index > 0) {\n themeVars.push('')\n }\n\n themeVars.push(` // ${color.name}`)\n color.shades.reverse().forEach((shade) => {\n const source = color.shades.find((c) => c.type === 'source color')\n const variableName = `@${new Case(color.name).doKebabCase()}-${shade.name}`\n\n if (source) {\n themeVars.push(\n ` ${variableName}: ${shade.isTransparent ? setValueAccordingToAlpha(shade, source) : setValueAccordingToColorSpace(shade)};`\n )\n }\n })\n })\n\n themeVars.push('}')\n less.push(themeVars.join('\\n'))\n })\n\n const rootBlock: string[] = [`:root {`]\n\n workingThemes.forEach((theme, index) => {\n const themeName = new Case(theme.name).doKebabCase()\n rootBlock.push(` &[data-theme=\"${themeName}\"] {\n .${themeName}();\n }`)\n if (index !== workingThemes.length - 1) rootBlock.push('')\n })\n\n rootBlock.push(`}`)\n less.push(rootBlock.join('\\n'))\n\n const classBlocks: string[] = []\n\n workingThemes.forEach((theme) => {\n const themeName = new Case(theme.name).doKebabCase()\n classBlocks.push(`.${themeName} {\n .${themeName}();\n}`)\n })\n\n less.push(classBlocks.join('\\n\\n'))\n\n return less.join('\\n\\n')\n}\n\nexport default makeLessVariables\n","import { PaletteData, PaletteDataShadeItem } from '@tps/data.types'\nimport { ColorSpaceConfiguration } from '@tps/configuration.types'\n\nconst makeDtcgTokens = (\n paletteData: PaletteData,\n colorSpace: ColorSpaceConfiguration\n) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n json: { [key: string]: any } = {}\n\n const setValueAccordingToColorSpace = (shade: PaletteDataShadeItem) => {\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () => {\n return {\n colorSpace: 'srgb',\n components: [\n parseFloat(shade.gl[0].toFixed(3)),\n parseFloat(shade.gl[1].toFixed(3)),\n parseFloat(shade.gl[2].toFixed(3)),\n ],\n hex: shade.hex,\n }\n },\n OKLCH: () => {\n return {\n colorSpace: 'oklch',\n components: [\n parseFloat(shade.oklch[0].toFixed(3)),\n parseFloat(shade.oklch[1].toFixed(3)),\n parseFloat(shade.oklch[2].toFixed(0)),\n ],\n hex: shade.hex,\n }\n },\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n const setValueAccordingToColorSpaceAndAlpha = (\n source: PaletteDataShadeItem,\n shade: PaletteDataShadeItem\n ) => {\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () => {\n return {\n colorSpace: 'srgb',\n components: [\n parseFloat(source.gl[0].toFixed(3)),\n parseFloat(source.gl[1].toFixed(3)),\n parseFloat(source.gl[2].toFixed(3)),\n ],\n hex: source.hex,\n alpha: shade.alpha,\n }\n },\n OKLCH: () => {\n return {\n colorSpace: 'oklch',\n components: [\n parseFloat(source.oklch[0].toFixed(3)),\n parseFloat(source.oklch[1].toFixed(3)),\n parseFloat(source.oklch[2].toFixed(0)),\n ],\n hex: source.hex,\n alpha: shade.alpha,\n }\n },\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n if (workingThemes[0].type === 'custom theme')\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n if (!json[color.name])\n json[color.name] = {\n $type: 'color',\n }\n\n color.shades.forEach((shade) => {\n if (!json[color.name][shade.name] && source)\n json[color.name][shade.name] = {\n $type: 'color',\n $value: shade.isTransparent\n ? setValueAccordingToColorSpaceAndAlpha(source, shade)\n : setValueAccordingToColorSpace(shade),\n $description:\n color.description !== ''\n ? color.description + ' - ' + shade.description\n : shade.description,\n $extensions: {\n mode: {},\n },\n }\n if (source)\n json[color.name][shade.name].$extensions.mode[theme.name] =\n shade.isTransparent\n ? setValueAccordingToColorSpaceAndAlpha(source, shade)\n : setValueAccordingToColorSpace(shade)\n })\n })\n })\n else\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json[color.name] = {}\n color.shades.forEach((shade) => {\n if (shade && source)\n json[color.name][shade.name] = {\n $type: 'color',\n $value: shade.isTransparent\n ? setValueAccordingToColorSpaceAndAlpha(source, shade)\n : setValueAccordingToColorSpace(shade),\n $description:\n color.description !== ''\n ? color.description + ' - ' + shade.description\n : shade.description,\n }\n })\n })\n })\n\n return JSON.stringify(json, null, ' ')\n}\n\nexport default makeDtcgTokens\n","import { PaletteData } from '@tps/data.types'\n\ninterface colorCsv {\n name: string\n csv: string\n}\n\nexport interface modeCsv {\n name: string\n colors: Array<colorCsv>\n type: string\n}\n\nconst makeCsv = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n colorCsv: Array<colorCsv> = [],\n modeCsv: Array<modeCsv> = [],\n lightness: Array<string> = [],\n l: Array<number | string> = [],\n c: Array<number | string> = [],\n h: Array<number | string> = []\n\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n color.shades.forEach((shade) => {\n lightness.push(shade.name)\n l.push(Math.floor(shade.lch[0]))\n c.push(Math.floor(shade.lch[1]))\n h.push(Math.floor(shade.lch[2]))\n })\n colorCsv.push({\n name: color.name,\n csv: `${color.name},Lightness,Chroma,Hue\\n${lightness\n .map((stop, index) => `${stop},${l[index]},${c[index]},${h[index]}`)\n .join('\\n')}`,\n })\n lightness.splice(0, lightness.length)\n l.splice(0, l.length)\n c.splice(0, c.length)\n h.splice(0, h.length)\n })\n modeCsv.push({\n name: theme.name,\n colors: colorCsv.map((c) => {\n return c\n }),\n type: theme.type,\n })\n colorCsv.splice(0, colorCsv.length)\n })\n\n return modeCsv\n}\n\nexport default makeCsv\n","import chroma from 'chroma-js'\nimport { PaletteData, PaletteDataShadeItem } from '@tps/data.types'\nimport { ColorSpaceConfiguration } from '@tps/configuration.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeCssCustomProps = (\n paletteData: PaletteData,\n colorSpace: ColorSpaceConfiguration\n) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n css: Array<string> = []\n\n const setValueAccordingToColorSpace = (shade: PaletteDataShadeItem) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () =>\n `rgb(${Math.floor(shade.rgb[0])}, ${Math.floor(\n shade.rgb[1]\n )}, ${Math.floor(shade.rgb[2])})`,\n HEX: () => shade.hex,\n HSL: () =>\n `hsl(${Math.floor(shade.hsl[0])} ${Math.floor(\n shade.hsl[1] * 100\n )}% ${Math.floor(shade.hsl[2] * 100)}%)`,\n LCH: () =>\n `lch(${Math.floor(shade.lch[0])}% ${Math.floor(\n shade.lch[1]\n )} ${Math.floor(shade.lch[2])})`,\n OKLCH: () =>\n `oklch(${Math.floor(shade.oklch[0] * 100)}% ${shade.oklch[1].toFixed(3)} ${Math.floor(shade.oklch[2])})`,\n P3: () =>\n `color(display-p3 ${shade.gl[0].toFixed(3)} ${shade.gl[1].toFixed(\n 3\n )} ${shade.gl[2].toFixed(3)})`,\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n const setValueAccordingToAlpha = (\n shade: PaletteDataShadeItem,\n source: PaletteDataShadeItem\n ) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () =>\n `rgb(${Math.floor(source.rgb[0])}, ${Math.floor(\n source.rgb[1]\n )}, ${Math.floor(source.rgb[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n HEX: () =>\n chroma(source.hex)\n .alpha(shade.alpha ?? 1)\n .hex(),\n HSL: () =>\n `hsl(${Math.floor(source.hsl[0])} ${Math.floor(\n source.hsl[1] * 100\n )}% ${Math.floor(source.hsl[2] * 100)}% / ${shade.alpha?.toFixed(2) ?? 1})`,\n LCH: () =>\n `lch(${Math.floor(source.lch[0])}% ${Math.floor(\n source.lch[1]\n )} ${Math.floor(source.lch[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n OKLCH: () =>\n `oklch(${Math.floor(source.oklch[0 * 100])}% ${source.oklch[1].toFixed(3)} ${Math.floor(source.oklch[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n P3: () =>\n `color(display-p3 ${source.gl[0].toFixed(3)} ${source.gl[1].toFixed(\n 3\n )} ${source.gl[2].toFixed(3)} / ${shade.alpha?.toFixed(2) ?? 1})`,\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n workingThemes.forEach((theme) => {\n const rowCss: Array<string> = []\n theme.colors.forEach((color) => {\n rowCss.push(`/* ${color.name} */`)\n color.shades.reverse().forEach((shade) => {\n const source = color.shades.find((c) => c.type === 'source color')\n\n if (source)\n rowCss.push(\n `--${new Case(color.name).doKebabCase()}-${shade.name}: ${shade.isTransparent ? setValueAccordingToAlpha(shade, source) : setValueAccordingToColorSpace(shade)};`\n )\n })\n\n rowCss.push('')\n })\n rowCss.pop()\n css.push(\n `${theme.type === 'custom theme' ? `/* ${theme.name} */\\n` : ''}:root${\n theme.type === 'custom theme'\n ? `[data-theme='${new Case(theme.name).doKebabCase()}']`\n : ''\n } {\\n ${rowCss.join('\\n ')}\\n}`\n )\n })\n\n return css.join('\\n\\n')\n}\n\nexport default makeCssCustomProps\n","import chroma from 'chroma-js'\nimport { PaletteData } from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeCompose = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n kotlin: Array<string> = []\n\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find((shade) => shade.type === 'source color')\n const colors: Array<string> = []\n\n colors.push(\n `// ${\n workingThemes[0].type === 'custom theme' ? theme.name + ' - ' : ''\n }${color.name}`\n )\n color.shades.reverse().forEach((shade) => {\n colors.push(\n `val ${\n workingThemes[0].type === 'custom theme'\n ? new Case(theme.name + ' ' + color.name).doSnakeCase()\n : new Case(color.name).doSnakeCase()\n }_${shade.name} = Color(${\n shade.isTransparent\n ? chroma(source?.hex ?? '#000000')\n .alpha(shade.alpha ?? 1)\n .hex()\n .replace('#', '0xFF')\n .toUpperCase()\n : shade.hex.replace('#', '0xFF').toUpperCase()\n })`\n )\n })\n colors.push('')\n colors.forEach((color) => kotlin.push(color))\n })\n })\n\n kotlin.pop()\n\n return `import androidx.compose.ui.graphics.Color\\n\\n${kotlin.join('\\n')}`\n}\n\nexport default makeCompose\n","import { PaletteData } from '@tps/data.types'\nimport { ColorSpaceConfiguration } from '@tps/configuration.types'\nimport makeUniversalTokens from '../../formats/makeUniversalTokens'\nimport makeUIKit from '../../formats/makeUIKit'\nimport makeTailwindV4Config from '../../formats/makeTailwindV4Config'\nimport makeTailwindV3Config from '../../formats/makeTailwindV3Config'\nimport makeSwiftUI from '../../formats/makeSwiftUI'\nimport makeStyleDictionaryV3Tokens from '../../formats/makeStyleDictionaryV3Tokens'\nimport makeScssVariables from '../../formats/makeScssVariables'\nimport makeResources from '../../formats/makeResources'\nimport makeNativeTokens from '../../formats/makeNativeTokens'\nimport makeLessVariables from '../../formats/makeLessVariables'\nimport makeDtcgTokens from '../../formats/makeDtcgTokens'\nimport makeCsv from '../../formats/makeCsv'\nimport makeCssCustomProps from '../../formats/makeCssCustomProps'\nimport makeCompose from '../../formats/makeCompose'\n\nexport default class Code {\n private paletteData: PaletteData\n\n constructor(paletteData: PaletteData) {\n this.paletteData = paletteData\n }\n\n makeNativeTokens = () => {\n return makeNativeTokens(this.paletteData)\n }\n\n makeDtcgTokens = (colorSpace: ColorSpaceConfiguration = 'RGB') => {\n return makeDtcgTokens(this.paletteData, colorSpace)\n }\n\n makeStyleDictionaryV3Tokens = () => {\n return makeStyleDictionaryV3Tokens(this.paletteData)\n }\n\n makeUniversalJson = () => {\n return makeUniversalTokens(this.paletteData)\n }\n\n makeCssCustomProps = (colorSpace: ColorSpaceConfiguration = 'RGB') => {\n return makeCssCustomProps(this.paletteData, colorSpace)\n }\n\n makeScssVariables = (colorSpace: ColorSpaceConfiguration = 'RGB') => {\n return makeScssVariables(this.paletteData, colorSpace)\n }\n\n makeLessVariables = (colorSpace: ColorSpaceConfiguration = 'RGB') => {\n return makeLessVariables(this.paletteData, colorSpace)\n }\n\n makeTailwindV3Config = () => {\n return makeTailwindV3Config(this.paletteData)\n }\n\n makeTailwindV4Config = () => {\n return makeTailwindV4Config(this.paletteData)\n }\n\n makeSwiftUI = () => {\n return makeSwiftUI(this.paletteData)\n }\n\n makeUIKit = () => {\n return makeUIKit(this.paletteData)\n }\n\n makeCompose = () => {\n return makeCompose(this.paletteData)\n }\n\n makeResources = () => {\n return makeResources(this.paletteData)\n }\n\n makeCsv = () => {\n return makeCsv(this.paletteData)\n }\n}\n"],"names":["makeUniversalTokens","paletteData","workingThemes","theme","json","model","shade","modelWithAlpha","source","color","r","o","s","e","t","a","p","makeUIKit","swift","UIColors","Case","makeTailwindV4Config","cssOutput","colorName","colorValue","chroma","shadeName","isLastColor","isLastTheme","themeName","makeTailwindV3Config","makeSwiftUI","Colors","makeStyleDictionaryV3Tokens","makeScssVariables","colorSpace","scss","globalVars","setValueAccordingToColorSpace","actions","_a","setValueAccordingToAlpha","defaultTheme","defaultVars","index","c","variableName","themeVars","cssVarName","colorVariables","colorGroups","match","scssVarName","vars","rootBlock","classBlocks","makeResources","resources","colors","makeNativeTokens","paletteName","colorModel","themeModel","name","description","makeLessVariables","less","makeDtcgTokens","setValueAccordingToColorSpaceAndAlpha","makeCsv","colorCsv","modeCsv","lightness","l","h","stop","makeCssCustomProps","css","rowCss","makeCompose","kotlin","Code","__publicField"],"mappings":";;;;AAEA,MAAMA,IAAsB,CAACC,MAA6B;AACxD,QAAMC,IACFD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,GAExEC,IAA+B,CAAC,GAE5BC,IAAQ,CAACC,OACT,MAAMA,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,MAAM,CAAC,CAAC,MAAGA,EAAM,MAAM,CAAC,IAAI,IAErC;AAAA,IACL,KAAK;AAAA,MACH,GAAG,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC;AAAA,MAC1B,GAAG,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC;AAAA,MAC1B,GAAG,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC;AAAA,IAC5B;AAAA,IACA,IAAI;AAAA,MACF,GAAG,WAAWA,EAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACpC,GAAG,WAAWA,EAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACpC,GAAG,WAAWA,EAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,IACtC;AAAA,IACA,KAAK;AAAA,MACH,GAAG,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC;AAAA,MAC1B,GAAG,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC;AAAA,MAC1B,GAAG,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC;AAAA,IAC5B;AAAA,IACA,OAAO;AAAA,MACL,GAAG,WAAWA,EAAM,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACvC,GAAG,WAAWA,EAAM,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACvC,GAAG,KAAK,MAAMA,EAAM,MAAM,CAAC,CAAC;AAAA,IAC9B;AAAA,IACA,KAAK;AAAA,MACH,GAAG,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC;AAAA,MAC1B,GAAG,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC;AAAA,MAC1B,GAAG,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC;AAAA,IAC5B;AAAA,IACA,OAAO;AAAA,MACL,GAAG,WAAWA,EAAM,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACvC,GAAG,WAAWA,EAAM,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACvC,GAAG,WAAWA,EAAM,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,IACzC;AAAA,IACA,KAAK;AAAA,MACH,GAAG,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC;AAAA,MAC1B,GAAG,KAAK,MAAMA,EAAM,IAAI,CAAC,IAAI,GAAG;AAAA,MAChC,GAAG,KAAK,MAAMA,EAAM,IAAI,CAAC,IAAI,GAAG;AAAA,IAClC;AAAA,IACA,OAAO;AAAA,MACL,GAAG,KAAK,MAAMA,EAAM,MAAM,CAAC,CAAC;AAAA,MAC5B,GAAG,KAAK,MAAMA,EAAM,MAAM,CAAC,CAAC;AAAA,MAC5B,GAAG,KAAK,MAAMA,EAAM,MAAM,CAAC,CAAC;AAAA,IAC9B;AAAA,IACA,KAAKA,EAAM;AAAA,IACX,aAAaA,EAAM;AAAA,IACnB,MAAM;AAAA,EACR,IAGIC,IAAiB,CACrBD,GACAE,OAEO;AAAA,IACL,KAAK;AAAA,MACH,GAAG,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC;AAAA,MAC3B,GAAG,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC;AAAA,MAC3B,GAAG,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC;AAAA,IAC7B;AAAA,IACA,IAAI;AAAA,MACF,GAAG,WAAWA,EAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACrC,GAAG,WAAWA,EAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACrC,GAAG,WAAWA,EAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,IACvC;AAAA,IACA,KAAK;AAAA,MACH,GAAG,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC;AAAA,MAC3B,GAAG,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC;AAAA,MAC3B,GAAG,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC;AAAA,IAC7B;AAAA,IACA,OAAO;AAAA,MACL,GAAG,WAAWA,EAAO,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACxC,GAAG,WAAWA,EAAO,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACxC,GAAG,KAAK,MAAMA,EAAO,MAAM,CAAC,CAAC;AAAA,IAC/B;AAAA,IACA,KAAK;AAAA,MACH,GAAG,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC;AAAA,MAC3B,GAAG,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC;AAAA,MAC3B,GAAG,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC;AAAA,IAC7B;AAAA,IACA,OAAO;AAAA,MACL,GAAG,WAAWA,EAAO,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACxC,GAAG,WAAWA,EAAO,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,MACxC,GAAG,WAAWA,EAAO,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,IAC1C;AAAA,IACA,KAAK;AAAA,MACH,GAAG,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC;AAAA,MAC3B,GAAG,KAAK,MAAMA,EAAO,IAAI,CAAC,IAAI,GAAG;AAAA,MACjC,GAAG,KAAK,MAAMA,EAAO,IAAI,CAAC,IAAI,GAAG;AAAA,IACnC;AAAA,IACA,OAAO;AAAA,MACL,GAAG,KAAK,MAAMA,EAAO,MAAM,CAAC,CAAC;AAAA,MAC7B,GAAG,KAAK,MAAMA,EAAO,MAAM,CAAC,CAAC;AAAA,MAC7B,GAAG,KAAK,MAAMA,EAAO,MAAM,CAAC,CAAC;AAAA,IAC/B;AAAA,IACA,KAAKA,EAAO;AAAA,IACZ,OAAOF,EAAM;AAAA,IACb,aAAaA,EAAM;AAAA,IACnB,MAAM;AAAA,EACR;AAGE,SAAAJ,EAAc,CAAC,EAAE,SAAS,iBACdA,EAAA,QAAQ,CAACC,MAAU;AAC1B,IAAAC,EAAAD,EAAM,IAAI,IAAI,CAAC,GACdA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO;AAAA,QAC1B,CAACH,MAAUA,EAAM,SAAS;AAAA,MAC5B;AAEA,MAAAF,EAAKD,EAAM,IAAI,EAAEM,EAAM,IAAI,IAAI,CAAC,GAC1BA,EAAA,OAAO,QAAQ,CAACH,MAAU;AAC9B,QAAIA,KAASE,MACXJ,EAAKD,EAAM,IAAI,EAAEM,EAAM,IAAI,EAAEH,EAAM,IAAI,IAAIA,EAAM,gBAC7CC,EAAeD,GAAOE,CAAM,IAC5BH,EAAMC,CAAK;AAAA,MAAA,CAClB,GACIF,EAAAD,EAAM,IAAI,EAAEM,EAAM,IAAI,EAAE,cAAiBA,EAAM,aACpDL,EAAKD,EAAM,IAAI,EAAEM,EAAM,IAAI,EAAE,OAAU;AAAA,IAAA,CACxC,GACDL,EAAKD,EAAM,IAAI,EAAE,cAAiBA,EAAM,aACxCC,EAAKD,EAAM,IAAI,EAAE,OAAU;AAAA,EAAA,CAC5B,IAEaD,EAAA,QAAQ,CAACC,MAAU;AACzB,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO;AAAA,QAC1B,CAACH,MAAUA,EAAM,SAAS;AAAA,MAC5B;AAEK,MAAAF,EAAAK,EAAM,IAAI,IAAI,CAAC,GACdA,EAAA,OAAO,QAAQ,CAACH,MAAU;AAC9B,QAAIA,KAASE,MACXJ,EAAKK,EAAM,IAAI,EAAEH,EAAM,IAAI,IAAIA,EAAM,gBACjCC,EAAeD,GAAOE,CAAM,IAC5BH,EAAMC,CAAK;AAAA,MAAA,CAClB,GACDF,EAAKK,EAAM,IAAI,EAAE,cAAiBA,EAAM,aACxCL,EAAKK,EAAM,IAAI,EAAE,OAAU;AAAA,IAAA,CAC5B;AAAA,EAAA,CACF,GAEEL,EAAA,cAAiBH,EAAY,aAClCG,EAAK,OAAU,iBAER,KAAK,UAAUA,GAAM,MAAM,IAAI;AACxC;AC/JA,IAAIM,IAAI,OAAO,gBACXC,IAAI,CAACC,GAAGC,GAAGC,MAAMD,KAAKD,IAAIF,EAAEE,GAAGC,GAAG,EAAE,YAAY,IAAI,cAAc,IAAI,UAAU,IAAI,OAAOC,EAAC,CAAE,IAAIF,EAAEC,CAAC,IAAIC,GACzGC,IAAI,CAACH,GAAGC,GAAGC,MAAMH,EAAEC,GAAG,OAAOC,KAAK,WAAWA,IAAI,KAAKA,GAAGC,CAAC;AAC9D,MAAME,EAAE;AAAA,EACN,YAAYH,GAAG;AACb,IAAAE,EAAE,MAAM,QAAQ,GAChBA,EAAE,MAAM,eAAe,MAAM,KAAK,OAAO,cAAc,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,QAAQ,+BAA+B,EAAE,CAAC,GACtHA,EAAE,MAAM,gBAAgB,MAAM,KAAK,OAAO,OAAO,CAAC,EAAE,YAAW,IAAK,KAAK,OAAO,YAAW,EAAG,QAAQ,qBAAqB,CAACF,MAAMA,EAAE,YAAa,CAAA,EAAE,QAAQ,gCAAgC,EAAE,EAAE,MAAM,CAAC,CAAC,GACvME,EAAE,MAAM,eAAe,MAAM,KAAK,OAAO,cAAc,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,QAAQ,+BAA+B,EAAE,CAAC,GACtHA,EAAE,MAAM,eAAe,MAAM,KAAK,OAAO,YAAW,EAAG,QAAQ,qBAAqB,CAACF,MAAMA,EAAE,YAAW,CAAE,EAAE,QAAQ,gCAAgC,EAAE,CAAC,GACvJ,KAAK,SAASA;AAAA,EAClB;AACA;ACTA,MAAMI,IAAY,CAAChB,MAA6B;AAC9C,QAAMC,IACFD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,GACxEe,IAAuB,CAAC;AAEZ,SAAAhB,EAAA,QAAQ,CAACC,MAAU;AAC/B,UAAMgB,IAA0B,CAAC;AAC3B,IAAAhB,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO,KAAK,CAACH,MAAUA,EAAM,SAAS,cAAc;AAEzE,MAAAa,EAAS,KAAK,MAAMV,EAAM,IAAI,EAAE,GAChCA,EAAM,OAAO,QAAU,EAAA,QAAQ,CAACH,MAAU;AAC/B,QAAAa,EAAA;AAAA,UACPb,EAAM,gBACF,cAAc,IAAIc,EAAKX,EAAM,IAAI,EAAE,aAAa,CAAC,GAC/CH,EAAM,SAAS,WAAW,WAAWA,EAAM,IAC7C,mBAAmBE,KAAA,gBAAAA,EAAQ,GAAG,GAAG;AAAA,YAC/B;AAAA,WACD,YAAYA,KAAA,gBAAAA,EAAQ,GAAG,GAAG,QAAQ,EAAE,WAAWA,KAAA,gBAAAA,EAAQ,GAAG,GAAG;AAAA,YAC5D;AAAA,WACD,YAAYF,EAAM,SAAS,CAAC,MAC7B,cAAc,IAAIc,EAAKX,EAAM,IAAI,EAAE,cAAc,GAC/CH,EAAM,SAAS,WAAW,WAAWA,EAAM,IAC7C,mBAAmBA,EAAM,GAAG,CAAC,EAAE;AAAA,YAC7B;AAAA,UACD,CAAA,YAAYA,EAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,WAAWA,EAAM,GAAG,CAAC,EAAE;AAAA,YACxD;AAAA,UAAA,CACD;AAAA,QACP;AAAA,MAAA,CACD,GACDa,EAAS,KAAK,EAAE;AAAA,IAAA,CACjB,GACDA,EAAS,IAAI,GACTjB,EAAc,CAAC,EAAE,SAAS,iBACtBgB,EAAA;AAAA,MACJ,MAAMf,EAAM,IAAI;AAAA,WAAc,IAAIiB,EAAKjB,EAAM,IAAI,EAAE,cAAc;AAAA,MAAWgB,EAAS;AAAA,QACnF;AAAA;AAAA,MACD,CAAA;AAAA;AAAA,IACH,MACS,KAAK,GAAGA,EAAS,KAAK;AAAA,GAAM,CAAC,EAAE;AAAA,EAAA,CAC3C,GAEM;AAAA;AAAA;AAAA,IAAqCD,EAAM,KAAK;AAAA;AAAA,GAAQ,CAAC;AAAA;AAClE,GC7CMG,IAAuB,CAACpB,MAA6B;AACzD,QAAMC,IACJD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc;AAExE,MAAImB,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAEF,SAAIpB,EAAc,CAAC,EAAE,SAAS,iBACdA,EAAA,QAAQ,CAACC,MAAU;AACzB,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO;AAAA,QAC1B,CAACH,MAAUA,EAAM,SAAS;AAAA,MAC5B,GAEMiB,IAAY,IAAIH,EAAKX,EAAM,IAAI,EAAE,YAAY;AACtC,MAAAa,KAAA,QAAQb,EAAM,IAAI;AAAA,GAE/BA,EAAM,OAAO,KAAO,EAAA,QAAQ,CAACH,MAAU;AACrC,cAAMkB,IAAalB,EAAM,gBACrBmB,GAAOjB,KAAA,gBAAAA,EAAQ,QAAO,SAAS,EAC5B,MAAMF,EAAM,SAAS,CAAC,EACtB,IAAA,IACHA,EAAM,KAEJoB,IAAY,IAAIN,EAAKd,EAAM,IAAI,EAAE,YAAY;AACnD,QAAAgB,KAAa,aAAaC,CAAS,IAAIG,CAAS,KAAKF,CAAU;AAAA;AAAA,MAAA,CAChE;AAED,YAAMG,IAAclB,MAAUN,EAAM,OAAOA,EAAM,OAAO,SAAS,CAAC,GAC5DyB,IAAczB,MAAUD,EAAcA,EAAc,SAAS,CAAC;AAChE,MAAEyB,KAAeC,MACNN,KAAA;AAAA;AAAA,IACf,CACD;AAAA,EAAA,CACF,IAEapB,EAAA,QAAQ,CAACC,MAAU;AAC/B,UAAM0B,IAAY,IAAIT,EAAKjB,EAAM,IAAI,EAAE,YAAY;AAI7C,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO;AAAA,QAC1B,CAACH,MAAUA,EAAM,SAAS;AAAA,MAC5B,GAEMiB,IAAY,IAAIH,EAAKX,EAAM,IAAI,EAAE,YAAY;AACnD,MAAAa,KAAa,QAAQnB,EAAM,IAAI,MAAMM,EAAM,IAAI;AAAA,GAEzCA,EAAA,OAAO,QAAQ,CAACH,MAAU;AAC9B,cAAMkB,IAAalB,EAAM,gBACrBmB,GAAOjB,KAAA,gBAAAA,EAAQ,QAAO,SAAS,EAC5B,MAAMF,EAAM,SAAS,CAAC,EACtB,IAAA,IACHA,EAAM,KAEJoB,IAAY,IAAIN,EAAKd,EAAM,IAAI,EAAE,YAAY;AACnD,QAAAgB,KAAa,aAAaO,CAAS,IAAIN,CAAS,IAAIG,CAAS,KAAKF,CAAU;AAAA;AAAA,MAAA,CAC7E;AAED,YAAMG,IAAclB,MAAUN,EAAM,OAAOA,EAAM,OAAO,SAAS,CAAC,GAC5DyB,IAAczB,MAAUD,EAAcA,EAAc,SAAS,CAAC;AAChE,MAAEyB,KAAeC,MACNN,KAAA;AAAA;AAAA,IACf,CACD;AAAA,EAAA,CACF,GAGUA,KAAA;AAAA,GAENA;AACT,GC3EMQ,IAAuB,CAAC7B,MAA6B;AACzD,QAAMC,IACFD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,GAExEC,IAA+B;AAAA,IAC7B,OAAO;AAAA,MACL,QAAQ,CAAA;AAAA,IAAC;AAAA,EAEb;AAEF,SAAAH,EAAY,OAAO,CAAC,EAAE,OAAO,QAAQ,CAACQ,MAAU;AAC9C,IAAAL,EAAK,MAAS,OAAU,IAAIgB,EAAKX,EAAM,IAAI,EAAE,YAAa,CAAA,IAAI,CAAC;AAAA,EAAA,CAChE,GAEGP,EAAc,CAAC,EAAE,SAAS,iBACdA,EAAA,QAAQ,CAACC,MAAU;AACzB,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO;AAAA,QAC1B,CAACH,MAAUA,EAAM,SAAS;AAAA,MAC5B;AAEK,MAAAF,EAAA,MAAS,OAAU,IAAIgB,EAAKX,EAAM,IAAI,EAAE,YAAA,CAAa,EACxD,IAAIW,EAAKjB,EAAM,IAAI,EAAE,YACvB,CAAA,IAAI,CAAC,GACCM,EAAA,OAAO,QAAQ,CAACH,MAAU;AAC9B,QAAAF,EAAK,MAAS,OAAU,IAAIgB,EAAKX,EAAM,IAAI,EAAE,aAAa,EACxD,IAAIW,EAAKjB,EAAM,IAAI,EAAE,YAAA,CACvB,EAAE,IAAIiB,EAAKd,EAAM,IAAI,EAAE,aAAa,IAAIA,EAAM,gBAC1CmB,GAAOjB,KAAA,gBAAAA,EAAQ,QAAO,SAAS,EAC5B,MAAMF,EAAM,SAAS,CAAC,EACtB,IAAA,IACHA,EAAM;AAAA,MAAA,CACX;AAAA,IAAA,CACF;AAAA,EAAA,CACF,IAEaJ,EAAA,QAAQ,CAACC,MAAU;AACzB,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO;AAAA,QAC1B,CAACH,MAAUA,EAAM,SAAS;AAAA,MAC5B;AAEA,MAAAF,EAAK,MAAS,OAAU,IAAIgB,EAAKX,EAAM,IAAI,EAAE,YAAa,CAAA,IAAI,CAAC,GAC/DA,EAAM,OAAO,KAAO,EAAA,QAAQ,CAACH,MAAU;AACrC,QAAAF,EAAK,MAAS,OAAU,IAAIgB,EAAKX,EAAM,IAAI,EAAE,YAAa,CAAA,EACxD,IAAIW,EAAKd,EAAM,IAAI,EAAE,YACvB,CAAA,IAAIA,EAAM,gBACNmB,GAAOjB,KAAA,gBAAAA,EAAQ,QAAO,SAAS,EAC5B,MAAMF,EAAM,SAAS,CAAC,EACtB,QACHA,EAAM;AAAA,MAAA,CACX;AAAA,IAAA,CACF;AAAA,EAAA,CACF,GAEI;AAAA,mBAAiE,KAAK,UAAUF,GAAM,MAAM,IAAI,CAAC;AAC1G,GC5DM2B,IAAc,CAAC9B,MAA6B;AAChD,QAAMC,IACFD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,GACxEe,IAAuB,CAAC;AAEZ,SAAAhB,EAAA,QAAQ,CAACC,MAAU;AACzB,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO,KAAK,CAACH,MAAUA,EAAM,SAAS,cAAc,GACnE0B,IAAwB,CAAC;AAExB,MAAAA,EAAA;AAAA,QACL,MACE9B,EAAc,CAAC,EAAE,SAAS,iBAAiBC,EAAM,OAAO,QAAQ,EAClE,GAAGM,EAAM,IAAI;AAAA,MACf,GACAA,EAAM,OAAO,QAAU,EAAA,QAAQ,CAACH,MAAU;AACjC,QAAA0B,EAAA;AAAA,UACL1B,EAAM,gBACF,cACEJ,EAAc,CAAC,EAAE,SAAS,iBACtB,IAAIkB,EAAKjB,EAAM,OAAO,MAAMM,EAAM,IAAI,EAAE,aAAa,IACrD,IAAIW,EAAKX,EAAM,IAAI,EAAE,aAAa,CACxC,GACEH,EAAM,SAAS,WAAW,WAAWA,EAAM,IAC7C,iBAAiBE,KAAA,gBAAAA,EAAQ,GAAG,GAAG;AAAA,YAC7B;AAAA,WACD,YAAYA,KAAA,gBAAAA,EAAQ,GAAG,GAAG,QAAQ,EAAE,WAAWF,EAAM,GAAG,CAAC,EAAE;AAAA,YAC1D;AAAA,UAAA,CACD,aAAaA,EAAM,SAAS,CAAC,MAC9B,cACEJ,EAAc,CAAC,EAAE,SAAS,iBACtB,IAAIkB,EAAKjB,EAAM,OAAO,MAAMM,EAAM,IAAI,EAAE,aAAa,IACrD,IAAIW,EAAKX,EAAM,IAAI,EAAE,aAAA,CAC3B,GACEH,EAAM,SAAS,WAAW,WAAWA,EAAM,IAC7C,iBAAiBA,EAAM,GAAG,CAAC,EAAE;AAAA,YAC3B;AAAA,UACD,CAAA,YAAYA,EAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,WAAWA,EAAM,GAAG,CAAC,EAAE;AAAA,YACxD;AAAA,UAAA,CACD;AAAA,QACP;AAAA,MAAA,CACD,GACD0B,EAAO,KAAK,EAAE,GACdA,EAAO,QAAQ,CAACvB,MAAUS,EAAM,KAAKT,CAAK,CAAC;AAAA,IAAA,CAC5C;AAAA,EAAA,CACF,GAEDS,EAAM,IAAI,GAEH;AAAA;AAAA;AAAA;AAAA;AAAA,MAAmHA,EAAM;AAAA,IAC9H;AAAA;AAAA,EACD,CAAA;AAAA;AAAA;AACH,GCnDMe,IAA8B,CAAChC,MAA6B;AAChE,QAAMC,IACFD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,GAExEC,IAA+B;AAAA,IAC7B,OAAO,CAAA;AAAA,EACT,GAEIC,IAAQ,CACZI,GACAH,GACAE,OAEO;AAAA,IACL,MAAM;AAAA,IACN,OAAOF,EAAM,gBACTmB,EAAOjB,EAAO,GAAG,EACd,MAAMF,EAAM,SAAS,CAAC,EACtB,QACHA,EAAM;AAAA,IACV,SACEG,EAAM,gBAAgB,KAClBA,EAAM,cAAc,QAAQH,EAAM,cAClCA,EAAM;AAAA,EACd;AAGF,SAAAL,EAAY,OAAO,CAAC,EAAE,OAAO,QAAQ,CAACQ,MAAU;AAC9C,IAAAL,EAAK,MAASK,EAAM,IAAI,IAAI,CAAC;AAAA,EAAA,CAC9B,GAEGP,EAAc,CAAC,EAAE,SAAS,iBACdA,EAAA,QAAQ,CAACC,MAAU;AACzB,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO;AAAA,QAC1B,CAACH,MAAUA,EAAM,SAAS;AAAA,MAC5B;AAEK,MAAAF,EAAA,MAASK,EAAM,IAAI,EAAEN,EAAM,IAAI,IAAI,CAAC,GACnCM,EAAA,OAAO,QAAQ,CAACH,MAAU;AAC9B,QAAIA,KAASE,MACNJ,EAAA,MAASK,EAAM,IAAI,EAAEN,EAAM,IAAI,EAAEG,EAAM,IAAI,IAAID;AAAA,UAClDI;AAAA,UACAH;AAAA,UACAE;AAAA,QACF;AAAA,MAAA,CACH;AAAA,IAAA,CACF;AAAA,EAAA,CACF,IAEaN,EAAA,QAAQ,CAACC,MAAU;AACzB,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO;AAAA,QAC1B,CAACH,MAAUA,EAAM,SAAS;AAAA,MAC5B;AAEA,MAAAF,EAAK,MAASK,EAAM,IAAI,IAAI,CAAC,GACvBA,EAAA,OAAO,QAAQ,CAACH,MAAU;AAC9B,QAAIA,KAASE,MACNJ,EAAA,MAASK,EAAM,IAAI,EAAEH,EAAM,IAAI,IAAID,EAAMI,GAAOH,GAAOE,CAAM;AAAA,MAAA,CACrE;AAAA,IAAA,CACF;AAAA,EAAA,CACF,GAEI,KAAK,UAAUJ,GAAM,MAAM,IAAI;AACxC,GCtEM8B,IAAoB,CACxBjC,GACAkC,MACG;AACH,QAAMjC,IACFD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,GACxEiC,IAAsB,CAAA,GACtBC,IAA4B,CAAC,GAEzBC,IAAgC,CAAChC,MAAgC;;AACjE,IAAA,MAAMA,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,MAAM,CAAC,CAAC,MAAGA,EAAM,MAAM,CAAC,IAAI;AAE5C,UAAMiC,IAA4C;AAAA,MAChD,KAAK,MACH,OAAO,KAAK,MAAMjC,EAAM,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;AAAA,QACvCA,EAAM,IAAI,CAAC;AAAA,MAAA,CACZ,KAAK,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC,CAAC;AAAA,MAChC,KAAK,MAAMA,EAAM;AAAA,MACjB,KAAK,MACH,OAAO,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK;AAAA,QACtCA,EAAM,IAAI,CAAC,IAAI;AAAA,MAAA,CAChB,KAAK,KAAK,MAAMA,EAAM,IAAI,CAAC,IAAI,GAAG,CAAC;AAAA,MACtC,KAAK,MACH,OAAO,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;AAAA,QACvCA,EAAM,IAAI,CAAC;AAAA,MAAA,CACZ,IAAI,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC,CAAC;AAAA,MAC/B,OAAO,MACL,SAAS,KAAK,MAAMA,EAAM,MAAM,CAAC,IAAI,GAAG,CAAC,KAAKA,EAAM,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,KAAK,MAAMA,EAAM,MAAM,CAAC,CAAC,CAAC;AAAA,IACzG;AAEO,YAAAkC,IAAAD,EAAQJ,KAAc,WAAtB,gBAAAK,EAAA,KAAAD;AAAA,EACT,GAEME,IAA2B,CAC/BnC,GACAE,MACG;;AACC,IAAA,MAAMF,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,MAAM,CAAC,CAAC,MAAGA,EAAM,MAAM,CAAC,IAAI;AAE5C,UAAMiC,IAA4C;AAAA,MAChD,KAAK,MACH;;AAAA,uBAAQ,KAAK,MAAM/B,EAAO,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;AAAA,UACzCA,EAAO,IAAI,CAAC;AAAA,QAAA,CACb,KAAK,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC,CAAC,OAAKgC,IAAAlC,EAAM,UAAN,gBAAAkC,EAAa,QAAQ,OAAM,CAAC;AAAA;AAAA,MAClE,KAAK,MACHf,EAAOjB,EAAO,GAAG,EACd,MAAMF,EAAM,SAAS,CAAC,EACtB,IAAI;AAAA,MACT,KAAK,MACH;;AAAA,uBAAQ,KAAK,MAAME,EAAO,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK;AAAA,UACxCA,EAAO,IAAI,CAAC,IAAI;AAAA,QAAA,CACjB,MAAM,KAAK,MAAMA,EAAO,IAAI,CAAC,IAAI,GAAG,CAAC,OAAKgC,IAAAlC,EAAM,UAAN,gBAAAkC,EAAa,QAAQ,OAAM,CAAC;AAAA;AAAA,MACzE,KAAK,MACH;;AAAA,sBAAO,KAAK,MAAMhC,EAAO,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;AAAA,UACxCA,EAAO,IAAI,CAAC;AAAA,QAAA,CACb,IAAI,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC,CAAC,QAAMgC,IAAAlC,EAAM,UAAN,gBAAAkC,EAAa,QAAQ,OAAM,CAAC;AAAA;AAAA,MAClE,OAAO,MACL;;AAAA,wBAAS,KAAK,MAAMhC,EAAO,MAAM,IAAI,GAAG,CAAC,CAAC,KAAKA,EAAO,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,KAAK,MAAMA,EAAO,MAAM,CAAC,CAAC,CAAC,QAAMgC,IAAAlC,EAAM,UAAN,gBAAAkC,EAAa,QAAQ,OAAM,CAAC;AAAA;AAAA,IAC9I;AAEO,YAAAA,IAAAD,EAAQJ,KAAc,WAAtB,gBAAAK,EAAA,KAAAD;AAAA,EACT,GAEMG,IAAexC,EAAc;AAAA,IACjC,CAACC,MAAUA,EAAM,SAAS;AAAA,EAC5B;AAEA,MAAIuC,GAAc;AAChB,UAAMC,IAA6B,CAAC;AAEpC,WAAAD,EAAa,OAAO,QAAQ,CAACjC,GAAOmC,MAAU;AAC5C,MAAIA,IAAQ,KACVD,EAAY,KAAK,EAAE,GAGrBA,EAAY,KAAK,MAAMlC,EAAM,IAAI,EAAE,GACnCA,EAAM,OAAO,QAAU,EAAA,QAAQ,CAACH,MAAU;AAClC,cAAAE,IAASC,EAAM,OAAO,KAAK,CAACoC,MAAMA,EAAE,SAAS,cAAc,GAC3DC,IAAe,IAAI,IAAI1B,EAAKX,EAAM,IAAI,EAAE,YAAY,CAAC,IAAIH,EAAM,IAAI;AAEzE,QAAIE,KACUmC,EAAA;AAAA,UACV,GAAGG,CAAY,KAAKxC,EAAM,gBAAgBmC,EAAyBnC,GAAOE,CAAM,IAAI8B,EAA8BhC,CAAK,CAAC;AAAA,QAC1H;AAAA,MACF,CACD;AAAA,IAAA,CACF,GAED8B,EAAK,KAAKO,EAAY,KAAK;AAAA,CAAI,CAAC,GAEzBP,EAAK,KAAK;AAAA,CAAI;AAAA,EAAA;AAGT,EAAAlC,EAAA,QAAQ,CAACC,MAAU;AAC/B,UAAM0B,IAAY,IAAIT,EAAKjB,EAAM,IAAI,EAAE,YAAY,GAC7C4C,IAA2B,CAAC;AAElC,IAAAA,EAAU,KAAK,MAAM5C,EAAM,IAAI,EAAE,GACvB4C,EAAA,KAAK,UAAUlB,CAAS,IAAI,GAEtC1B,EAAM,OAAO,QAAQ,CAACM,GAAOmC,MAAU;AACrC,MAAIA,IAAQ,KACVG,EAAU,KAAK,EAAE,GAGnBA,EAAU,KAAK,QAAQtC,EAAM,IAAI,EAAE,GACnCA,EAAM,OAAO,QAAU,EAAA,QAAQ,CAACH,MAAU;AAClC,cAAAE,IAASC,EAAM,OAAO,KAAK,CAACoC,MAAMA,EAAE,SAAS,cAAc,GAE3DG,IAAa,KADD,IAAI5B,EAAKX,EAAM,IAAI,EAAE,YAAY,CAClB,IAAIH,EAAM,IAAI;AAE/C,QAAIE,KACQuC,EAAA;AAAA,UACR,KAAKC,CAAU,KAAK1C,EAAM,gBAAgBmC,EAAyBnC,GAAOE,CAAM,IAAI8B,EAA8BhC,CAAK,CAAC;AAAA,QAC1H;AAAA,MACF,CACD;AAAA,IAAA,CACF,GAEDyC,EAAU,KAAK,GAAG,GAClBX,EAAK,KAAKW,EAAU,KAAK;AAAA,CAAI,CAAC;AAAA,EAAA,CAC/B;AAEK,QAAAE,wBAAqB,IAAY;AAenC,MAbU/C,EAAA,QAAQ,CAACC,MAAU;AACzB,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,MAAAA,EAAA,OAAO,QAAQ,CAACH,MAAU;AAE9B,YADeG,EAAM,OAAO,KAAK,CAACoC,MAAMA,EAAE,SAAS,cAAc,GACrD;AAEV,gBAAMG,IAAa,KADD,IAAI5B,EAAKX,EAAM,IAAI,EAAE,YAAY,CAClB,IAAIH,EAAM,IAAI;AAC/C,UAAA2C,EAAe,IAAID,CAAU;AAAA,QAAA;AAAA,MAC/B,CACD;AAAA,IAAA,CACF;AAAA,EAAA,CACF,GAEGC,EAAe,OAAO,GAAG;AACrB,UAAAC,wBAAkB,IAA2B;AAEpC,IAAAD,EAAA,QAAQ,CAACD,MAAe;AAC/B,YAAAG,IAAQH,EAAW,MAAM,mCAAmC;AAClE,UAAIG,GAAO;AACH,cAAA5B,IAAY4B,EAAM,CAAC;AACzB,QAAKD,EAAY,IAAI3B,CAAS,KAChB2B,EAAA,IAAI3B,GAAW,EAAE;AAE/B,cAAM6B,IAAc,IAAIJ,EAAW,UAAU,CAAC,CAAC;AACnC,QAAAE,EAAA,IAAI3B,CAAS,EAAG,KAAK,GAAG6B,CAAW,SAASJ,CAAU,IAAI;AAAA,MAAA;AAAA,IACxE,CACD,GAEWE,EAAA,QAAQ,CAACG,GAAM9B,MAAc;AAC5B,MAAAc,EAAA;AAAA,QACT,MAAMd,EAAU,OAAO,CAAC,EAAE,gBAAgBA,EAAU,MAAM,CAAC,CAAC;AAAA,MAC9D,GACWc,EAAA,KAAK,GAAGgB,CAAI,GACvBhB,EAAW,KAAK,EAAE;AAAA,IAAA,CACnB,GAEGA,EAAW,SAAS,KAAKA,EAAWA,EAAW,SAAS,CAAC,MAAM,MACjEA,EAAW,IAAI,GAGjBD,EAAK,KAAKC,EAAW,KAAK;AAAA,CAAI,CAAC;AAAA,EAAA;AAG3B,QAAAiB,IAAsB,CAAC,SAAS;AAExB,EAAApD,EAAA,QAAQ,CAACC,GAAOyC,MAAU;AACtC,UAAMf,IAAY,IAAIT,EAAKjB,EAAM,IAAI,EAAE,YAAY;AACzC,IAAAmD,EAAA,KAAK,mBAAmBzB,CAAS;AAAA,eAChCA,CAAS;AAAA,IACpB,GACIe,MAAU1C,EAAc,SAAS,KAAGoD,EAAU,KAAK,EAAE;AAAA,EAAA,CAC1D,GAEDA,EAAU,KAAK,GAAG,GAClBlB,EAAK,KAAKkB,EAAU,KAAK;AAAA,CAAI,CAAC;AAE9B,QAAMC,IAAwB,CAAC;AAEjB,SAAArD,EAAA,QAAQ,CAACC,MAAU;AAC/B,UAAM0B,IAAY,IAAIT,EAAKjB,EAAM,IAAI,EAAE,YAAY;AACvC,IAAAoD,EAAA,KAAK,IAAI1B,CAAS;AAAA,aACrBA,CAAS;AAAA,EACpB;AAAA,EAAA,CACC,GAEDO,EAAK,KAAKmB,EAAY,KAAK;AAAA;AAAA,CAAM,CAAC,GAE3BnB,EAAK,KAAK;AAAA;AAAA,CAAM;AACzB,GCzMMoB,IAAgB,CAACvD,MAA6B;AAClD,QAAMC,IACFD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,GACxEsD,IAA2B,CAAC;AAEhB,SAAAvD,EAAA,QAAQ,CAACC,MAAU;AACzB,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO,KAAK,CAACH,MAAUA,EAAM,SAAS,cAAc,GACnEoD,IAAwB,CAAC;AAExB,MAAAA,EAAA;AAAA,QACL,OACExD,EAAc,CAAC,EAAE,SAAS,iBACtB,GAAGC,EAAM,IAAI,MAAMM,EAAM,IAAI,QAC7B,GAAGA,EAAM,IAAI,KACnB;AAAA,MACF,GACAA,EAAM,OAAO,QAAU,EAAA,QAAQ,CAACH,MAAU;AACjC,QAAAoD,EAAA;AAAA,UACL,gBACExD,EAAc,CAAC,EAAE,SAAS,iBACtB,IAAIkB,EAAKjB,EAAM,OAAO,MAAMM,EAAM,IAAI,EAAE,YAAA,IACxC,IAAIW,EAAKX,EAAM,IAAI,EAAE,YAC3B,CAAA,IAAIH,EAAM,IAAI,KACZA,EAAM,gBACFmB,GAAOjB,KAAA,gBAAAA,EAAQ,QAAO,SAAS,EAC5B,MAAMF,EAAM,SAAS,CAAC,EACtB,IAAI,IACPA,EAAM,GACZ;AAAA,QACF;AAAA,MAAA,CACD,GACDoD,EAAO,KAAK,EAAE,GACdA,EAAO,QAAQ,CAACjD,MAAUgD,EAAU,KAAKhD,CAAK,CAAC;AAAA,IAAA,CAChD;AAAA,EAAA,CACF,GAEDgD,EAAU,IAAI,GAEP;AAAA;AAAA,IAA0DA,EAAU;AAAA,IACzE;AAAA;AAAA,EACD,CAAA;AAAA;AACH,GCzCME,IAAmB,CAAC1D,MAA6B;AACrD,QAAM2D,IAAc3D,EAAY,MAE1B4D,IAAa,CACjBpD,GACAH,GACAE,OAEO;AAAA,IACL,OAAO;AAAA,IACP,QAAQF,EAAM,gBACVmB,EAAOjB,EAAO,GAAG,EACd,MAAMF,EAAM,SAAS,CAAC,EACtB,QACHA,EAAM;AAAA,IACV,cACEG,EAAM,gBAAgB,KAClBA,EAAM,cAAc,QAAQH,EAAM,cAClCA,EAAM;AAAA,EACd,IAGIwD,IAAa,CAACC,GAAcC,OACzB;AAAA,IACL,MAAAD;AAAA,IACA,OAAO;AAAA,IACP,aAAAC;AAAA,IACA,mBAAmB;AAAA,MACjB,CAAC,GAAGJ,CAAW,IAAIG,CAAI,EAAE,GAAG;AAAA,IAAA;AAAA,EAEhC,IAGI7D,IACFD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,GAExEC,IAA+B;AAAA,IAC7B,SAASF,EACN,OAAO,CAACC,MAAUA,EAAM,SAAS,cAAc,EAC/C,IAAI,CAACA,MAAU2D,EAAW3D,EAAM,MAAMA,EAAM,WAAW,CAAC;AAAA,IAC3D,WAAW;AAAA,MACT,cAAc,CAAC;AAAA,MACf,eAAeD,EACZ,OAAO,CAACC,MAAUA,EAAM,SAAS,cAAc,EAC/C;AAAA,QACC,CAACA,MACC,GAAG,IAAIiB,EAAKwC,CAAW,EAAE,YAAA,CAAa,IAAI,IAAIxC,EAAKjB,EAAM,IAAI,EAAE,aAAa;AAAA,MAChF;AAAA,MACF,YAAY,CAAA;AAAA,IAAC;AAAA,EAEjB;AAEE,SAAAD,EAAc,CAAC,EAAE,SAAS,iBACdA,EAAA,QAAQ,CAACC,MAAU;AAC/B,IAAAC,EAAK,GAAGwD,CAAW,IAAIzD,EAAM,IAAI,EAAE,IAAI,CAAC,GAElCA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO;AAAA,QAC1B,CAACH,MAAUA,EAAM,SAAS;AAAA,MAC5B;AAEM,MAAAG,EAAA,OAAO,QAAQ,CAACH,MAAU;AAC9B,QAAIA,KAASE,MACNJ,EAAA,GAAGwD,CAAW,IAAIzD,EAAM,IAAI,EAAE,EACjC,GAAG,IAAIiB,EAAKX,EAAM,IAAI,EAAE,YAAa,CAAA,IAAIH,EAAM,IAAI,EACrD,IAAIuD,EAAWpD,GAAOH,GAAOE,CAAM;AAAA,MAAA,CACtC;AAAA,IAAA,CACF;AAAA,EAAA,CACF,IAEaN,EAAA,QAAQ,CAACC,MAAU;AAC1B,IAAAC,EAAAwD,CAAW,IAAI,CAAC,GAEfzD,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO;AAAA,QAC1B,CAACH,MAAUA,EAAM,SAAS;AAAA,MAC5B;AAEM,MAAAG,EAAA,OAAO,QAAQ,CAACH,MAAU;AAC9B,QAAIA,KAASE,MACXJ,EAAKwD,CAAW,EACd,GAAG,IAAIxC,EAAKX,EAAM,IAAI,EAAE,YAAA,CAAa,IAAIH,EAAM,IAAI,EACrD,IAAIuD,EAAWpD,GAAOH,GAAOE,CAAM;AAAA,MAAA,CACtC;AAAA,IAAA,CACF;AAAA,EAAA,CACF,GAEI,KAAK,UAAUJ,GAAM,MAAM,IAAI;AACxC,GC9FM6D,IAAoB,CACxBhE,GACAkC,MACG;AACH,QAAMjC,IACFD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,GACxE+D,IAAsB,CAAC,GAEnB5B,IAAgC,CAAChC,MAAgC;;AACjE,IAAA,MAAMA,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,MAAM,CAAC,CAAC,MAAGA,EAAM,MAAM,CAAC,IAAI;AAE5C,UAAMiC,IAA4C;AAAA,MAChD,KAAK,MACH,OAAO,KAAK,MAAMjC,EAAM,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;AAAA,QACvCA,EAAM,IAAI,CAAC;AAAA,MAAA,CACZ,KAAK,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC,CAAC;AAAA,MAChC,KAAK,MAAMA,EAAM;AAAA,MACjB,KAAK,MACH,OAAO,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK;AAAA,QACtCA,EAAM,IAAI,CAAC,IAAI;AAAA,MAAA,CAChB,KAAK,KAAK,MAAMA,EAAM,IAAI,CAAC,IAAI,GAAG,CAAC;AAAA,MACtC,KAAK,MACH,OAAO,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;AAAA,QACvCA,EAAM,IAAI,CAAC;AAAA,MAAA,CACZ,IAAI,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC,CAAC;AAAA,MAC/B,OAAO,MACL,SAAS,KAAK,MAAMA,EAAM,MAAM,CAAC,IAAI,GAAG,CAAC,KAAKA,EAAM,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,KAAK,MAAMA,EAAM,MAAM,CAAC,CAAC,CAAC;AAAA,IACzG;AAEO,YAAAkC,IAAAD,EAAQJ,KAAc,WAAtB,gBAAAK,EAAA,KAAAD;AAAA,EACT,GAEME,IAA2B,CAC/BnC,GACAE,MACG;;AACC,IAAA,MAAMF,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,MAAM,CAAC,CAAC,MAAGA,EAAM,MAAM,CAAC,IAAI;AAE5C,UAAMiC,IAA4C;AAAA,MAChD,KAAK,MACH;;AAAA,uBAAQ,KAAK,MAAM/B,EAAO,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;AAAA,UACzCA,EAAO,IAAI,CAAC;AAAA,QAAA,CACb,KAAK,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC,CAAC,OAAKgC,IAAAlC,EAAM,UAAN,gBAAAkC,EAAa,QAAQ,OAAM,CAAC;AAAA;AAAA,MAClE,KAAK,MACHf,EAAOjB,EAAO,GAAG,EACd,MAAMF,EAAM,SAAS,CAAC,EACtB,IAAI;AAAA,MACT,KAAK,MACH;;AAAA,uBAAQ,KAAK,MAAME,EAAO,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;AAAA,UACzCA,EAAO,IAAI,CAAC,IAAI;AAAA,QAAA,CACjB,KAAK,KAAK,MAAMA,EAAO,IAAI,CAAC,IAAI,GAAG,CAAC,OAAKgC,IAAAlC,EAAM,UAAN,gBAAAkC,EAAa,QAAQ,OAAM,CAAC;AAAA;AAAA,MACxE,KAAK,MACH;;AAAA,sBAAO,KAAK,MAAMhC,EAAO,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;AAAA,UACxCA,EAAO,IAAI,CAAC;AAAA,QAAA,CACb,IAAI,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC,CAAC,QAAMgC,IAAAlC,EAAM,UAAN,gBAAAkC,EAAa,QAAQ,OAAM,CAAC;AAAA;AAAA,MAClE,OAAO,MACL;;AAAA,wBAAS,KAAK,MAAMhC,EAAO,MAAM,CAAC,IAAI,GAAG,CAAC,KAAKA,EAAO,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,KAAK,MAAMA,EAAO,MAAM,CAAC,CAAC,CAAC,QAAMgC,IAAAlC,EAAM,UAAN,gBAAAkC,EAAa,QAAQ,OAAM,CAAC;AAAA;AAAA,IAC9I;AAEO,YAAAA,IAAAD,EAAQJ,KAAc,WAAtB,gBAAAK,EAAA,KAAAD;AAAA,EACT,GAEMG,IAAexC,EAAc;AAAA,IACjC,CAACC,MAAUA,EAAM,SAAS;AAAA,EAC5B;AAEA,MAAIuC,GAAc;AAChB,UAAMC,IAA6B,CAAC;AAEpC,WAAAD,EAAa,OAAO,QAAQ,CAACjC,GAAOmC,MAAU;AAC5C,MAAIA,IAAQ,KACVD,EAAY,KAAK,EAAE,GAGrBA,EAAY,KAAK,MAAMlC,EAAM,IAAI,EAAE,GACnCA,EAAM,OAAO,QAAU,EAAA,QAAQ,CAACH,MAAU;AAClC,cAAAE,IAASC,EAAM,OAAO,KAAK,CAACoC,MAAMA,EAAE,SAAS,cAAc,GAC3DC,IAAe,IAAI,IAAI1B,EAAKX,EAAM,IAAI,EAAE,YAAY,CAAC,IAAIH,EAAM,IAAI;AAEzE,QAAIE,KACUmC,EAAA;AAAA,UACV,GAAGG,CAAY,KAAKxC,EAAM,gBAAgBmC,EAAyBnC,GAAOE,CAAM,IAAI8B,EAA8BhC,CAAK,CAAC;AAAA,QAC1H;AAAA,MACF,CACD;AAAA,IAAA,CACF,GAED4D,EAAK,KAAKvB,EAAY,KAAK;AAAA,CAAI,CAAC,GAEzBuB,EAAK,KAAK;AAAA,CAAI;AAAA,EAAA;AAGT,EAAAhE,EAAA,QAAQ,CAACC,MAAU;AAC/B,UAAM0B,IAAY,IAAIT,EAAKjB,EAAM,IAAI,EAAE,YAAY,GAC7C4C,IAA2B,CAAC;AAElC,IAAAA,EAAU,KAAK,MAAM5C,EAAM,IAAI,EAAE,GACvB4C,EAAA,KAAK,IAAIlB,CAAS,MAAM,GAElC1B,EAAM,OAAO,QAAQ,CAACM,GAAOmC,MAAU;AACrC,MAAIA,IAAQ,KACVG,EAAU,KAAK,EAAE,GAGnBA,EAAU,KAAK,QAAQtC,EAAM,IAAI,EAAE,GACnCA,EAAM,OAAO,QAAU,EAAA,QAAQ,CAACH,MAAU;AAClC,cAAAE,IAASC,EAAM,OAAO,KAAK,CAACoC,MAAMA,EAAE,SAAS,cAAc,GAC3DC,IAAe,IAAI,IAAI1B,EAAKX,EAAM,IAAI,EAAE,YAAY,CAAC,IAAIH,EAAM,IAAI;AAEzE,QAAIE,KACQuC,EAAA;AAAA,UACR,KAAKD,CAAY,KAAKxC,EAAM,gBAAgBmC,EAAyBnC,GAAOE,CAAM,IAAI8B,EAA8BhC,CAAK,CAAC;AAAA,QAC5H;AAAA,MACF,CACD;AAAA,IAAA,CACF,GAEDyC,EAAU,KAAK,GAAG,GAClBmB,EAAK,KAAKnB,EAAU,KAAK;AAAA,CAAI,CAAC;AAAA,EAAA,CAC/B;AAEK,QAAAO,IAAsB,CAAC,SAAS;AAExB,EAAApD,EAAA,QAAQ,CAACC,GAAOyC,MAAU;AACtC,UAAMf,IAAY,IAAIT,EAAKjB,EAAM,IAAI,EAAE,YAAY;AACzC,IAAAmD,EAAA,KAAK,mBAAmBzB,CAAS;AAAA,OACxCA,CAAS;AAAA,IACZ,GACIe,MAAU1C,EAAc,SAAS,KAAGoD,EAAU,KAAK,EAAE;AAAA,EAAA,CAC1D,GAEDA,EAAU,KAAK,GAAG,GAClBY,EAAK,KAAKZ,EAAU,KAAK;AAAA,CAAI,CAAC;AAE9B,QAAMC,IAAwB,CAAC;AAEjB,SAAArD,EAAA,QAAQ,CAACC,MAAU;AAC/B,UAAM0B,IAAY,IAAIT,EAAKjB,EAAM,IAAI,EAAE,YAAY;AACvC,IAAAoD,EAAA,KAAK,IAAI1B,CAAS;AAAA,KAC7BA,CAAS;AAAA,EACZ;AAAA,EAAA,CACC,GAEDqC,EAAK,KAAKX,EAAY,KAAK;AAAA;AAAA,CAAM,CAAC,GAE3BW,EAAK,KAAK;AAAA;AAAA,CAAM;AACzB,GC3JMC,IAAiB,CACrBlE,GACAkC,MACG;AACH,QAAMjC,IACFD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,GAExEC,IAA+B,CAAC,GAE5BkC,IAAgC,CAAChC,MAAgC;;AACjE,IAAA,MAAMA,EAAM,MAAM,CAAC,CAAC,MAAGA,EAAM,MAAM,CAAC,IAAI;AAE5C,UAAMiC,IAA4C;AAAA,MAChD,KAAK,OACI;AAAA,QACL,YAAY;AAAA,QACZ,YAAY;AAAA,UACV,WAAWjC,EAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,UACjC,WAAWA,EAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,UACjC,WAAWA,EAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,QACnC;AAAA,QACA,KAAKA,EAAM;AAAA,MACb;AAAA,MAEF,OAAO,OACE;AAAA,QACL,YAAY;AAAA,QACZ,YAAY;AAAA,UACV,WAAWA,EAAM,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,UACpC,WAAWA,EAAM,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,UACpC,WAAWA,EAAM,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,QACtC;AAAA,QACA,KAAKA,EAAM;AAAA,MACb;AAAA,IAEJ;AAEO,YAAAkC,IAAAD,EAAQJ,KAAc,WAAtB,gBAAAK,EAAA,KAAAD;AAAA,EACT,GAEM6B,IAAwC,CAC5C5D,GACAF,MACG;;AACC,IAAA,MAAMA,EAAM,MAAM,CAAC,CAAC,MAAGA,EAAM,MAAM,CAAC,IAAI;AAE5C,UAAMiC,IAA4C;AAAA,MAChD,KAAK,OACI;AAAA,QACL,YAAY;AAAA,QACZ,YAAY;AAAA,UACV,WAAW/B,EAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,UAClC,WAAWA,EAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,UAClC,WAAWA,EAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,QACpC;AAAA,QACA,KAAKA,EAAO;AAAA,QACZ,OAAOF,EAAM;AAAA,MACf;AAAA,MAEF,OAAO,OACE;AAAA,QACL,YAAY;AAAA,QACZ,YAAY;AAAA,UACV,WAAWE,EAAO,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,UACrC,WAAWA,EAAO,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,UACrC,WAAWA,EAAO,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,QACvC;AAAA,QACA,KAAKA,EAAO;AAAA,QACZ,OAAOF,EAAM;AAAA,MACf;AAAA,IAEJ;AAEO,YAAAkC,IAAAD,EAAQJ,KAAc,WAAtB,gBAAAK,EAAA,KAAAD;AAAA,EACT;AAEI,SAAArC,EAAc,CAAC,EAAE,SAAS,iBACdA,EAAA,QAAQ,CAACC,MAAU;AACzB,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO;AAAA,QAC1B,CAACH,MAAUA,EAAM,SAAS;AAAA,MAC5B;AAEI,MAACF,EAAKK,EAAM,IAAI,MACbL,EAAAK,EAAM,IAAI,IAAI;AAAA,QACjB,OAAO;AAAA,MACT,IAEIA,EAAA,OAAO,QAAQ,CAACH,MAAU;AAC9B,QAAI,CAACF,EAAKK,EAAM,IAAI,EAAEH,EAAM,IAAI,KAAKE,MACnCJ,EAAKK,EAAM,IAAI,EAAEH,EAAM,IAAI,IAAI;AAAA,UAC7B,OAAO;AAAA,UACP,QAAQA,EAAM,gBACV8D,EAAsC5D,GAAQF,CAAK,IACnDgC,EAA8BhC,CAAK;AAAA,UACvC,cACEG,EAAM,gBAAgB,KAClBA,EAAM,cAAc,QAAQH,EAAM,cAClCA,EAAM;AAAA,UACZ,aAAa;AAAA,YACX,MAAM,CAAA;AAAA,UAAC;AAAA,QAEX,IACEE,MACFJ,EAAKK,EAAM,IAAI,EAAEH,EAAM,IAAI,EAAE,YAAY,KAAKH,EAAM,IAAI,IACtDG,EAAM,gBACF8D,EAAsC5D,GAAQF,CAAK,IACnDgC,EAA8BhC,CAAK;AAAA,MAAA,CAC5C;AAAA,IAAA,CACF;AAAA,EAAA,CACF,IAEaJ,EAAA,QAAQ,CAACC,MAAU;AACzB,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO;AAAA,QAC1B,CAACH,MAAUA,EAAM,SAAS;AAAA,MAC5B;AAEK,MAAAF,EAAAK,EAAM,IAAI,IAAI,CAAC,GACdA,EAAA,OAAO,QAAQ,CAACH,MAAU;AAC9B,QAAIA,KAASE,MACXJ,EAAKK,EAAM,IAAI,EAAEH,EAAM,IAAI,IAAI;AAAA,UAC7B,OAAO;AAAA,UACP,QAAQA,EAAM,gBACV8D,EAAsC5D,GAAQF,CAAK,IACnDgC,EAA8BhC,CAAK;AAAA,UACvC,cACEG,EAAM,gBAAgB,KAClBA,EAAM,cAAc,QAAQH,EAAM,cAClCA,EAAM;AAAA,QACd;AAAA,MAAA,CACH;AAAA,IAAA,CACF;AAAA,EAAA,CACF,GAEI,KAAK,UAAUF,GAAM,MAAM,IAAI;AACxC,GCjIMiE,IAAU,CAACpE,MAA6B;AACtC,QAAAC,IACFD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,GACxEmE,IAA4B,CAAA,GAC5BC,IAA0B,IAC1BC,IAA2B,IAC3BC,IAA4B,CAAA,GAC5B5B,IAA4B,IAC5B6B,IAA4B,CAAC;AAEjB,SAAAxE,EAAA,QAAQ,CAACC,MAAU;AACzB,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,MAAAA,EAAA,OAAO,QAAQ,CAACH,MAAU;AACpB,QAAAkE,EAAA,KAAKlE,EAAM,IAAI,GACzBmE,EAAE,KAAK,KAAK,MAAMnE,EAAM,IAAI,CAAC,CAAC,CAAC,GAC/BuC,EAAE,KAAK,KAAK,MAAMvC,EAAM,IAAI,CAAC,CAAC,CAAC,GAC/BoE,EAAE,KAAK,KAAK,MAAMpE,EAAM,IAAI,CAAC,CAAC,CAAC;AAAA,MAAA,CAChC,GACDgE,EAAS,KAAK;AAAA,QACZ,MAAM7D,EAAM;AAAA,QACZ,KAAK,GAAGA,EAAM,IAAI;AAAA,EAA0B+D,EACzC,IAAI,CAACG,GAAM/B,MAAU,GAAG+B,CAAI,IAAIF,EAAE7B,CAAK,CAAC,IAAIC,EAAED,CAAK,CAAC,IAAI8B,EAAE9B,CAAK,CAAC,EAAE,EAClE,KAAK;AAAA,CAAI,CAAC;AAAA,MAAA,CACd,GACS4B,EAAA,OAAO,GAAGA,EAAU,MAAM,GAClCC,EAAA,OAAO,GAAGA,EAAE,MAAM,GAClB5B,EAAA,OAAO,GAAGA,EAAE,MAAM,GAClB6B,EAAA,OAAO,GAAGA,EAAE,MAAM;AAAA,IAAA,CACrB,GACDH,EAAQ,KAAK;AAAA,MACX,MAAMpE,EAAM;AAAA,MACZ,QAAQmE,EAAS,IAAI,CAACzB,MACbA,CACR;AAAA,MACD,MAAM1C,EAAM;AAAA,IAAA,CACb,GACQmE,EAAA,OAAO,GAAGA,EAAS,MAAM;AAAA,EAAA,CACnC,GAEMC;AACT,GCnDMK,IAAqB,CACzB3E,GACAkC,MACG;AACH,QAAMjC,IACFD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,GACxE0E,IAAqB,CAAC,GAElBvC,IAAgC,CAAChC,MAAgC;;AACjE,IAAA,MAAMA,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,MAAM,CAAC,CAAC,MAAGA,EAAM,MAAM,CAAC,IAAI;AAE5C,UAAMiC,IAA4C;AAAA,MAChD,KAAK,MACH,OAAO,KAAK,MAAMjC,EAAM,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;AAAA,QACvCA,EAAM,IAAI,CAAC;AAAA,MAAA,CACZ,KAAK,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC,CAAC;AAAA,MAChC,KAAK,MAAMA,EAAM;AAAA,MACjB,KAAK,MACH,OAAO,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK;AAAA,QACtCA,EAAM,IAAI,CAAC,IAAI;AAAA,MAAA,CAChB,KAAK,KAAK,MAAMA,EAAM,IAAI,CAAC,IAAI,GAAG,CAAC;AAAA,MACtC,KAAK,MACH,OAAO,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;AAAA,QACvCA,EAAM,IAAI,CAAC;AAAA,MAAA,CACZ,IAAI,KAAK,MAAMA,EAAM,IAAI,CAAC,CAAC,CAAC;AAAA,MAC/B,OAAO,MACL,SAAS,KAAK,MAAMA,EAAM,MAAM,CAAC,IAAI,GAAG,CAAC,KAAKA,EAAM,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,KAAK,MAAMA,EAAM,MAAM,CAAC,CAAC,CAAC;AAAA,MACvG,IAAI,MACF,oBAAoBA,EAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAIA,EAAM,GAAG,CAAC,EAAE;AAAA,QACxD;AAAA,MAAA,CACD,IAAIA,EAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,IAC/B;AAEO,YAAAkC,IAAAD,EAAQJ,KAAc,WAAtB,gBAAAK,EAAA,KAAAD;AAAA,EACT,GAEME,IAA2B,CAC/BnC,GACAE,MACG;;AACC,IAAA,MAAMF,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,IAAI,CAAC,CAAC,MAAGA,EAAM,IAAI,CAAC,IAAI,IACpC,MAAMA,EAAM,MAAM,CAAC,CAAC,MAAGA,EAAM,MAAM,CAAC,IAAI;AAE5C,UAAMiC,IAA4C;AAAA,MAChD,KAAK,MACH;;AAAA,sBAAO,KAAK,MAAM/B,EAAO,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;AAAA,UACxCA,EAAO,IAAI,CAAC;AAAA,QAAA,CACb,KAAK,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC,CAAC,QAAMgC,IAAAlC,EAAM,UAAN,gBAAAkC,EAAa,QAAQ,OAAM,CAAC;AAAA;AAAA,MACnE,KAAK,MACHf,EAAOjB,EAAO,GAAG,EACd,MAAMF,EAAM,SAAS,CAAC,EACtB,IAAI;AAAA,MACT,KAAK,MACH;;AAAA,sBAAO,KAAK,MAAME,EAAO,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK;AAAA,UACvCA,EAAO,IAAI,CAAC,IAAI;AAAA,QAAA,CACjB,KAAK,KAAK,MAAMA,EAAO,IAAI,CAAC,IAAI,GAAG,CAAC,SAAOgC,IAAAlC,EAAM,UAAN,gBAAAkC,EAAa,QAAQ,OAAM,CAAC;AAAA;AAAA,MAC1E,KAAK,MACH;;AAAA,sBAAO,KAAK,MAAMhC,EAAO,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;AAAA,UACxCA,EAAO,IAAI,CAAC;AAAA,QAAA,CACb,IAAI,KAAK,MAAMA,EAAO,IAAI,CAAC,CAAC,CAAC,QAAMgC,IAAAlC,EAAM,UAAN,gBAAAkC,EAAa,QAAQ,OAAM,CAAC;AAAA;AAAA,MAClE,OAAO,MACL;;AAAA,wBAAS,KAAK,MAAMhC,EAAO,MAAM,IAAI,GAAG,CAAC,CAAC,KAAKA,EAAO,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,KAAK,MAAMA,EAAO,MAAM,CAAC,CAAC,CAAC,QAAMgC,IAAAlC,EAAM,UAAN,gBAAAkC,EAAa,QAAQ,OAAM,CAAC;AAAA;AAAA,MAC5I,IAAI,MAAA;;AACF,mCAAoBhC,EAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAIA,EAAO,GAAG,CAAC,EAAE;AAAA,UAC1D;AAAA,QAAA,CACD,IAAIA,EAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAMgC,IAAAlC,EAAM,UAAN,gBAAAkC,EAAa,QAAQ,OAAM,CAAC;AAAA;AAAA,IAClE;AAEO,YAAAA,IAAAD,EAAQJ,KAAc,WAAtB,gBAAAK,EAAA,KAAAD;AAAA,EACT;AAEc,SAAArC,EAAA,QAAQ,CAACC,MAAU;AAC/B,UAAM2E,IAAwB,CAAC;AACzB,IAAA3E,EAAA,OAAO,QAAQ,CAACM,MAAU;AAC9B,MAAAqE,EAAO,KAAK,MAAMrE,EAAM,IAAI,KAAK,GACjCA,EAAM,OAAO,QAAU,EAAA,QAAQ,CAACH,MAAU;AAClC,cAAAE,IAASC,EAAM,OAAO,KAAK,CAACoC,MAAMA,EAAE,SAAS,cAAc;AAE7D,QAAArC,KACKsE,EAAA;AAAA,UACL,KAAK,IAAI1D,EAAKX,EAAM,IAAI,EAAE,YAAA,CAAa,IAAIH,EAAM,IAAI,KAAKA,EAAM,gBAAgBmC,EAAyBnC,GAAOE,CAAM,IAAI8B,EAA8BhC,CAAK,CAAC;AAAA,QAChK;AAAA,MAAA,CACH,GAEDwE,EAAO,KAAK,EAAE;AAAA,IAAA,CACf,GACDA,EAAO,IAAI,GACPD,EAAA;AAAA,MACF,GAAG1E,EAAM,SAAS,iBAAiB,MAAMA,EAAM,IAAI;AAAA,IAAU,EAAE,QAC7DA,EAAM,SAAS,iBACX,gBAAgB,IAAIiB,EAAKjB,EAAM,IAAI,EAAE,YAAY,CAAC,OAClD,EACN;AAAA,IAAS2E,EAAO,KAAK;AAAA,GAAM,CAAC;AAAA;AAAA,IAC9B;AAAA,EAAA,CACD,GAEMD,EAAI,KAAK;AAAA;AAAA,CAAM;AACxB,GCxGME,IAAc,CAAC9E,MAA6B;AAChD,QAAMC,IACFD,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,EAC/D,WAAW,IACVF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,eAAe,IACnEF,EAAY,OAAO,OAAO,CAACE,MAAUA,EAAM,SAAS,cAAc,GACxE6E,IAAwB,CAAC;AAEb,SAAA9E,EAAA,QAAQ,CAACC,MAAU;AACzB,IAAAA,EAAA,OAAO,QAAQ,CAACM,MAAU;AACxB,YAAAD,IAASC,EAAM,OAAO,KAAK,CAACH,MAAUA,EAAM,SAAS,cAAc,GACnEoD,IAAwB,CAAC;AAExB,MAAAA,EAAA;AAAA,QACL,MACExD,EAAc,CAAC,EAAE,SAAS,iBAAiBC,EAAM,OAAO,QAAQ,EAClE,GAAGM,EAAM,IAAI;AAAA,MACf,GACAA,EAAM,OAAO,QAAU,EAAA,QAAQ,CAACH,MAAU;AACjC,QAAAoD,EAAA;AAAA,UACL,OACExD,EAAc,CAAC,EAAE,SAAS,iBACtB,IAAIkB,EAAKjB,EAAM,OAAO,MAAMM,EAAM,IAAI,EAAE,YACxC,IAAA,IAAIW,EAAKX,EAAM,IAAI,EAAE,aAC3B,IAAIH,EAAM,IAAI,YACZA,EAAM,gBACFmB,GAAOjB,KAAA,gBAAAA,EAAQ,QAAO,SAAS,EAC5B,MAAMF,EAAM,SAAS,CAAC,EACtB,IAAI,EACJ,QAAQ,KAAK,MAAM,EACnB,YAAA,IACHA,EAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,YACrC,CAAA;AAAA,QACF;AAAA,MAAA,CACD,GACDoD,EAAO,KAAK,EAAE,GACdA,EAAO,QAAQ,CAACjD,MAAUuE,EAAO,KAAKvE,CAAK,CAAC;AAAA,IAAA,CAC7C;AAAA,EAAA,CACF,GAEDuE,EAAO,IAAI,GAEJ;AAAA;AAAA,EAAgDA,EAAO,KAAK;AAAA,CAAI,CAAC;AAC1E;AC9BA,MAAqBC,EAAK;AAAA,EAGxB,YAAYhF,GAA0B;AAF9B,IAAAiF,EAAA;AAMR,IAAAA,EAAA,0BAAmB,MACVvB,EAAiB,KAAK,WAAW;AAG1C,IAAAuB,EAAA,wBAAiB,CAAC/C,IAAsC,UAC/CgC,EAAe,KAAK,aAAahC,CAAU;AAGpD,IAAA+C,EAAA,qCAA8B,MACrBjD,EAA4B,KAAK,WAAW;AAGrD,IAAAiD,EAAA,2BAAoB,MACXlF,EAAoB,KAAK,WAAW;AAG7C,IAAAkF,EAAA,4BAAqB,CAAC/C,IAAsC,UACnDyC,EAAmB,KAAK,aAAazC,CAAU;AAGxD,IAAA+C,EAAA,2BAAoB,CAAC/C,IAAsC,UAClDD,EAAkB,KAAK,aAAaC,CAAU;AAGvD,IAAA+C,EAAA,2BAAoB,CAAC/C,IAAsC,UAClD8B,EAAkB,KAAK,aAAa9B,CAAU;AAGvD,IAAA+C,EAAA,8BAAuB,MACdpD,EAAqB,KAAK,WAAW;AAG9C,IAAAoD,EAAA,8BAAuB,MACd7D,EAAqB,KAAK,WAAW;AAG9C,IAAA6D,EAAA,qBAAc,MACLnD,EAAY,KAAK,WAAW;AAGrC,IAAAmD,EAAA,mBAAY,MACHjE,EAAU,KAAK,WAAW;AAGnC,IAAAiE,EAAA,qBAAc,MACLH,EAAY,KAAK,WAAW;AAGrC,IAAAG,EAAA,uBAAgB,MACP1B,EAAc,KAAK,WAAW;AAGvC,IAAA0B,EAAA,iBAAU,MACDb,EAAQ,KAAK,WAAW;AAxD/B,SAAK,cAAcpE;AAAA,EAAA;AA0DvB;","x_google_ignoreList":[1]}
|
|
1
|
+
{"version":3,"file":"code.js","sources":["../../../src/formats/makeUniversalTokens.ts","../../../node_modules/@a_ng_d/figmug-utils/dist/modules/case/case.js","../../../src/formats/makeUIKit.ts","../../../src/formats/makeTailwindV4Config.ts","../../../src/formats/makeTailwindV3Config.ts","../../../src/formats/makeSwiftUI.ts","../../../src/formats/makeStyleDictionaryV3Tokens.ts","../../../src/formats/makeScssVariables.ts","../../../src/formats/makeResources.ts","../../../src/formats/makeNativeTokens.ts","../../../src/formats/makeLessVariables.ts","../../../src/formats/makeDtcgTokens.ts","../../../src/formats/makeCsv.ts","../../../src/formats/makeCssCustomProps.ts","../../../src/formats/makeCompose.ts","../../../src/modules/code/code.ts"],"sourcesContent":["import { PaletteData, PaletteDataShadeItem } from '@tps/data.types'\n\nconst makeUniversalTokens = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n json: { [key: string]: any } = {}\n\n const model = (shade: PaletteDataShadeItem) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n return {\n rgb: {\n r: Math.floor(shade.rgb[0]),\n g: Math.floor(shade.rgb[1]),\n b: Math.floor(shade.rgb[2]),\n },\n gl: {\n r: parseFloat(shade.gl[0].toFixed(3)),\n g: parseFloat(shade.gl[1].toFixed(3)),\n b: parseFloat(shade.gl[2].toFixed(3)),\n },\n lch: {\n l: Math.floor(shade.lch[0]),\n c: Math.floor(shade.lch[1]),\n h: Math.floor(shade.lch[2]),\n },\n oklch: {\n l: parseFloat(shade.oklch[0].toFixed(3)),\n c: parseFloat(shade.oklch[1].toFixed(3)),\n h: Math.floor(shade.oklch[2]),\n },\n lab: {\n l: Math.floor(shade.lab[0]),\n a: Math.floor(shade.lab[1]),\n b: Math.floor(shade.lab[2]),\n },\n oklab: {\n l: parseFloat(shade.oklab[0].toFixed(3)),\n a: parseFloat(shade.oklab[1].toFixed(3)),\n b: parseFloat(shade.oklab[2].toFixed(3)),\n },\n hsl: {\n h: Math.floor(shade.hsl[0]),\n s: Math.floor(shade.hsl[1] * 100),\n l: Math.floor(shade.hsl[2] * 100),\n },\n hsluv: {\n h: Math.floor(shade.hsluv[0]),\n s: Math.floor(shade.hsluv[1]),\n l: Math.floor(shade.hsluv[2]),\n },\n hex: shade.hex,\n description: shade.description,\n type: 'color shade/tint',\n }\n }\n\n const modelWithAlpha = (\n shade: PaletteDataShadeItem,\n source: PaletteDataShadeItem\n ) => {\n return {\n rgb: {\n r: Math.floor(source.rgb[0]),\n g: Math.floor(source.rgb[1]),\n b: Math.floor(source.rgb[2]),\n },\n gl: {\n r: parseFloat(source.gl[0].toFixed(3)),\n g: parseFloat(source.gl[1].toFixed(3)),\n b: parseFloat(source.gl[2].toFixed(3)),\n },\n lch: {\n l: Math.floor(source.lch[0]),\n c: Math.floor(source.lch[1]),\n h: Math.floor(source.lch[2]),\n },\n oklch: {\n l: parseFloat(source.oklch[0].toFixed(3)),\n c: parseFloat(source.oklch[1].toFixed(3)),\n h: Math.floor(source.oklch[2]),\n },\n lab: {\n l: Math.floor(source.lab[0]),\n a: Math.floor(source.lab[1]),\n b: Math.floor(source.lab[2]),\n },\n oklab: {\n l: parseFloat(source.oklab[0].toFixed(3)),\n a: parseFloat(source.oklab[1].toFixed(3)),\n b: parseFloat(source.oklab[2].toFixed(3)),\n },\n hsl: {\n h: Math.floor(source.hsl[0]),\n s: Math.floor(source.hsl[1] * 100),\n l: Math.floor(source.hsl[2] * 100),\n },\n hsluv: {\n h: Math.floor(source.hsluv[0]),\n s: Math.floor(source.hsluv[1]),\n l: Math.floor(source.hsluv[2]),\n },\n hex: source.hex,\n alpha: shade.alpha,\n description: shade.description,\n type: 'color shade/tint',\n }\n }\n\n if (workingThemes[0].type === 'custom theme')\n workingThemes.forEach((theme) => {\n json[theme.name] = {}\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json[theme.name][color.name] = {}\n color.shades.forEach((shade) => {\n if (shade && source)\n json[theme.name][color.name][shade.name] = shade.isTransparent\n ? modelWithAlpha(shade, source)\n : model(shade)\n })\n json[theme.name][color.name]['description'] = color.description\n json[theme.name][color.name]['type'] = 'color'\n })\n json[theme.name]['description'] = theme.description\n json[theme.name]['type'] = 'color mode'\n })\n else\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json[color.name] = {}\n color.shades.forEach((shade) => {\n if (shade && source)\n json[color.name][shade.name] = shade.isTransparent\n ? modelWithAlpha(shade, source)\n : model(shade)\n })\n json[color.name]['description'] = color.description\n json[color.name]['type'] = 'color'\n })\n })\n\n json['description'] = paletteData.description\n json['type'] = 'color palette'\n\n return JSON.stringify(json, null, ' ')\n}\n\nexport default makeUniversalTokens\n","var r = Object.defineProperty;\nvar o = (s, e, t) => e in s ? r(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;\nvar a = (s, e, t) => o(s, typeof e != \"symbol\" ? e + \"\" : e, t);\nclass p {\n constructor(e) {\n a(this, \"string\");\n a(this, \"doSnakeCase\", () => this.string.toLowerCase().split(\" \").join(\"_\").replace(/[@/$^%#&!?.,;:+=<>(){}\"«»]/g, \"\"));\n a(this, \"doPascalCase\", () => this.string.charAt(0).toUpperCase() + this.string.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g, (e) => e.toUpperCase()).replace(/[@/$^%#&!?.,;:+=<>(){}\"«» ]/g, \"\").slice(1));\n a(this, \"doKebabCase\", () => this.string.toLowerCase().split(\" \").join(\"-\").replace(/[@/$^%#&!?.,;:+=<>(){}\"«»]/g, \"\"));\n a(this, \"doCamelCase\", () => this.string.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g, (e) => e.toUpperCase()).replace(/[@/$^%#&!?.,;:+=<>(){}\"«» ]/g, \"\"));\n this.string = e;\n }\n}\nexport {\n p as default\n};\n//# sourceMappingURL=case.js.map\n","import { PaletteData } from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeUIKit = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n swift: Array<string> = []\n\n workingThemes.forEach((theme) => {\n const UIColors: Array<string> = []\n theme.colors.forEach((color) => {\n const source = color.shades.find((shade) => shade.type === 'source color')\n\n UIColors.push(`// ${color.name}`)\n color.shades.reverse().forEach((shade) => {\n UIColors.push(\n shade.isTransparent\n ? `static let ${new Case(color.name).doPascalCase()}${\n shade.name === 'source' ? 'Source' : shade.name\n } = UIColor(red: ${source?.gl[0].toFixed(\n 3\n )}, green: ${source?.gl[1].toFixed(3)}, blue: ${source?.gl[2].toFixed(\n 3\n )}, alpha: ${shade.alpha ?? 1})`\n : `static let ${new Case(color.name).doPascalCase()}${\n shade.name === 'source' ? 'Source' : shade.name\n } = UIColor(red: ${shade.gl[0].toFixed(\n 3\n )}, green: ${shade.gl[1].toFixed(3)}, blue: ${shade.gl[2].toFixed(\n 3\n )})`\n )\n })\n UIColors.push('')\n })\n UIColors.pop()\n if (workingThemes[0].type === 'custom theme')\n swift.push(\n `// ${theme.name}\\n struct ${new Case(theme.name).doPascalCase()} {\\n ${UIColors.join(\n '\\n '\n )}\\n }`\n )\n else swift.push(`${UIColors.join('\\n ')}`)\n })\n\n return `import UIKit\\n\\nstruct Color {\\n ${swift.join('\\n\\n ')}\\n}`\n}\n\nexport default makeUIKit\n","import chroma from 'chroma-js'\nimport { PaletteData } from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeTailwindV4Config = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme')\n\n let cssOutput =\n '@import \"tailwindcss\";\\n\\n@theme {\\n --color-*: initial;\\n\\n'\n\n if (workingThemes[0].type !== 'custom theme') {\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n const colorName = new Case(color.name).doKebabCase()\n cssOutput += ` /* ${color.name} */\\n`\n\n color.shades.sort().forEach((shade) => {\n const colorValue = shade.isTransparent\n ? chroma(source?.hex ?? '#000000')\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex\n\n const shadeName = new Case(shade.name).doKebabCase()\n cssOutput += ` --color-${colorName}-${shadeName}: ${colorValue};\\n`\n })\n\n const isLastColor = color === theme.colors[theme.colors.length - 1]\n const isLastTheme = theme === workingThemes[workingThemes.length - 1]\n if (!(isLastColor && isLastTheme)) {\n cssOutput += '\\n'\n }\n })\n })\n } else {\n workingThemes.forEach((theme) => {\n const themeName = new Case(theme.name).doKebabCase()\n\n //cssOutput += ` /* ${theme.name} */\\n`\n\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n const colorName = new Case(color.name).doKebabCase()\n cssOutput += ` /* ${theme.name} - ${color.name} */\\n`\n\n color.shades.forEach((shade) => {\n const colorValue = shade.isTransparent\n ? chroma(source?.hex ?? '#000000')\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex\n\n const shadeName = new Case(shade.name).doKebabCase()\n cssOutput += ` --color-${themeName}-${colorName}-${shadeName}: ${colorValue};\\n`\n })\n\n const isLastColor = color === theme.colors[theme.colors.length - 1]\n const isLastTheme = theme === workingThemes[workingThemes.length - 1]\n if (!(isLastColor && isLastTheme)) {\n cssOutput += '\\n'\n }\n })\n })\n }\n\n cssOutput += '}\\n'\n\n return cssOutput\n}\n\nexport default makeTailwindV4Config\n","import chroma from 'chroma-js'\nimport { PaletteData } from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeTailwindV3Config = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n json: { [key: string]: any } = {\n theme: {\n colors: {},\n },\n }\n\n paletteData.themes[0].colors.forEach((color) => {\n json['theme']['colors'][new Case(color.name).doKebabCase()] = {}\n })\n\n if (workingThemes[0].type === 'custom theme')\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json['theme']['colors'][new Case(color.name).doKebabCase()][\n new Case(theme.name).doKebabCase()\n ] = {}\n color.shades.forEach((shade) => {\n json['theme']['colors'][new Case(color.name).doKebabCase()][\n new Case(theme.name).doKebabCase()\n ][new Case(shade.name).doKebabCase()] = shade.isTransparent\n ? chroma(source?.hex ?? '#000000')\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex\n })\n })\n })\n else\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json['theme']['colors'][new Case(color.name).doKebabCase()] = {}\n color.shades.sort().forEach((shade) => {\n json['theme']['colors'][new Case(color.name).doKebabCase()][\n new Case(shade.name).doKebabCase()\n ] = shade.isTransparent\n ? chroma(source?.hex ?? '#000000')\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex\n })\n })\n })\n\n return `/** @type {import('tailwindcss').Config} */\\nmodule.exports = ${JSON.stringify(json, null, ' ')}`\n}\n\nexport default makeTailwindV3Config\n","import { PaletteData } from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeSwiftUI = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n swift: Array<string> = []\n\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find((shade) => shade.type === 'source color')\n const Colors: Array<string> = []\n\n Colors.push(\n `// ${\n workingThemes[0].type === 'custom theme' ? theme.name + ' - ' : ''\n }${color.name}`\n )\n color.shades.reverse().forEach((shade) => {\n Colors.push(\n shade.isTransparent\n ? `public let ${\n workingThemes[0].type === 'custom theme'\n ? new Case(theme.name + ' ' + color.name).doPascalCase()\n : new Case(color.name).doPascalCase()\n }${\n shade.name === 'source' ? 'Source' : shade.name\n } = Color(red: ${source?.gl[0].toFixed(\n 3\n )}, green: ${source?.gl[1].toFixed(3)}, blue: ${shade.gl[2].toFixed(\n 3\n )}).opacity(${shade.alpha ?? 1})`\n : `public let ${\n workingThemes[0].type === 'custom theme'\n ? new Case(theme.name + ' ' + color.name).doPascalCase()\n : new Case(color.name).doPascalCase()\n }${\n shade.name === 'source' ? 'Source' : shade.name\n } = Color(red: ${shade.gl[0].toFixed(\n 3\n )}, green: ${shade.gl[1].toFixed(3)}, blue: ${shade.gl[2].toFixed(\n 3\n )})`\n )\n })\n Colors.push('')\n Colors.forEach((color) => swift.push(color))\n })\n })\n\n swift.pop()\n\n return `import SwiftUI\\n\\npublic extension Color {\\n static let Token = Color.TokenColor()\\n struct TokenColor {\\n ${swift.join(\n '\\n '\n )}\\n }\\n}`\n}\n\nexport default makeSwiftUI\n","import chroma from 'chroma-js'\nimport {\n PaletteData,\n PaletteDataColorItem,\n PaletteDataShadeItem,\n} from '@tps/data.types'\n\nconst makeStyleDictionaryV3Tokens = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n json: { [key: string]: any } = {\n color: {},\n }\n\n const model = (\n color: PaletteDataColorItem,\n shade: PaletteDataShadeItem,\n source: PaletteDataShadeItem\n ) => {\n return {\n type: 'color',\n value: shade.isTransparent\n ? chroma(source.hex)\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex,\n comment:\n color.description !== ''\n ? color.description + ' - ' + shade.description\n : shade.description,\n }\n }\n\n paletteData.themes[0].colors.forEach((color) => {\n json['color'][color.name] = {}\n })\n\n if (workingThemes[0].type === 'custom theme')\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json['color'][color.name][theme.name] = {}\n color.shades.forEach((shade) => {\n if (shade && source)\n json['color'][color.name][theme.name][shade.name] = model(\n color,\n shade,\n source\n )\n })\n })\n })\n else\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json['color'][color.name] = {}\n color.shades.forEach((shade) => {\n if (shade && source)\n json['color'][color.name][shade.name] = model(color, shade, source)\n })\n })\n })\n\n return JSON.stringify(json, null, ' ')\n}\n\nexport default makeStyleDictionaryV3Tokens\n","import chroma from 'chroma-js'\nimport { PaletteData, PaletteDataShadeItem } from '@tps/data.types'\nimport { ColorSpaceConfiguration } from '@tps/configuration.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeScssVariables = (\n paletteData: PaletteData,\n colorSpace: ColorSpaceConfiguration\n) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n scss: Array<string> = [],\n globalVars: Array<string> = []\n\n const setValueAccordingToColorSpace = (shade: PaletteDataShadeItem) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () =>\n `rgb(${Math.floor(shade.rgb[0])} ${Math.floor(\n shade.rgb[1]\n )} ${Math.floor(shade.rgb[2])})`,\n HEX: () => shade.hex,\n HSL: () =>\n `hsl(${Math.floor(shade.hsl[0])} ${Math.floor(\n shade.hsl[1] * 100\n )}% ${Math.floor(shade.hsl[2] * 100)}%)`,\n LCH: () =>\n `lch(${Math.floor(shade.lch[0])}% ${Math.floor(\n shade.lch[1]\n )} ${Math.floor(shade.lch[2])})`,\n OKLCH: () =>\n `oklch(${Math.floor(shade.oklch[0] * 100)}% ${shade.oklch[1].toFixed(3)} ${Math.floor(shade.oklch[2])})`,\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n const setValueAccordingToAlpha = (\n shade: PaletteDataShadeItem,\n source: PaletteDataShadeItem\n ) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () =>\n `rgb(${Math.floor(source.rgb[0])} ${Math.floor(\n source.rgb[1]\n )} ${Math.floor(source.rgb[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n HEX: () =>\n chroma(source.hex)\n .alpha(shade.alpha ?? 1)\n .hex(),\n HSL: () =>\n `hsl(${Math.floor(source.hsl[0])} ${Math.floor(\n source.hsl[1] * 100\n )}%, ${Math.floor(source.hsl[2] * 100)}% / ${shade.alpha?.toFixed(2) ?? 1})`,\n LCH: () =>\n `lch(${Math.floor(source.lch[0])}% ${Math.floor(\n source.lch[1]\n )} ${Math.floor(source.lch[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n OKLCH: () =>\n `oklch(${Math.floor(source.oklch[0 * 100])}% ${source.oklch[1].toFixed(3)} ${Math.floor(source.oklch[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n const defaultTheme = workingThemes.find(\n (theme) => theme.type === 'default theme'\n )\n\n if (defaultTheme) {\n const defaultVars: Array<string> = []\n\n defaultTheme.colors.forEach((color, index) => {\n if (index > 0) {\n defaultVars.push('')\n }\n\n defaultVars.push(`// ${color.name}`)\n color.shades.reverse().forEach((shade) => {\n const source = color.shades.find((c) => c.type === 'source color')\n const variableName = `$${new Case(color.name).doKebabCase()}-${shade.name}`\n\n if (source) {\n defaultVars.push(\n `${variableName}: ${shade.isTransparent ? setValueAccordingToAlpha(shade, source) : setValueAccordingToColorSpace(shade)};`\n )\n }\n })\n })\n\n scss.push(defaultVars.join('\\n'))\n\n return scss.join('\\n')\n }\n\n workingThemes.forEach((theme) => {\n const themeName = new Case(theme.name).doKebabCase()\n const themeVars: Array<string> = []\n\n themeVars.push(`// ${theme.name}`)\n themeVars.push(`@mixin ${themeName} {`)\n\n theme.colors.forEach((color, index) => {\n if (index > 0) {\n themeVars.push('')\n }\n\n themeVars.push(` // ${color.name}`)\n color.shades.reverse().forEach((shade) => {\n const source = color.shades.find((c) => c.type === 'source color')\n const colorName = new Case(color.name).doKebabCase()\n const cssVarName = `--${colorName}-${shade.name}`\n\n if (source) {\n themeVars.push(\n ` ${cssVarName}: ${shade.isTransparent ? setValueAccordingToAlpha(shade, source) : setValueAccordingToColorSpace(shade)};`\n )\n }\n })\n })\n\n themeVars.push('}')\n scss.push(themeVars.join('\\n'))\n })\n\n const colorVariables = new Set<string>()\n\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n color.shades.forEach((shade) => {\n const source = color.shades.find((c) => c.type === 'source color')\n if (source) {\n const colorName = new Case(color.name).doKebabCase()\n const cssVarName = `--${colorName}-${shade.name}`\n colorVariables.add(cssVarName)\n }\n })\n })\n })\n\n if (colorVariables.size > 0) {\n const colorGroups = new Map<string, Array<string>>()\n\n colorVariables.forEach((cssVarName) => {\n const match = cssVarName.match(/--([a-zA-Z0-9-]+)-([a-zA-Z0-9-]+)/)\n if (match) {\n const colorName = match[1]\n if (!colorGroups.has(colorName)) {\n colorGroups.set(colorName, [])\n }\n const scssVarName = `$${cssVarName.substring(2)}`\n colorGroups.get(colorName)!.push(`${scssVarName}: var(${cssVarName});`)\n }\n })\n\n colorGroups.forEach((vars, colorName) => {\n globalVars.push(\n `// ${colorName.charAt(0).toUpperCase() + colorName.slice(1)}`\n )\n globalVars.push(...vars)\n globalVars.push('')\n })\n\n if (globalVars.length > 0 && globalVars[globalVars.length - 1] === '') {\n globalVars.pop()\n }\n\n scss.push(globalVars.join('\\n'))\n }\n\n const rootBlock: string[] = [`:root {`]\n\n workingThemes.forEach((theme, index) => {\n const themeName = new Case(theme.name).doKebabCase()\n rootBlock.push(` &[data-theme=\"${themeName}\"] {\n @include ${themeName};\n }`)\n if (index !== workingThemes.length - 1) rootBlock.push('')\n })\n\n rootBlock.push(`}`)\n scss.push(rootBlock.join('\\n'))\n\n const classBlocks: string[] = []\n\n workingThemes.forEach((theme) => {\n const themeName = new Case(theme.name).doKebabCase()\n classBlocks.push(`.${themeName} {\n @include ${themeName};\n}`)\n })\n\n scss.push(classBlocks.join('\\n\\n'))\n\n return scss.join('\\n\\n')\n}\n\nexport default makeScssVariables\n","import chroma from 'chroma-js'\nimport { PaletteData } from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeResources = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n resources: Array<string> = []\n\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find((shade) => shade.type === 'source color')\n const colors: Array<string> = []\n\n colors.push(\n `${'<'}!--${\n workingThemes[0].type === 'custom theme'\n ? `${theme.name} - ${color.name}--${'>'}`\n : `${color.name}--${'>'}`\n }`\n )\n color.shades.reverse().forEach((shade) => {\n colors.push(\n `<color name=\"${\n workingThemes[0].type === 'custom theme'\n ? new Case(theme.name + ' ' + color.name).doSnakeCase()\n : new Case(color.name).doSnakeCase()\n }_${shade.name}\">${\n shade.isTransparent\n ? chroma(source?.hex ?? '#000000')\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex\n }</color>`\n )\n })\n colors.push('')\n colors.forEach((color) => resources.push(color))\n })\n })\n\n resources.pop()\n\n return `<?xml version=\"1.0\" encoding=\"utf-8\"?>\\n<resources>\\n ${resources.join(\n '\\n '\n )}\\n</resources>`\n}\n\nexport default makeResources\n","import chroma from 'chroma-js'\nimport {\n PaletteData,\n PaletteDataColorItem,\n PaletteDataShadeItem,\n} from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeNativeTokens = (paletteData: PaletteData) => {\n const paletteName = paletteData.name\n\n const colorModel = (\n color: PaletteDataColorItem,\n shade: PaletteDataShadeItem,\n source: PaletteDataShadeItem\n ) => {\n return {\n $type: 'color',\n $value: shade.isTransparent\n ? chroma(source.hex)\n .alpha(shade.alpha ?? 1)\n .hex()\n : shade.hex,\n $description:\n color.description !== ''\n ? color.description + ' - ' + shade.description\n : shade.description,\n }\n }\n\n const themeModel = (name: string, description: string) => {\n return {\n name: name,\n group: 'Modes',\n description: description,\n selectedTokenSets: {\n [`${paletteName}/${name}`]: 'enabled',\n },\n }\n }\n\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n json: { [key: string]: any } = {\n $themes: workingThemes\n .filter((theme) => theme.type === 'custom theme')\n .map((theme) => themeModel(theme.name, theme.description)),\n $metadata: {\n activeThemes: [],\n tokenSetOrder: workingThemes\n .filter((theme) => theme.type === 'custom theme')\n .map(\n (theme) =>\n `${new Case(paletteName).doSnakeCase()}/${new Case(theme.name).doSnakeCase()}`\n ),\n activeSets: [],\n },\n }\n\n if (workingThemes[0].type === 'custom theme')\n workingThemes.forEach((theme) => {\n json[`${paletteName}/${theme.name}`] = {}\n\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n color.shades.forEach((shade) => {\n if (shade && source)\n json[`${paletteName}/${theme.name}`][\n `${new Case(color.name).doSnakeCase()}.${shade.name}`\n ] = colorModel(color, shade, source)\n })\n })\n })\n else\n workingThemes.forEach((theme) => {\n json[paletteName] = {}\n\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n color.shades.forEach((shade) => {\n if (shade && source)\n json[paletteName][\n `${new Case(color.name).doSnakeCase()}.${shade.name}`\n ] = colorModel(color, shade, source)\n })\n })\n })\n\n return JSON.stringify(json, null, ' ')\n}\n\nexport default makeNativeTokens\n","import chroma from 'chroma-js'\nimport { PaletteData, PaletteDataShadeItem } from '@tps/data.types'\nimport { ColorSpaceConfiguration } from '@tps/configuration.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeLessVariables = (\n paletteData: PaletteData,\n colorSpace: ColorSpaceConfiguration\n) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n less: Array<string> = []\n\n const setValueAccordingToColorSpace = (shade: PaletteDataShadeItem) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () =>\n `rgb(${Math.floor(shade.rgb[0])} ${Math.floor(\n shade.rgb[1]\n )} ${Math.floor(shade.rgb[2])})`,\n HEX: () => shade.hex,\n HSL: () =>\n `hsl(${Math.floor(shade.hsl[0])} ${Math.floor(\n shade.hsl[1] * 100\n )}% ${Math.floor(shade.hsl[2] * 100)}%)`,\n LCH: () =>\n `lch(${Math.floor(shade.lch[0])}% ${Math.floor(\n shade.lch[1]\n )} ${Math.floor(shade.lch[2])})`,\n OKLCH: () =>\n `oklch(${Math.floor(shade.oklch[0] * 100)}% ${shade.oklch[1].toFixed(3)} ${Math.floor(shade.oklch[2])})`,\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n const setValueAccordingToAlpha = (\n shade: PaletteDataShadeItem,\n source: PaletteDataShadeItem\n ) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () =>\n `rgb(${Math.floor(source.rgb[0])} ${Math.floor(\n source.rgb[1]\n )} ${Math.floor(source.rgb[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n HEX: () =>\n chroma(source.hex)\n .alpha(shade.alpha ?? 1)\n .hex(),\n HSL: () =>\n `hsl(${Math.floor(source.hsl[0])} ${Math.floor(\n source.hsl[1] * 100\n )}% ${Math.floor(source.hsl[2] * 100)}% / ${shade.alpha?.toFixed(2) ?? 1})`,\n LCH: () =>\n `lch(${Math.floor(source.lch[0])}% ${Math.floor(\n source.lch[1]\n )} ${Math.floor(source.lch[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n OKLCH: () =>\n `oklch(${Math.floor(source.oklch[0] * 100)}% ${source.oklch[1].toFixed(3)} ${Math.floor(source.oklch[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n const defaultTheme = workingThemes.find(\n (theme) => theme.type === 'default theme'\n )\n\n if (defaultTheme) {\n const defaultVars: Array<string> = []\n\n defaultTheme.colors.forEach((color, index) => {\n if (index > 0) {\n defaultVars.push('')\n }\n\n defaultVars.push(`// ${color.name}`)\n color.shades.reverse().forEach((shade) => {\n const source = color.shades.find((c) => c.type === 'source color')\n const variableName = `@${new Case(color.name).doKebabCase()}-${shade.name}`\n\n if (source) {\n defaultVars.push(\n `${variableName}: ${shade.isTransparent ? setValueAccordingToAlpha(shade, source) : setValueAccordingToColorSpace(shade)};`\n )\n }\n })\n })\n\n less.push(defaultVars.join('\\n'))\n\n return less.join('\\n')\n }\n\n workingThemes.forEach((theme) => {\n const themeName = new Case(theme.name).doKebabCase()\n const themeVars: Array<string> = []\n\n themeVars.push(`// ${theme.name}`)\n themeVars.push(`.${themeName}() {`)\n\n theme.colors.forEach((color, index) => {\n if (index > 0) {\n themeVars.push('')\n }\n\n themeVars.push(` // ${color.name}`)\n color.shades.reverse().forEach((shade) => {\n const source = color.shades.find((c) => c.type === 'source color')\n const variableName = `@${new Case(color.name).doKebabCase()}-${shade.name}`\n\n if (source) {\n themeVars.push(\n ` ${variableName}: ${shade.isTransparent ? setValueAccordingToAlpha(shade, source) : setValueAccordingToColorSpace(shade)};`\n )\n }\n })\n })\n\n themeVars.push('}')\n less.push(themeVars.join('\\n'))\n })\n\n const rootBlock: string[] = [`:root {`]\n\n workingThemes.forEach((theme, index) => {\n const themeName = new Case(theme.name).doKebabCase()\n rootBlock.push(` &[data-theme=\"${themeName}\"] {\n .${themeName}();\n }`)\n if (index !== workingThemes.length - 1) rootBlock.push('')\n })\n\n rootBlock.push(`}`)\n less.push(rootBlock.join('\\n'))\n\n const classBlocks: string[] = []\n\n workingThemes.forEach((theme) => {\n const themeName = new Case(theme.name).doKebabCase()\n classBlocks.push(`.${themeName} {\n .${themeName}();\n}`)\n })\n\n less.push(classBlocks.join('\\n\\n'))\n\n return less.join('\\n\\n')\n}\n\nexport default makeLessVariables\n","import { PaletteData, PaletteDataShadeItem } from '@tps/data.types'\nimport { ColorSpaceConfiguration } from '@tps/configuration.types'\n\nconst makeDtcgTokens = (\n paletteData: PaletteData,\n colorSpace: ColorSpaceConfiguration\n) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n json: { [key: string]: any } = {}\n\n const setValueAccordingToColorSpace = (shade: PaletteDataShadeItem) => {\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () => {\n return {\n colorSpace: 'srgb',\n components: [\n parseFloat(shade.gl[0].toFixed(3)),\n parseFloat(shade.gl[1].toFixed(3)),\n parseFloat(shade.gl[2].toFixed(3)),\n ],\n hex: shade.hex,\n }\n },\n OKLCH: () => {\n return {\n colorSpace: 'oklch',\n components: [\n parseFloat(shade.oklch[0].toFixed(3)),\n parseFloat(shade.oklch[1].toFixed(3)),\n parseFloat(shade.oklch[2].toFixed(0)),\n ],\n hex: shade.hex,\n }\n },\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n const setValueAccordingToColorSpaceAndAlpha = (\n source: PaletteDataShadeItem,\n shade: PaletteDataShadeItem\n ) => {\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () => {\n return {\n colorSpace: 'srgb',\n components: [\n parseFloat(source.gl[0].toFixed(3)),\n parseFloat(source.gl[1].toFixed(3)),\n parseFloat(source.gl[2].toFixed(3)),\n ],\n hex: source.hex,\n alpha: shade.alpha,\n }\n },\n OKLCH: () => {\n return {\n colorSpace: 'oklch',\n components: [\n parseFloat(source.oklch[0].toFixed(3)),\n parseFloat(source.oklch[1].toFixed(3)),\n parseFloat(source.oklch[2].toFixed(0)),\n ],\n hex: source.hex,\n alpha: shade.alpha,\n }\n },\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n if (workingThemes[0].type === 'custom theme')\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n if (!json[color.name])\n json[color.name] = {\n $type: 'color',\n }\n\n color.shades.forEach((shade) => {\n if (!json[color.name][shade.name] && source)\n json[color.name][shade.name] = {\n $type: 'color',\n $value: shade.isTransparent\n ? setValueAccordingToColorSpaceAndAlpha(source, shade)\n : setValueAccordingToColorSpace(shade),\n $description:\n color.description !== ''\n ? color.description + ' - ' + shade.description\n : shade.description,\n $extensions: {\n mode: {},\n },\n }\n if (source)\n json[color.name][shade.name].$extensions.mode[theme.name] =\n shade.isTransparent\n ? setValueAccordingToColorSpaceAndAlpha(source, shade)\n : setValueAccordingToColorSpace(shade)\n })\n })\n })\n else\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find(\n (shade) => shade.type === 'source color'\n )\n\n json[color.name] = {}\n color.shades.forEach((shade) => {\n if (shade && source)\n json[color.name][shade.name] = {\n $type: 'color',\n $value: shade.isTransparent\n ? setValueAccordingToColorSpaceAndAlpha(source, shade)\n : setValueAccordingToColorSpace(shade),\n $description:\n color.description !== ''\n ? color.description + ' - ' + shade.description\n : shade.description,\n }\n })\n })\n })\n\n return JSON.stringify(json, null, ' ')\n}\n\nexport default makeDtcgTokens\n","import { PaletteData } from '@tps/data.types'\n\ninterface colorCsv {\n name: string\n csv: string\n}\n\nexport interface modeCsv {\n name: string\n colors: Array<colorCsv>\n type: string\n}\n\nconst makeCsv = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n colorCsv: Array<colorCsv> = [],\n modeCsv: Array<modeCsv> = [],\n lightness: Array<string> = [],\n l: Array<number | string> = [],\n c: Array<number | string> = [],\n h: Array<number | string> = []\n\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n color.shades.forEach((shade) => {\n lightness.push(shade.name)\n l.push(Math.floor(shade.lch[0]))\n c.push(Math.floor(shade.lch[1]))\n h.push(Math.floor(shade.lch[2]))\n })\n colorCsv.push({\n name: color.name,\n csv: `${color.name},Lightness,Chroma,Hue\\n${lightness\n .map((stop, index) => `${stop},${l[index]},${c[index]},${h[index]}`)\n .join('\\n')}`,\n })\n lightness.splice(0, lightness.length)\n l.splice(0, l.length)\n c.splice(0, c.length)\n h.splice(0, h.length)\n })\n modeCsv.push({\n name: theme.name,\n colors: colorCsv.map((c) => {\n return c\n }),\n type: theme.type,\n })\n colorCsv.splice(0, colorCsv.length)\n })\n\n return modeCsv\n}\n\nexport default makeCsv\n","import chroma from 'chroma-js'\nimport { PaletteData, PaletteDataShadeItem } from '@tps/data.types'\nimport { ColorSpaceConfiguration } from '@tps/configuration.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeCssCustomProps = (\n paletteData: PaletteData,\n colorSpace: ColorSpaceConfiguration\n) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n css: Array<string> = []\n\n const setValueAccordingToColorSpace = (shade: PaletteDataShadeItem) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () =>\n `rgb(${Math.floor(shade.rgb[0])} ${Math.floor(\n shade.rgb[1]\n )} ${Math.floor(shade.rgb[2])})`,\n HEX: () => shade.hex,\n HSL: () =>\n `hsl(${Math.floor(shade.hsl[0])} ${Math.floor(\n shade.hsl[1] * 100\n )}% ${Math.floor(shade.hsl[2] * 100)}%)`,\n LCH: () =>\n `lch(${Math.floor(shade.lch[0])}% ${Math.floor(\n shade.lch[1]\n )} ${Math.floor(shade.lch[2])})`,\n OKLCH: () =>\n `oklch(${Math.floor(shade.oklch[0] * 100)}% ${shade.oklch[1].toFixed(3)} ${Math.floor(shade.oklch[2])})`,\n P3: () =>\n `color(display-p3 ${shade.gl[0].toFixed(3)} ${shade.gl[1].toFixed(\n 3\n )} ${shade.gl[2].toFixed(3)})`,\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n const setValueAccordingToAlpha = (\n shade: PaletteDataShadeItem,\n source: PaletteDataShadeItem\n ) => {\n if (isNaN(shade.hsl[0])) shade.hsl[0] = 0\n if (isNaN(shade.lch[2])) shade.lch[2] = 0\n if (isNaN(shade.oklch[2])) shade.oklch[2] = 0\n\n const actions: { [action: string]: () => void } = {\n RGB: () =>\n `rgb(${Math.floor(source.rgb[0])} ${Math.floor(\n source.rgb[1]\n )} ${Math.floor(source.rgb[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n HEX: () =>\n chroma(source.hex)\n .alpha(shade.alpha ?? 1)\n .hex(),\n HSL: () =>\n `hsl(${Math.floor(source.hsl[0])} ${Math.floor(\n source.hsl[1] * 100\n )}% ${Math.floor(source.hsl[2] * 100)}% / ${shade.alpha?.toFixed(2) ?? 1})`,\n LCH: () =>\n `lch(${Math.floor(source.lch[0])}% ${Math.floor(\n source.lch[1]\n )} ${Math.floor(source.lch[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n OKLCH: () =>\n `oklch(${Math.floor(source.oklch[0 * 100])}% ${source.oklch[1].toFixed(3)} ${Math.floor(source.oklch[2])} / ${shade.alpha?.toFixed(2) ?? 1})`,\n P3: () =>\n `color(display-p3 ${source.gl[0].toFixed(3)} ${source.gl[1].toFixed(\n 3\n )} ${source.gl[2].toFixed(3)} / ${shade.alpha?.toFixed(2) ?? 1})`,\n }\n\n return actions[colorSpace ?? 'RGB']?.()\n }\n\n workingThemes.forEach((theme) => {\n const rowCss: Array<string> = []\n theme.colors.forEach((color) => {\n rowCss.push(`/* ${color.name} */`)\n color.shades.reverse().forEach((shade) => {\n const source = color.shades.find((c) => c.type === 'source color')\n\n if (source)\n rowCss.push(\n `--${new Case(color.name).doKebabCase()}-${shade.name}: ${shade.isTransparent ? setValueAccordingToAlpha(shade, source) : setValueAccordingToColorSpace(shade)};`\n )\n })\n\n rowCss.push('')\n })\n rowCss.pop()\n css.push(\n `${theme.type === 'custom theme' ? `/* ${theme.name} */\\n` : ''}:root${\n theme.type === 'custom theme'\n ? `[data-theme='${new Case(theme.name).doKebabCase()}']`\n : ''\n } {\\n ${rowCss.join('\\n ')}\\n}`\n )\n })\n\n return css.join('\\n\\n')\n}\n\nexport default makeCssCustomProps\n","import chroma from 'chroma-js'\nimport { PaletteData } from '@tps/data.types'\nimport { Case } from '@a_ng_d/figmug-utils'\n\nconst makeCompose = (paletteData: PaletteData) => {\n const workingThemes =\n paletteData.themes.filter((theme) => theme.type === 'custom theme')\n .length === 0\n ? paletteData.themes.filter((theme) => theme.type === 'default theme')\n : paletteData.themes.filter((theme) => theme.type === 'custom theme'),\n kotlin: Array<string> = []\n\n workingThemes.forEach((theme) => {\n theme.colors.forEach((color) => {\n const source = color.shades.find((shade) => shade.type === 'source color')\n const colors: Array<string> = []\n\n colors.push(\n `// ${\n workingThemes[0].type === 'custom theme' ? theme.name + ' - ' : ''\n }${color.name}`\n )\n color.shades.reverse().forEach((shade) => {\n colors.push(\n `val ${\n workingThemes[0].type === 'custom theme'\n ? new Case(theme.name + ' ' + color.name).doSnakeCase()\n : new Case(color.name).doSnakeCase()\n }_${shade.name} = Color(${\n shade.isTransparent\n ? chroma(source?.hex ?? '#000000')\n .alpha(shade.alpha ?? 1)\n .hex()\n .replace('#', '0xFF')\n .toUpperCase()\n : shade.hex.replace('#', '0xFF').toUpperCase()\n })`\n )\n })\n colors.push('')\n colors.forEach((color) => kotlin.push(color))\n })\n })\n\n kotlin.pop()\n\n return `import androidx.compose.ui.graphics.Color\\n\\n${kotlin.join('\\n')}`\n}\n\nexport default makeCompose\n","import { PaletteData } from '@tps/data.types'\nimport { ColorSpaceConfiguration } from '@tps/configuration.types'\nimport makeUniversalTokens from '../../formats/makeUniversalTokens'\nimport makeUIKit from '../../formats/makeUIKit'\nimport makeTailwindV4Config from '../../formats/makeTailwindV4Config'\nimport makeTailwindV3Config from '../../formats/makeTailwindV3Config'\nimport makeSwiftUI from '../../formats/makeSwiftUI'\nimport makeStyleDictionaryV3Tokens from '../../formats/makeStyleDictionaryV3Tokens'\nimport makeScssVariables from '../../formats/makeScssVariables'\nimport makeResources from '../../formats/makeResources'\nimport makeNativeTokens from '../../formats/makeNativeTokens'\nimport makeLessVariables from '../../formats/makeLessVariables'\nimport makeDtcgTokens from '../../formats/makeDtcgTokens'\nimport makeCsv from '../../formats/makeCsv'\nimport makeCssCustomProps from '../../formats/makeCssCustomProps'\nimport makeCompose from '../../formats/makeCompose'\n\nexport default class Code {\n private paletteData: PaletteData\n\n constructor(paletteData: PaletteData) {\n this.paletteData = paletteData\n }\n\n makeNativeTokens = () => {\n return makeNativeTokens(this.paletteData)\n }\n\n makeDtcgTokens = (colorSpace: ColorSpaceConfiguration = 'RGB') => {\n return makeDtcgTokens(this.paletteData, colorSpace)\n }\n\n makeStyleDictionaryV3Tokens = () => {\n return makeStyleDictionaryV3Tokens(this.paletteData)\n }\n\n makeUniversalJson = () => {\n return makeUniversalTokens(this.paletteData)\n }\n\n makeCssCustomProps = (colorSpace: ColorSpaceConfiguration = 'RGB') => {\n return makeCssCustomProps(this.paletteData, colorSpace)\n }\n\n makeScssVariables = (colorSpace: ColorSpaceConfiguration = 'RGB') => {\n return makeScssVariables(this.paletteData, colorSpace)\n }\n\n makeLessVariables = (colorSpace: ColorSpaceConfiguration = 'RGB') => {\n return makeLessVariables(this.paletteData, colorSpace)\n }\n\n makeTailwindV3Config = () => {\n return makeTailwindV3Config(this.paletteData)\n }\n\n makeTailwindV4Config = () => {\n return makeTailwindV4Config(this.paletteData)\n }\n\n makeSwiftUI = () => {\n return makeSwiftUI(this.paletteData)\n }\n\n makeUIKit = () => {\n return makeUIKit(this.paletteData)\n }\n\n makeCompose = () => {\n return makeCompose(this.paletteData)\n }\n\n makeResources = () => {\n return makeResources(this.paletteData)\n }\n\n makeCsv = () => {\n return makeCsv(this.paletteData)\n }\n}\n"],"names":["makeUniversalTokens","paletteData","workingThemes","theme","json","model","shade","modelWithAlpha","source","color","r","o","s","e","t","a","p","makeUIKit","swift","UIColors","Case","makeTailwindV4Config","cssOutput","colorName","colorValue","chroma","shadeName","isLastColor","isLastTheme","themeName","makeTailwindV3Config","makeSwiftUI","Colors","makeStyleDictionaryV3Tokens","makeScssVariables","colorSpace","scss","globalVars","setValueAccordingToColorSpace","actions","_a","setValueAccordingToAlpha","defaultTheme","defaultVars","index","c","variableName","themeVars","cssVarName","colorVariables","colorGroups","match","scssVarName","vars","rootBlock","classBlocks","makeResources","resources","colors","makeNativeTokens","paletteName","colorModel","themeModel","name","description","makeLessVariables","less","makeDtcgTokens","setValueAccordingToColorSpaceAndAlpha","makeCsv","colorCsv","modeCsv","lightness","l","h","stop","makeCssCustomProps","css","rowCss","makeCompose","kotlin","Code","__publicField"],"mappings":"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","x_google_ignoreList":[1]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Channel, HarmonyType, ColorHarmonyResult, ColorHarmonyOptions } from '../../types/color.types';
|
|
2
|
+
|
|
3
|
+
export default class ColorHarmony {
|
|
4
|
+
private baseColor;
|
|
5
|
+
private analogousSpread;
|
|
6
|
+
private returnFormat;
|
|
7
|
+
constructor({ baseColor, analogousSpread, returnFormat, }: {
|
|
8
|
+
baseColor?: Channel;
|
|
9
|
+
} & ColorHarmonyOptions);
|
|
10
|
+
generateAnalogous: () => ColorHarmonyResult;
|
|
11
|
+
generateComplementary: () => ColorHarmonyResult;
|
|
12
|
+
generateTriadic: () => ColorHarmonyResult;
|
|
13
|
+
generateTetradic: () => ColorHarmonyResult;
|
|
14
|
+
generateSquare: () => ColorHarmonyResult;
|
|
15
|
+
generateHarmony: (type: HarmonyType) => ColorHarmonyResult;
|
|
16
|
+
getAllHarmonies: () => ColorHarmonyResult[];
|
|
17
|
+
private normalizeHue;
|
|
18
|
+
private hueToRgb;
|
|
19
|
+
private formatResult;
|
|
20
|
+
setBaseColor: (color: Channel) => void;
|
|
21
|
+
setAnalogousSpread: (spread: number) => void;
|
|
22
|
+
updateOptions: (options: Partial<ColorHarmonyOptions>) => void;
|
|
23
|
+
getOptions: () => ColorHarmonyOptions;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=color-harmony.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-harmony.d.ts","sourceRoot":"","sources":["../../../src/modules/color-harmony/color-harmony.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EAEP,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,kBAAkB,CAAA;AAEzB,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,YAAY,CAAwB;gBAEhC,EACV,SAAuB,EACvB,eAAoB,EACpB,YAAqB,GACtB,EAAE;QACD,SAAS,CAAC,EAAE,OAAO,CAAA;KACpB,GAAG,mBAAmB;IAMvB,iBAAiB,QAAO,kBAAkB,CAmBzC;IAED,qBAAqB,QAAO,kBAAkB,CAU7C;IAED,eAAe,QAAO,kBAAkB,CAWvC;IAED,gBAAgB,QAAO,kBAAkB,CAYxC;IAED,cAAc,QAAO,kBAAkB,CAYtC;IAED,eAAe,SAAU,WAAW,KAAG,kBAAkB,CAexD;IAED,eAAe,QAAO,kBAAkB,EAAE,CAQzC;IAED,OAAO,CAAC,YAAY,CAInB;IAED,OAAO,CAAC,QAAQ,CAOf;IAED,OAAO,CAAC,YAAY,CA8BnB;IAED,YAAY,UAAW,OAAO,KAAG,IAAI,CAEpC;IAED,kBAAkB,WAAY,MAAM,KAAG,IAAI,CAE1C;IAED,aAAa,YAAa,OAAO,CAAC,mBAAmB,CAAC,KAAG,IAAI,CAO5D;IAED,UAAU,QAAO,mBAAmB,CAGlC;CACH"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
var i = Object.defineProperty;
|
|
2
|
+
var u = (n, e, t) => e in n ? i(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
|
|
3
|
+
var r = (n, e, t) => u(n, typeof e != "symbol" ? e + "" : e, t);
|
|
4
|
+
import { c as o } from "../../index-Beb8qoyd.js";
|
|
5
|
+
class m {
|
|
6
|
+
constructor({
|
|
7
|
+
baseColor: e = [255, 0, 0],
|
|
8
|
+
analogousSpread: t = 30,
|
|
9
|
+
returnFormat: s = "both"
|
|
10
|
+
}) {
|
|
11
|
+
r(this, "baseColor");
|
|
12
|
+
r(this, "analogousSpread");
|
|
13
|
+
r(this, "returnFormat");
|
|
14
|
+
r(this, "generateAnalogous", () => {
|
|
15
|
+
const e = o(this.baseColor).hsl(), t = e[0] || 0, s = [
|
|
16
|
+
this.baseColor,
|
|
17
|
+
this.hueToRgb(
|
|
18
|
+
this.normalizeHue(t - this.analogousSpread),
|
|
19
|
+
e[1],
|
|
20
|
+
e[2]
|
|
21
|
+
),
|
|
22
|
+
this.hueToRgb(
|
|
23
|
+
this.normalizeHue(t + this.analogousSpread),
|
|
24
|
+
e[1],
|
|
25
|
+
e[2]
|
|
26
|
+
)
|
|
27
|
+
];
|
|
28
|
+
return this.formatResult("analogous", s);
|
|
29
|
+
});
|
|
30
|
+
r(this, "generateComplementary", () => {
|
|
31
|
+
const e = o(this.baseColor).hsl(), t = e[0] || 0, s = [
|
|
32
|
+
this.baseColor,
|
|
33
|
+
this.hueToRgb(this.normalizeHue(t + 180), e[1], e[2])
|
|
34
|
+
];
|
|
35
|
+
return this.formatResult("complementary", s);
|
|
36
|
+
});
|
|
37
|
+
r(this, "generateTriadic", () => {
|
|
38
|
+
const e = o(this.baseColor).hsl(), t = e[0] || 0, s = [
|
|
39
|
+
this.baseColor,
|
|
40
|
+
this.hueToRgb(this.normalizeHue(t + 120), e[1], e[2]),
|
|
41
|
+
this.hueToRgb(this.normalizeHue(t + 240), e[1], e[2])
|
|
42
|
+
];
|
|
43
|
+
return this.formatResult("triadic", s);
|
|
44
|
+
});
|
|
45
|
+
r(this, "generateTetradic", () => {
|
|
46
|
+
const e = o(this.baseColor).hsl(), t = e[0] || 0, s = [
|
|
47
|
+
this.baseColor,
|
|
48
|
+
this.hueToRgb(this.normalizeHue(t + 90), e[1], e[2]),
|
|
49
|
+
this.hueToRgb(this.normalizeHue(t + 180), e[1], e[2]),
|
|
50
|
+
this.hueToRgb(this.normalizeHue(t + 270), e[1], e[2])
|
|
51
|
+
];
|
|
52
|
+
return this.formatResult("tetradic", s);
|
|
53
|
+
});
|
|
54
|
+
r(this, "generateSquare", () => {
|
|
55
|
+
const e = o(this.baseColor).hsl(), t = e[0] || 0, s = [
|
|
56
|
+
this.baseColor,
|
|
57
|
+
this.hueToRgb(this.normalizeHue(t + 90), e[1], e[2]),
|
|
58
|
+
this.hueToRgb(this.normalizeHue(t + 180), e[1], e[2]),
|
|
59
|
+
this.hueToRgb(this.normalizeHue(t + 270), e[1], e[2])
|
|
60
|
+
];
|
|
61
|
+
return this.formatResult("square", s);
|
|
62
|
+
});
|
|
63
|
+
r(this, "generateHarmony", (e) => {
|
|
64
|
+
switch (e) {
|
|
65
|
+
case "analogous":
|
|
66
|
+
return this.generateAnalogous();
|
|
67
|
+
case "complementary":
|
|
68
|
+
return this.generateComplementary();
|
|
69
|
+
case "triadic":
|
|
70
|
+
return this.generateTriadic();
|
|
71
|
+
case "tetradic":
|
|
72
|
+
return this.generateTetradic();
|
|
73
|
+
case "square":
|
|
74
|
+
return this.generateSquare();
|
|
75
|
+
default:
|
|
76
|
+
throw new Error(`Unknown harmony type: ${e}`);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
r(this, "getAllHarmonies", () => [
|
|
80
|
+
this.generateAnalogous(),
|
|
81
|
+
this.generateComplementary(),
|
|
82
|
+
this.generateTriadic(),
|
|
83
|
+
this.generateTetradic(),
|
|
84
|
+
this.generateSquare()
|
|
85
|
+
]);
|
|
86
|
+
r(this, "normalizeHue", (e) => {
|
|
87
|
+
for (; e < 0; ) e += 360;
|
|
88
|
+
for (; e >= 360; ) e -= 360;
|
|
89
|
+
return e;
|
|
90
|
+
});
|
|
91
|
+
r(this, "hueToRgb", (e, t, s) => {
|
|
92
|
+
const h = o.hsl(e, t, s).rgb();
|
|
93
|
+
return [Math.round(h[0]), Math.round(h[1]), Math.round(h[2])];
|
|
94
|
+
});
|
|
95
|
+
r(this, "formatResult", (e, t) => {
|
|
96
|
+
const s = t.map(
|
|
97
|
+
(a) => [
|
|
98
|
+
Math.round(a[0]),
|
|
99
|
+
Math.round(a[1]),
|
|
100
|
+
Math.round(a[2])
|
|
101
|
+
]
|
|
102
|
+
), h = s.map(
|
|
103
|
+
(a) => o.rgb(a[0], a[1], a[2]).hex()
|
|
104
|
+
);
|
|
105
|
+
return {
|
|
106
|
+
type: e,
|
|
107
|
+
baseColor: [
|
|
108
|
+
Math.round(this.baseColor[0]),
|
|
109
|
+
Math.round(this.baseColor[1]),
|
|
110
|
+
Math.round(this.baseColor[2])
|
|
111
|
+
],
|
|
112
|
+
baseHex: o.rgb(this.baseColor[0], this.baseColor[1], this.baseColor[2]).hex(),
|
|
113
|
+
colors: s,
|
|
114
|
+
hexColors: h
|
|
115
|
+
};
|
|
116
|
+
});
|
|
117
|
+
r(this, "setBaseColor", (e) => {
|
|
118
|
+
this.baseColor = e;
|
|
119
|
+
});
|
|
120
|
+
r(this, "setAnalogousSpread", (e) => {
|
|
121
|
+
this.analogousSpread = Math.max(1, Math.min(e, 180));
|
|
122
|
+
});
|
|
123
|
+
r(this, "updateOptions", (e) => {
|
|
124
|
+
e.analogousSpread !== void 0 && this.setAnalogousSpread(e.analogousSpread), e.returnFormat !== void 0 && (this.returnFormat = e.returnFormat);
|
|
125
|
+
});
|
|
126
|
+
r(this, "getOptions", () => ({
|
|
127
|
+
analogousSpread: this.analogousSpread,
|
|
128
|
+
returnFormat: this.returnFormat
|
|
129
|
+
}));
|
|
130
|
+
this.baseColor = e, this.analogousSpread = t, this.returnFormat = s;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export {
|
|
134
|
+
m as default
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=color-harmony.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-harmony.js","sources":["../../../src/modules/color-harmony/color-harmony.ts"],"sourcesContent":["import chroma from 'chroma-js'\nimport {\n Channel,\n HexModel,\n HarmonyType,\n ColorHarmonyResult,\n ColorHarmonyOptions,\n} from '@tps/color.types'\n\nexport default class ColorHarmony {\n private baseColor: Channel\n private analogousSpread: number\n private returnFormat: 'rgb' | 'hex' | 'both'\n\n constructor({\n baseColor = [255, 0, 0],\n analogousSpread = 30,\n returnFormat = 'both',\n }: {\n baseColor?: Channel\n } & ColorHarmonyOptions) {\n this.baseColor = baseColor\n this.analogousSpread = analogousSpread\n this.returnFormat = returnFormat\n }\n\n generateAnalogous = (): ColorHarmonyResult => {\n const hsl = chroma(this.baseColor).hsl()\n const baseHue = hsl[0] || 0\n\n const colors = [\n this.baseColor,\n this.hueToRgb(\n this.normalizeHue(baseHue - this.analogousSpread),\n hsl[1],\n hsl[2]\n ),\n this.hueToRgb(\n this.normalizeHue(baseHue + this.analogousSpread),\n hsl[1],\n hsl[2]\n ),\n ]\n\n return this.formatResult('analogous', colors)\n }\n\n generateComplementary = (): ColorHarmonyResult => {\n const hsl = chroma(this.baseColor).hsl()\n const baseHue = hsl[0] || 0\n\n const colors = [\n this.baseColor,\n this.hueToRgb(this.normalizeHue(baseHue + 180), hsl[1], hsl[2]),\n ]\n\n return this.formatResult('complementary', colors)\n }\n\n generateTriadic = (): ColorHarmonyResult => {\n const hsl = chroma(this.baseColor).hsl()\n const baseHue = hsl[0] || 0\n\n const colors = [\n this.baseColor,\n this.hueToRgb(this.normalizeHue(baseHue + 120), hsl[1], hsl[2]),\n this.hueToRgb(this.normalizeHue(baseHue + 240), hsl[1], hsl[2]),\n ]\n\n return this.formatResult('triadic', colors)\n }\n\n generateTetradic = (): ColorHarmonyResult => {\n const hsl = chroma(this.baseColor).hsl()\n const baseHue = hsl[0] || 0\n\n const colors = [\n this.baseColor,\n this.hueToRgb(this.normalizeHue(baseHue + 90), hsl[1], hsl[2]),\n this.hueToRgb(this.normalizeHue(baseHue + 180), hsl[1], hsl[2]),\n this.hueToRgb(this.normalizeHue(baseHue + 270), hsl[1], hsl[2]),\n ]\n\n return this.formatResult('tetradic', colors)\n }\n\n generateSquare = (): ColorHarmonyResult => {\n const hsl = chroma(this.baseColor).hsl()\n const baseHue = hsl[0] || 0\n\n const colors = [\n this.baseColor,\n this.hueToRgb(this.normalizeHue(baseHue + 90), hsl[1], hsl[2]),\n this.hueToRgb(this.normalizeHue(baseHue + 180), hsl[1], hsl[2]),\n this.hueToRgb(this.normalizeHue(baseHue + 270), hsl[1], hsl[2]),\n ]\n\n return this.formatResult('square', colors)\n }\n\n generateHarmony = (type: HarmonyType): ColorHarmonyResult => {\n switch (type) {\n case 'analogous':\n return this.generateAnalogous()\n case 'complementary':\n return this.generateComplementary()\n case 'triadic':\n return this.generateTriadic()\n case 'tetradic':\n return this.generateTetradic()\n case 'square':\n return this.generateSquare()\n default:\n throw new Error(`Unknown harmony type: ${type}`)\n }\n }\n\n getAllHarmonies = (): ColorHarmonyResult[] => {\n return [\n this.generateAnalogous(),\n this.generateComplementary(),\n this.generateTriadic(),\n this.generateTetradic(),\n this.generateSquare(),\n ]\n }\n\n private normalizeHue = (hue: number): number => {\n while (hue < 0) hue += 360\n while (hue >= 360) hue -= 360\n return hue\n }\n\n private hueToRgb = (\n hue: number,\n saturation: number,\n lightness: number\n ): Channel => {\n const rgb = chroma.hsl(hue, saturation, lightness).rgb()\n return [Math.round(rgb[0]), Math.round(rgb[1]), Math.round(rgb[2])]\n }\n\n private formatResult = (\n type: HarmonyType,\n colors: Channel[]\n ): ColorHarmonyResult => {\n const cleanColors = colors.map(\n (color) =>\n [\n Math.round(color[0]),\n Math.round(color[1]),\n Math.round(color[2]),\n ] as Channel\n )\n\n const hexColors = cleanColors.map(\n (color) => chroma.rgb(color[0], color[1], color[2]).hex() as HexModel\n )\n\n return {\n type,\n baseColor: [\n Math.round(this.baseColor[0]),\n Math.round(this.baseColor[1]),\n Math.round(this.baseColor[2]),\n ],\n baseHex: chroma\n .rgb(this.baseColor[0], this.baseColor[1], this.baseColor[2])\n .hex() as HexModel,\n colors: cleanColors,\n hexColors,\n }\n }\n\n setBaseColor = (color: Channel): void => {\n this.baseColor = color\n }\n\n setAnalogousSpread = (spread: number): void => {\n this.analogousSpread = Math.max(1, Math.min(spread, 180))\n }\n\n updateOptions = (options: Partial<ColorHarmonyOptions>): void => {\n if (options.analogousSpread !== undefined) {\n this.setAnalogousSpread(options.analogousSpread)\n }\n if (options.returnFormat !== undefined) {\n this.returnFormat = options.returnFormat\n }\n }\n\n getOptions = (): ColorHarmonyOptions => ({\n analogousSpread: this.analogousSpread,\n returnFormat: this.returnFormat,\n })\n}\n"],"names":["ColorHarmony","baseColor","analogousSpread","returnFormat","__publicField","hsl","chroma","baseHue","colors","type","hue","saturation","lightness","rgb","cleanColors","color","hexColors","spread","options"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ImageData, DominantColorResult, DominantColorsOptions } from '../../types/color.types';
|
|
2
|
+
|
|
3
|
+
export default class DominantColors {
|
|
4
|
+
private imageData;
|
|
5
|
+
private colorCount;
|
|
6
|
+
private maxIterations;
|
|
7
|
+
private tolerance;
|
|
8
|
+
private skipTransparent;
|
|
9
|
+
constructor({ imageData, colorCount, maxIterations, tolerance, skipTransparent, }: {
|
|
10
|
+
imageData: ImageData;
|
|
11
|
+
} & DominantColorsOptions);
|
|
12
|
+
extractDominantColors: () => DominantColorResult[];
|
|
13
|
+
private extractPixels;
|
|
14
|
+
private performKMeans;
|
|
15
|
+
private initializeCentroids;
|
|
16
|
+
private findClosestCentroid;
|
|
17
|
+
private calculateDistance;
|
|
18
|
+
private calculateCentroid;
|
|
19
|
+
private hasConverged;
|
|
20
|
+
private calculateColorFrequencies;
|
|
21
|
+
setColorCount: (count: number) => void;
|
|
22
|
+
updateOptions: (options: Partial<DominantColorsOptions>) => void;
|
|
23
|
+
getOptions: () => DominantColorsOptions;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=dominant-colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dominant-colors.d.ts","sourceRoot":"","sources":["../../../src/modules/dominant-colors/dominant-colors.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,kBAAkB,CAAA;AAEzB,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAS;gBAEpB,EACV,SAAS,EACT,UAAc,EACd,aAAkB,EAClB,SAAgB,EAChB,eAAsB,GACvB,EAAE;QACD,SAAS,EAAE,SAAS,CAAA;KACrB,GAAG,qBAAqB;IAQzB,qBAAqB,QAAO,mBAAmB,EAAE,CAQhD;IAED,OAAO,CAAC,aAAa,CAgBpB;IAED,OAAO,CAAC,aAAa,CA+BpB;IAED,OAAO,CAAC,mBAAmB,CA8B1B;IAED,OAAO,CAAC,mBAAmB,CAgB1B;IAED,OAAO,CAAC,iBAAiB,CAOxB;IAED,OAAO,CAAC,iBAAiB,CAWxB;IAED,OAAO,CAAC,YAAY,CAUnB;IAED,OAAO,CAAC,yBAAyB,CAmBhC;IAED,aAAa,UAAW,MAAM,KAAG,IAAI,CAEpC;IAED,aAAa,YAAa,OAAO,CAAC,qBAAqB,CAAC,KAAG,IAAI,CAO9D;IAED,UAAU,QAAO,qBAAqB,CAKpC;CACH"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
var d = Object.defineProperty;
|
|
2
|
+
var m = (l, t, e) => t in l ? d(l, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[t] = e;
|
|
3
|
+
var o = (l, t, e) => m(l, typeof t != "symbol" ? t + "" : t, e);
|
|
4
|
+
import { c as f } from "../../index-Beb8qoyd.js";
|
|
5
|
+
class p {
|
|
6
|
+
constructor({
|
|
7
|
+
imageData: t,
|
|
8
|
+
colorCount: e = 5,
|
|
9
|
+
maxIterations: n = 50,
|
|
10
|
+
tolerance: a = 0.01,
|
|
11
|
+
skipTransparent: r = !0
|
|
12
|
+
}) {
|
|
13
|
+
o(this, "imageData");
|
|
14
|
+
o(this, "colorCount");
|
|
15
|
+
o(this, "maxIterations");
|
|
16
|
+
o(this, "tolerance");
|
|
17
|
+
o(this, "skipTransparent");
|
|
18
|
+
o(this, "extractDominantColors", () => {
|
|
19
|
+
const t = this.extractPixels();
|
|
20
|
+
if (t.length === 0) return [];
|
|
21
|
+
const e = this.performKMeans(t);
|
|
22
|
+
return this.calculateColorFrequencies(t, e).sort((a, r) => r.percentage - a.percentage);
|
|
23
|
+
});
|
|
24
|
+
o(this, "extractPixels", () => {
|
|
25
|
+
const t = [], e = this.imageData.data;
|
|
26
|
+
for (let n = 0; n < e.length; n += 4) {
|
|
27
|
+
const a = e[n], r = e[n + 1], s = e[n + 2], i = e[n + 3];
|
|
28
|
+
this.skipTransparent && i < 128 || t.push([a, r, s]);
|
|
29
|
+
}
|
|
30
|
+
return t;
|
|
31
|
+
});
|
|
32
|
+
o(this, "performKMeans", (t) => {
|
|
33
|
+
let e = this.initializeCentroids(t), n = [], a = 0;
|
|
34
|
+
for (; a < this.maxIterations && !this.hasConverged(e, n); ) {
|
|
35
|
+
n = e.map((s) => [...s]);
|
|
36
|
+
const r = Array.from(
|
|
37
|
+
{ length: this.colorCount },
|
|
38
|
+
() => []
|
|
39
|
+
);
|
|
40
|
+
t.forEach((s) => {
|
|
41
|
+
const i = this.findClosestCentroid(s, e);
|
|
42
|
+
r[i].push(s);
|
|
43
|
+
}), e = r.map((s) => s.length === 0 ? n[e.indexOf(e[0])] : this.calculateCentroid(s)), a++;
|
|
44
|
+
}
|
|
45
|
+
return e;
|
|
46
|
+
});
|
|
47
|
+
o(this, "initializeCentroids", (t) => {
|
|
48
|
+
const e = [];
|
|
49
|
+
e.push(t[Math.floor(Math.random() * t.length)]);
|
|
50
|
+
for (let n = 1; n < this.colorCount; n++) {
|
|
51
|
+
const a = t.map((c) => {
|
|
52
|
+
const h = Math.min(
|
|
53
|
+
...e.map(
|
|
54
|
+
(u) => this.calculateDistance(c, u)
|
|
55
|
+
)
|
|
56
|
+
);
|
|
57
|
+
return h * h;
|
|
58
|
+
}), r = a.reduce((c, h) => c + h, 0), s = Math.random() * r;
|
|
59
|
+
let i = 0;
|
|
60
|
+
for (let c = 0; c < t.length; c++)
|
|
61
|
+
if (i += a[c], i >= s) {
|
|
62
|
+
e.push(t[c]);
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return e;
|
|
67
|
+
});
|
|
68
|
+
o(this, "findClosestCentroid", (t, e) => {
|
|
69
|
+
let n = 1 / 0, a = 0;
|
|
70
|
+
return e.forEach((r, s) => {
|
|
71
|
+
const i = this.calculateDistance(t, r);
|
|
72
|
+
i < n && (n = i, a = s);
|
|
73
|
+
}), a;
|
|
74
|
+
});
|
|
75
|
+
o(this, "calculateDistance", (t, e) => {
|
|
76
|
+
const [n, a, r] = t, [s, i, c] = e;
|
|
77
|
+
return Math.sqrt(
|
|
78
|
+
Math.pow(n - s, 2) + Math.pow(a - i, 2) + Math.pow(r - c, 2)
|
|
79
|
+
);
|
|
80
|
+
});
|
|
81
|
+
o(this, "calculateCentroid", (t) => {
|
|
82
|
+
const e = t.reduce(
|
|
83
|
+
(n, a) => [n[0] + a[0], n[1] + a[1], n[2] + a[2]],
|
|
84
|
+
[0, 0, 0]
|
|
85
|
+
);
|
|
86
|
+
return [
|
|
87
|
+
Math.round(e[0] / t.length),
|
|
88
|
+
Math.round(e[1] / t.length),
|
|
89
|
+
Math.round(e[2] / t.length)
|
|
90
|
+
];
|
|
91
|
+
});
|
|
92
|
+
o(this, "hasConverged", (t, e) => e.length === 0 ? !1 : t.every((n, a) => this.calculateDistance(n, e[a]) < this.tolerance));
|
|
93
|
+
o(this, "calculateColorFrequencies", (t, e) => {
|
|
94
|
+
const n = new Array(e.length).fill(0);
|
|
95
|
+
t.forEach((r) => {
|
|
96
|
+
const s = this.findClosestCentroid(r, e);
|
|
97
|
+
n[s]++;
|
|
98
|
+
});
|
|
99
|
+
const a = t.length;
|
|
100
|
+
return e.map((r, s) => ({
|
|
101
|
+
color: r,
|
|
102
|
+
hex: f.rgb(r[0], r[1], r[2]).hex(),
|
|
103
|
+
count: n[s],
|
|
104
|
+
percentage: parseFloat((n[s] / a * 100).toFixed(2))
|
|
105
|
+
}));
|
|
106
|
+
});
|
|
107
|
+
o(this, "setColorCount", (t) => {
|
|
108
|
+
this.colorCount = Math.max(1, Math.min(t, 20));
|
|
109
|
+
});
|
|
110
|
+
o(this, "updateOptions", (t) => {
|
|
111
|
+
t.colorCount !== void 0 && this.setColorCount(t.colorCount), t.maxIterations !== void 0 && (this.maxIterations = t.maxIterations), t.tolerance !== void 0 && (this.tolerance = t.tolerance), t.skipTransparent !== void 0 && (this.skipTransparent = t.skipTransparent);
|
|
112
|
+
});
|
|
113
|
+
o(this, "getOptions", () => ({
|
|
114
|
+
colorCount: this.colorCount,
|
|
115
|
+
maxIterations: this.maxIterations,
|
|
116
|
+
tolerance: this.tolerance,
|
|
117
|
+
skipTransparent: this.skipTransparent
|
|
118
|
+
}));
|
|
119
|
+
this.imageData = t, this.colorCount = e, this.maxIterations = n, this.tolerance = a, this.skipTransparent = r;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export {
|
|
123
|
+
p as default
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=dominant-colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dominant-colors.js","sources":["../../../src/modules/dominant-colors/dominant-colors.ts"],"sourcesContent":["import chroma from 'chroma-js'\nimport {\n Channel,\n HexModel,\n ImageData,\n DominantColorResult,\n DominantColorsOptions,\n} from '@tps/color.types'\n\nexport default class DominantColors {\n private imageData: ImageData\n private colorCount: number\n private maxIterations: number\n private tolerance: number\n private skipTransparent: boolean\n\n constructor({\n imageData,\n colorCount = 5,\n maxIterations = 50,\n tolerance = 0.01,\n skipTransparent = true,\n }: {\n imageData: ImageData\n } & DominantColorsOptions) {\n this.imageData = imageData\n this.colorCount = colorCount\n this.maxIterations = maxIterations\n this.tolerance = tolerance\n this.skipTransparent = skipTransparent\n }\n\n extractDominantColors = (): DominantColorResult[] => {\n const pixels = this.extractPixels()\n if (pixels.length === 0) return []\n\n const clusters = this.performKMeans(pixels)\n const results = this.calculateColorFrequencies(pixels, clusters)\n\n return results.sort((a, b) => b.percentage - a.percentage)\n }\n\n private extractPixels = (): Channel[] => {\n const pixels: Channel[] = []\n const data = this.imageData.data\n\n for (let i = 0; i < data.length; i += 4) {\n const r = data[i]\n const g = data[i + 1]\n const b = data[i + 2]\n const a = data[i + 3]\n\n if (this.skipTransparent && a < 128) continue\n\n pixels.push([r, g, b])\n }\n\n return pixels\n }\n\n private performKMeans = (pixels: Channel[]): Channel[] => {\n let centroids = this.initializeCentroids(pixels)\n let prevCentroids: Channel[] = []\n let iteration = 0\n\n while (\n iteration < this.maxIterations &&\n !this.hasConverged(centroids, prevCentroids)\n ) {\n prevCentroids = centroids.map((c) => [...c] as Channel)\n\n const clusters: Channel[][] = Array.from(\n { length: this.colorCount },\n () => []\n )\n\n pixels.forEach((pixel) => {\n const closestIndex = this.findClosestCentroid(pixel, centroids)\n clusters[closestIndex].push(pixel)\n })\n\n centroids = clusters.map((cluster) => {\n if (cluster.length === 0)\n return prevCentroids[centroids.indexOf(centroids[0])]\n return this.calculateCentroid(cluster)\n })\n\n iteration++\n }\n\n return centroids\n }\n\n private initializeCentroids = (pixels: Channel[]): Channel[] => {\n const centroids: Channel[] = []\n\n // K-means++ initialization\n centroids.push(pixels[Math.floor(Math.random() * pixels.length)])\n\n for (let i = 1; i < this.colorCount; i++) {\n const distances = pixels.map((pixel) => {\n const minDistance = Math.min(\n ...centroids.map((centroid) =>\n this.calculateDistance(pixel, centroid)\n )\n )\n return minDistance * minDistance\n })\n\n const totalDistance = distances.reduce((sum, d) => sum + d, 0)\n const threshold = Math.random() * totalDistance\n\n let cumulative = 0\n for (let j = 0; j < pixels.length; j++) {\n cumulative += distances[j]\n if (cumulative >= threshold) {\n centroids.push(pixels[j])\n break\n }\n }\n }\n\n return centroids\n }\n\n private findClosestCentroid = (\n pixel: Channel,\n centroids: Channel[]\n ): number => {\n let minDistance = Infinity\n let closestIndex = 0\n\n centroids.forEach((centroid, index) => {\n const distance = this.calculateDistance(pixel, centroid)\n if (distance < minDistance) {\n minDistance = distance\n closestIndex = index\n }\n })\n\n return closestIndex\n }\n\n private calculateDistance = (color1: Channel, color2: Channel): number => {\n const [r1, g1, b1] = color1\n const [r2, g2, b2] = color2\n\n return Math.sqrt(\n Math.pow(r1 - r2, 2) + Math.pow(g1 - g2, 2) + Math.pow(b1 - b2, 2)\n )\n }\n\n private calculateCentroid = (cluster: Channel[]): Channel => {\n const sum = cluster.reduce(\n (acc, pixel) => [acc[0] + pixel[0], acc[1] + pixel[1], acc[2] + pixel[2]],\n [0, 0, 0] as Channel\n )\n\n return [\n Math.round(sum[0] / cluster.length),\n Math.round(sum[1] / cluster.length),\n Math.round(sum[2] / cluster.length),\n ]\n }\n\n private hasConverged = (\n centroids: Channel[],\n prevCentroids: Channel[]\n ): boolean => {\n if (prevCentroids.length === 0) return false\n\n return centroids.every((centroid, index) => {\n const distance = this.calculateDistance(centroid, prevCentroids[index])\n return distance < this.tolerance\n })\n }\n\n private calculateColorFrequencies = (\n pixels: Channel[],\n centroids: Channel[]\n ): DominantColorResult[] => {\n const counts = new Array(centroids.length).fill(0)\n\n pixels.forEach((pixel) => {\n const closestIndex = this.findClosestCentroid(pixel, centroids)\n counts[closestIndex]++\n })\n\n const totalPixels = pixels.length\n\n return centroids.map((centroid, index) => ({\n color: centroid,\n hex: chroma.rgb(centroid[0], centroid[1], centroid[2]).hex() as HexModel,\n count: counts[index],\n percentage: parseFloat(((counts[index] / totalPixels) * 100).toFixed(2)),\n }))\n }\n\n setColorCount = (count: number): void => {\n this.colorCount = Math.max(1, Math.min(count, 20))\n }\n\n updateOptions = (options: Partial<DominantColorsOptions>): void => {\n if (options.colorCount !== undefined) this.setColorCount(options.colorCount)\n if (options.maxIterations !== undefined)\n this.maxIterations = options.maxIterations\n if (options.tolerance !== undefined) this.tolerance = options.tolerance\n if (options.skipTransparent !== undefined)\n this.skipTransparent = options.skipTransparent\n }\n\n getOptions = (): DominantColorsOptions => ({\n colorCount: this.colorCount,\n maxIterations: this.maxIterations,\n tolerance: this.tolerance,\n skipTransparent: this.skipTransparent,\n })\n}\n"],"names":["DominantColors","imageData","colorCount","maxIterations","tolerance","skipTransparent","__publicField","pixels","clusters","b","data","i","r","g","a","centroids","prevCentroids","iteration","c","pixel","closestIndex","cluster","distances","minDistance","centroid","totalDistance","sum","d","threshold","cumulative","j","index","distance","color1","color2","r1","g1","b1","r2","g2","b2","acc","counts","totalPixels","chroma","count","options"],"mappings":";;;;AASA,MAAqBA,EAAe;AAAA,EAOlC,YAAY;AAAA,IACV,WAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,eAAAC,IAAgB;AAAA,IAChB,WAAAC,IAAY;AAAA,IACZ,iBAAAC,IAAkB;AAAA,EAAA,GAGO;AAdnB,IAAAC,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAkBR,IAAAA,EAAA,+BAAwB,MAA6B;AAC7C,YAAAC,IAAS,KAAK,cAAc;AAClC,UAAIA,EAAO,WAAW,EAAG,QAAO,CAAC;AAE3B,YAAAC,IAAW,KAAK,cAAcD,CAAM;AAGnC,aAFS,KAAK,0BAA0BA,GAAQC,CAAQ,EAEhD,KAAK,CAAC,GAAGC,MAAMA,EAAE,aAAa,EAAE,UAAU;AAAA,IAC3D;AAEQ,IAAAH,EAAA,uBAAgB,MAAiB;AACvC,YAAMC,IAAoB,CAAC,GACrBG,IAAO,KAAK,UAAU;AAE5B,eAASC,IAAI,GAAGA,IAAID,EAAK,QAAQC,KAAK,GAAG;AACjC,cAAAC,IAAIF,EAAKC,CAAC,GACVE,IAAIH,EAAKC,IAAI,CAAC,GACdF,IAAIC,EAAKC,IAAI,CAAC,GACdG,IAAIJ,EAAKC,IAAI,CAAC;AAEhB,QAAA,KAAK,mBAAmBG,IAAI,OAEhCP,EAAO,KAAK,CAACK,GAAGC,GAAGJ,CAAC,CAAC;AAAA,MAAA;AAGhB,aAAAF;AAAA,IACT;AAEQ,IAAAD,EAAA,uBAAgB,CAACC,MAAiC;AACpD,UAAAQ,IAAY,KAAK,oBAAoBR,CAAM,GAC3CS,IAA2B,CAAC,GAC5BC,IAAY;AAGd,aAAAA,IAAY,KAAK,iBACjB,CAAC,KAAK,aAAaF,GAAWC,CAAa,KAC3C;AACA,QAAAA,IAAgBD,EAAU,IAAI,CAACG,MAAM,CAAC,GAAGA,CAAC,CAAY;AAEtD,cAAMV,IAAwB,MAAM;AAAA,UAClC,EAAE,QAAQ,KAAK,WAAW;AAAA,UAC1B,MAAM,CAAA;AAAA,QACR;AAEO,QAAAD,EAAA,QAAQ,CAACY,MAAU;AACxB,gBAAMC,IAAe,KAAK,oBAAoBD,GAAOJ,CAAS;AACrD,UAAAP,EAAAY,CAAY,EAAE,KAAKD,CAAK;AAAA,QAAA,CAClC,GAEWJ,IAAAP,EAAS,IAAI,CAACa,MACpBA,EAAQ,WAAW,IACdL,EAAcD,EAAU,QAAQA,EAAU,CAAC,CAAC,CAAC,IAC/C,KAAK,kBAAkBM,CAAO,CACtC,GAEDJ;AAAA,MAAA;AAGK,aAAAF;AAAA,IACT;AAEQ,IAAAT,EAAA,6BAAsB,CAACC,MAAiC;AAC9D,YAAMQ,IAAuB,CAAC;AAGpB,MAAAA,EAAA,KAAKR,EAAO,KAAK,MAAM,KAAK,WAAWA,EAAO,MAAM,CAAC,CAAC;AAEhE,eAASI,IAAI,GAAGA,IAAI,KAAK,YAAYA,KAAK;AACxC,cAAMW,IAAYf,EAAO,IAAI,CAACY,MAAU;AACtC,gBAAMI,IAAc,KAAK;AAAA,YACvB,GAAGR,EAAU;AAAA,cAAI,CAACS,MAChB,KAAK,kBAAkBL,GAAOK,CAAQ;AAAA,YAAA;AAAA,UAE1C;AACA,iBAAOD,IAAcA;AAAA,QAAA,CACtB,GAEKE,IAAgBH,EAAU,OAAO,CAACI,GAAKC,MAAMD,IAAMC,GAAG,CAAC,GACvDC,IAAY,KAAK,OAAA,IAAWH;AAElC,YAAII,IAAa;AACjB,iBAASC,IAAI,GAAGA,IAAIvB,EAAO,QAAQuB;AAEjC,cADAD,KAAcP,EAAUQ,CAAC,GACrBD,KAAcD,GAAW;AACjB,YAAAb,EAAA,KAAKR,EAAOuB,CAAC,CAAC;AACxB;AAAA,UAAA;AAAA,MAEJ;AAGK,aAAAf;AAAA,IACT;AAEQ,IAAAT,EAAA,6BAAsB,CAC5Ba,GACAJ,MACW;AACX,UAAIQ,IAAc,OACdH,IAAe;AAET,aAAAL,EAAA,QAAQ,CAACS,GAAUO,MAAU;AACrC,cAAMC,IAAW,KAAK,kBAAkBb,GAAOK,CAAQ;AACvD,QAAIQ,IAAWT,MACCA,IAAAS,GACCZ,IAAAW;AAAA,MACjB,CACD,GAEMX;AAAA,IACT;AAEQ,IAAAd,EAAA,2BAAoB,CAAC2B,GAAiBC,MAA4B;AACxE,YAAM,CAACC,GAAIC,GAAIC,CAAE,IAAIJ,GACf,CAACK,GAAIC,GAAIC,CAAE,IAAIN;AAErB,aAAO,KAAK;AAAA,QACV,KAAK,IAAIC,IAAKG,GAAI,CAAC,IAAI,KAAK,IAAIF,IAAKG,GAAI,CAAC,IAAI,KAAK,IAAIF,IAAKG,GAAI,CAAC;AAAA,MACnE;AAAA,IACF;AAEQ,IAAAlC,EAAA,2BAAoB,CAACe,MAAgC;AAC3D,YAAMK,IAAML,EAAQ;AAAA,QAClB,CAACoB,GAAKtB,MAAU,CAACsB,EAAI,CAAC,IAAItB,EAAM,CAAC,GAAGsB,EAAI,CAAC,IAAItB,EAAM,CAAC,GAAGsB,EAAI,CAAC,IAAItB,EAAM,CAAC,CAAC;AAAA,QACxE,CAAC,GAAG,GAAG,CAAC;AAAA,MACV;AAEO,aAAA;AAAA,QACL,KAAK,MAAMO,EAAI,CAAC,IAAIL,EAAQ,MAAM;AAAA,QAClC,KAAK,MAAMK,EAAI,CAAC,IAAIL,EAAQ,MAAM;AAAA,QAClC,KAAK,MAAMK,EAAI,CAAC,IAAIL,EAAQ,MAAM;AAAA,MACpC;AAAA,IACF;AAEQ,IAAAf,EAAA,sBAAe,CACrBS,GACAC,MAEIA,EAAc,WAAW,IAAU,KAEhCD,EAAU,MAAM,CAACS,GAAUO,MACf,KAAK,kBAAkBP,GAAUR,EAAce,CAAK,CAAC,IACpD,KAAK,SACxB;AAGK,IAAAzB,EAAA,mCAA4B,CAClCC,GACAQ,MAC0B;AAC1B,YAAM2B,IAAS,IAAI,MAAM3B,EAAU,MAAM,EAAE,KAAK,CAAC;AAE1C,MAAAR,EAAA,QAAQ,CAACY,MAAU;AACxB,cAAMC,IAAe,KAAK,oBAAoBD,GAAOJ,CAAS;AAC9D,QAAA2B,EAAOtB,CAAY;AAAA,MAAA,CACpB;AAED,YAAMuB,IAAcpC,EAAO;AAE3B,aAAOQ,EAAU,IAAI,CAACS,GAAUO,OAAW;AAAA,QACzC,OAAOP;AAAA,QACP,KAAKoB,EAAO,IAAIpB,EAAS,CAAC,GAAGA,EAAS,CAAC,GAAGA,EAAS,CAAC,CAAC,EAAE,IAAI;AAAA,QAC3D,OAAOkB,EAAOX,CAAK;AAAA,QACnB,YAAY,YAAaW,EAAOX,CAAK,IAAIY,IAAe,KAAK,QAAQ,CAAC,CAAC;AAAA,MAAA,EACvE;AAAA,IACJ;AAEA,IAAArC,EAAA,uBAAgB,CAACuC,MAAwB;AAClC,WAAA,aAAa,KAAK,IAAI,GAAG,KAAK,IAAIA,GAAO,EAAE,CAAC;AAAA,IACnD;AAEA,IAAAvC,EAAA,uBAAgB,CAACwC,MAAkD;AACjE,MAAIA,EAAQ,eAAe,UAAgB,KAAA,cAAcA,EAAQ,UAAU,GACvEA,EAAQ,kBAAkB,WAC5B,KAAK,gBAAgBA,EAAQ,gBAC3BA,EAAQ,cAAc,WAAW,KAAK,YAAYA,EAAQ,YAC1DA,EAAQ,oBAAoB,WAC9B,KAAK,kBAAkBA,EAAQ;AAAA,IACnC;AAEA,IAAAxC,EAAA,oBAAa,OAA8B;AAAA,MACzC,YAAY,KAAK;AAAA,MACjB,eAAe,KAAK;AAAA,MACpB,WAAW,KAAK;AAAA,MAChB,iBAAiB,KAAK;AAAA,IAAA;AA9LtB,SAAK,YAAYL,GACjB,KAAK,aAAaC,GAClB,KAAK,gBAAgBC,GACrB,KAAK,YAAYC,GACjB,KAAK,kBAAkBC;AAAA,EAAA;AA4L3B;"}
|
|
@@ -13,4 +13,33 @@ export interface HslModel {
|
|
|
13
13
|
}
|
|
14
14
|
export type Channel = [number, number, number];
|
|
15
15
|
export type ChannelWithAlpha = [number, number, number, number];
|
|
16
|
+
export interface ImageData {
|
|
17
|
+
data: Uint8ClampedArray;
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
}
|
|
21
|
+
export interface DominantColorResult {
|
|
22
|
+
color: Channel;
|
|
23
|
+
hex: HexModel;
|
|
24
|
+
percentage: number;
|
|
25
|
+
count: number;
|
|
26
|
+
}
|
|
27
|
+
export interface DominantColorsOptions {
|
|
28
|
+
colorCount?: number;
|
|
29
|
+
maxIterations?: number;
|
|
30
|
+
tolerance?: number;
|
|
31
|
+
skipTransparent?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export type HarmonyType = 'analogous' | 'complementary' | 'triadic' | 'tetradic' | 'square';
|
|
34
|
+
export interface ColorHarmonyResult {
|
|
35
|
+
type: HarmonyType;
|
|
36
|
+
baseColor: Channel;
|
|
37
|
+
baseHex: HexModel;
|
|
38
|
+
colors: Channel[];
|
|
39
|
+
hexColors: HexModel[];
|
|
40
|
+
}
|
|
41
|
+
export interface ColorHarmonyOptions {
|
|
42
|
+
analogousSpread?: number;
|
|
43
|
+
returnFormat?: 'rgb' | 'hex' | 'both';
|
|
44
|
+
}
|
|
16
45
|
//# sourceMappingURL=color.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.types.d.ts","sourceRoot":"","sources":["../../src/types/color.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,IAAI,MAAM,EAAE,GAAG,MAAM,CAAA;AAE5C,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,CAAC,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAC9C,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"color.types.d.ts","sourceRoot":"","sources":["../../src/types/color.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,IAAI,MAAM,EAAE,GAAG,MAAM,CAAA;AAE5C,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,CAAC,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAC9C,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAE/D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,iBAAiB,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAA;IACd,GAAG,EAAE,QAAQ,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,eAAe,GACf,SAAS,GACT,UAAU,GACV,QAAQ,CAAA;AAEZ,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,QAAQ,CAAA;IACjB,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,SAAS,EAAE,QAAQ,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;CACtC"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@a_ng_d/utils-ui-color-palette",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.7.0",
|
|
5
5
|
"description": "Core utilities library for UI Color Palette - a color management plugin for design tools. This library provides the foundational color manipulation, contrast calculation, and palette generation features used in the plugin.",
|
|
6
|
-
"repository":
|
|
7
|
-
"type": "git",
|
|
8
|
-
"url": "git+https://github.com/a-ng-d/utils-ui-color-palette.git"
|
|
9
|
-
},
|
|
6
|
+
"repository": "https://github.com/a-ng-d/utils-ui-color-palette",
|
|
10
7
|
"keywords": [
|
|
11
8
|
"color",
|
|
12
9
|
"contrast",
|
|
@@ -61,4 +58,4 @@
|
|
|
61
58
|
"chroma-js": "^2.4.2",
|
|
62
59
|
"hsluv": "^1.0.1"
|
|
63
60
|
}
|
|
64
|
-
}
|
|
61
|
+
}
|