docgen-utils 1.0.12 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/bundle.js +3189 -1238
  2. package/dist/bundle.min.js +101 -99
  3. package/dist/cli.js +2653 -1117
  4. package/dist/packages/cli/commands/export-docs.d.ts.map +1 -1
  5. package/dist/packages/cli/commands/export-docs.js +131 -2
  6. package/dist/packages/cli/commands/export-docs.js.map +1 -1
  7. package/dist/packages/cli/commands/export-slides.d.ts.map +1 -1
  8. package/dist/packages/cli/commands/export-slides.js +25 -1
  9. package/dist/packages/cli/commands/export-slides.js.map +1 -1
  10. package/dist/packages/docs/common.d.ts +10 -0
  11. package/dist/packages/docs/common.d.ts.map +1 -1
  12. package/dist/packages/docs/common.js.map +1 -1
  13. package/dist/packages/docs/convert.d.ts.map +1 -1
  14. package/dist/packages/docs/convert.js +246 -218
  15. package/dist/packages/docs/convert.js.map +1 -1
  16. package/dist/packages/docs/create-document.d.ts.map +1 -1
  17. package/dist/packages/docs/create-document.js +43 -3
  18. package/dist/packages/docs/create-document.js.map +1 -1
  19. package/dist/packages/docs/export.d.ts +9 -8
  20. package/dist/packages/docs/export.d.ts.map +1 -1
  21. package/dist/packages/docs/export.js +23 -36
  22. package/dist/packages/docs/export.js.map +1 -1
  23. package/dist/packages/docs/parse-colors.d.ts +37 -0
  24. package/dist/packages/docs/parse-colors.d.ts.map +1 -0
  25. package/dist/packages/docs/parse-colors.js +507 -0
  26. package/dist/packages/docs/parse-colors.js.map +1 -0
  27. package/dist/packages/docs/parse-css.d.ts +98 -0
  28. package/dist/packages/docs/parse-css.d.ts.map +1 -0
  29. package/dist/packages/docs/parse-css.js +1592 -0
  30. package/dist/packages/docs/parse-css.js.map +1 -0
  31. package/dist/packages/docs/parse-helpers.d.ts +45 -0
  32. package/dist/packages/docs/parse-helpers.d.ts.map +1 -0
  33. package/dist/packages/docs/parse-helpers.js +214 -0
  34. package/dist/packages/docs/parse-helpers.js.map +1 -0
  35. package/dist/packages/docs/parse-inline.d.ts +41 -0
  36. package/dist/packages/docs/parse-inline.d.ts.map +1 -0
  37. package/dist/packages/docs/parse-inline.js +473 -0
  38. package/dist/packages/docs/parse-inline.js.map +1 -0
  39. package/dist/packages/docs/parse-layout.d.ts +57 -0
  40. package/dist/packages/docs/parse-layout.d.ts.map +1 -0
  41. package/dist/packages/docs/parse-layout.js +295 -0
  42. package/dist/packages/docs/parse-layout.js.map +1 -0
  43. package/dist/packages/docs/parse-special.d.ts +51 -0
  44. package/dist/packages/docs/parse-special.d.ts.map +1 -0
  45. package/dist/packages/docs/parse-special.js +251 -0
  46. package/dist/packages/docs/parse-special.js.map +1 -0
  47. package/dist/packages/docs/parse-units.d.ts +68 -0
  48. package/dist/packages/docs/parse-units.d.ts.map +1 -0
  49. package/dist/packages/docs/parse-units.js +275 -0
  50. package/dist/packages/docs/parse-units.js.map +1 -0
  51. package/dist/packages/docs/parse.d.ts.map +1 -1
  52. package/dist/packages/docs/parse.js +957 -2800
  53. package/dist/packages/docs/parse.js.map +1 -1
  54. package/dist/packages/slides/common.d.ts +7 -0
  55. package/dist/packages/slides/common.d.ts.map +1 -1
  56. package/dist/packages/slides/convert.d.ts.map +1 -1
  57. package/dist/packages/slides/convert.js +92 -7
  58. package/dist/packages/slides/convert.js.map +1 -1
  59. package/dist/packages/slides/parse.d.ts.map +1 -1
  60. package/dist/packages/slides/parse.js +723 -40
  61. package/dist/packages/slides/parse.js.map +1 -1
  62. package/dist/packages/slides/transform.d.ts.map +1 -1
  63. package/dist/packages/slides/transform.js +12 -7
  64. package/dist/packages/slides/transform.js.map +1 -1
  65. package/package.json +1 -1
@@ -0,0 +1,507 @@
1
+ /**
2
+ * Extract the first color from a CSS gradient value.
3
+ * Handles linear-gradient, radial-gradient, and conic-gradient.
4
+ * Returns the first color stop (hex, rgb, rgba, hsl, or named color).
5
+ *
6
+ * Examples:
7
+ * "linear-gradient(135deg, #7c3aed, #a78bfa, #c084fc)" -> "#7c3aed"
8
+ * "linear-gradient(to right, red, blue)" -> "red"
9
+ * "radial-gradient(circle, rgb(124, 58, 237), purple)" -> "rgb(124, 58, 237)"
10
+ */
11
+ export function extractFirstGradientColor(value) {
12
+ if (!value)
13
+ return undefined;
14
+ // Check if it's a gradient
15
+ const gradientMatch = value.match(/(?:linear|radial|conic)-gradient\s*\(([^)]+)\)/i);
16
+ if (!gradientMatch)
17
+ return undefined;
18
+ const gradientContent = gradientMatch[1];
19
+ // Split by commas, but handle rgb/rgba/hsl/hsla which contain commas
20
+ // Find color values after the direction/angle part
21
+ const parts = [];
22
+ let current = "";
23
+ let parenDepth = 0;
24
+ for (let i = 0; i < gradientContent.length; i++) {
25
+ const char = gradientContent[i];
26
+ if (char === "(") {
27
+ parenDepth++;
28
+ current += char;
29
+ }
30
+ else if (char === ")") {
31
+ parenDepth--;
32
+ current += char;
33
+ }
34
+ else if (char === "," && parenDepth === 0) {
35
+ parts.push(current.trim());
36
+ current = "";
37
+ }
38
+ else {
39
+ current += char;
40
+ }
41
+ }
42
+ if (current.trim()) {
43
+ parts.push(current.trim());
44
+ }
45
+ // Direction/angle keywords to skip
46
+ const directionKeywords = /^(?:\d+deg|to\s+(?:top|bottom|left|right|top\s+left|top\s+right|bottom\s+left|bottom\s+right)|circle|ellipse|at\s+|closest-side|farthest-side|closest-corner|farthest-corner)/i;
47
+ // Color patterns
48
+ const colorPattern = /^(?:#[0-9a-fA-F]{3,8}|rgba?\s*\([^)]+\)|hsla?\s*\([^)]+\)|[a-zA-Z]+)(?:\s+\d+%)?$/i;
49
+ for (const part of parts) {
50
+ // Skip direction/angle specifications
51
+ if (directionKeywords.test(part))
52
+ continue;
53
+ // Check if this looks like a color (possibly with a percentage stop position)
54
+ if (colorPattern.test(part)) {
55
+ // Extract just the color part (remove percentage if present)
56
+ const colorOnly = part.replace(/\s+\d+%$/, "").trim();
57
+ return colorOnly;
58
+ }
59
+ }
60
+ return undefined;
61
+ }
62
+ /**
63
+ * Parse a CSS gradient value into a TextGradient structure.
64
+ * Extracts angle and all color stops for use in DOCX gradient fills.
65
+ *
66
+ * Examples:
67
+ * "linear-gradient(135deg, #7c3aed, #a78bfa, #c084fc)" ->
68
+ * { angle: 135, stops: [{ color: "7C3AED", position: 0 }, { color: "A78BFA", position: 50 }, { color: "C084FC", position: 100 }] }
69
+ */
70
+ export function parseGradient(value) {
71
+ if (!value)
72
+ return undefined;
73
+ // Check if it's a linear gradient (only linear gradients are supported in DOCX)
74
+ const gradientMatch = value.match(/linear-gradient\s*\(([^)]+)\)/i);
75
+ if (!gradientMatch)
76
+ return undefined;
77
+ const gradientContent = gradientMatch[1];
78
+ // Split by commas, but handle rgb/rgba/hsl/hsla which contain commas
79
+ const parts = [];
80
+ let current = "";
81
+ let parenDepth = 0;
82
+ for (let i = 0; i < gradientContent.length; i++) {
83
+ const char = gradientContent[i];
84
+ if (char === "(") {
85
+ parenDepth++;
86
+ current += char;
87
+ }
88
+ else if (char === ")") {
89
+ parenDepth--;
90
+ current += char;
91
+ }
92
+ else if (char === "," && parenDepth === 0) {
93
+ parts.push(current.trim());
94
+ current = "";
95
+ }
96
+ else {
97
+ current += char;
98
+ }
99
+ }
100
+ if (current.trim()) {
101
+ parts.push(current.trim());
102
+ }
103
+ // Extract angle from first part if it's a direction
104
+ let angle = 180; // Default: top to bottom
105
+ let colorStartIndex = 0;
106
+ if (parts.length > 0) {
107
+ const firstPart = parts[0];
108
+ // Check for angle in degrees
109
+ const degMatch = firstPart.match(/^(\d+)deg$/i);
110
+ if (degMatch) {
111
+ angle = parseInt(degMatch[1], 10);
112
+ colorStartIndex = 1;
113
+ }
114
+ else if (firstPart.match(/^to\s+/i)) {
115
+ // Convert direction keywords to angles
116
+ const direction = firstPart.toLowerCase();
117
+ if (direction.includes("right") && direction.includes("bottom"))
118
+ angle = 135;
119
+ else if (direction.includes("right") && direction.includes("top"))
120
+ angle = 45;
121
+ else if (direction.includes("left") && direction.includes("bottom"))
122
+ angle = 225;
123
+ else if (direction.includes("left") && direction.includes("top"))
124
+ angle = 315;
125
+ else if (direction.includes("right"))
126
+ angle = 90;
127
+ else if (direction.includes("left"))
128
+ angle = 270;
129
+ else if (direction.includes("bottom"))
130
+ angle = 180;
131
+ else if (direction.includes("top"))
132
+ angle = 0;
133
+ colorStartIndex = 1;
134
+ }
135
+ }
136
+ // Extract color stops
137
+ const colorParts = parts.slice(colorStartIndex);
138
+ if (colorParts.length === 0)
139
+ return undefined;
140
+ const stops = [];
141
+ const colorPattern = /^(#[0-9a-fA-F]{3,8}|rgba?\s*\([^)]+\)|hsla?\s*\([^)]+\)|[a-zA-Z]+)(?:\s+(\d+)%)?$/i;
142
+ for (let i = 0; i < colorParts.length; i++) {
143
+ const part = colorParts[i];
144
+ const match = part.match(colorPattern);
145
+ if (match) {
146
+ let color = match[1];
147
+ // Convert color to hex without #
148
+ color = normalizeColorToHex(color);
149
+ // Get position (default: evenly distributed)
150
+ let position;
151
+ if (match[2]) {
152
+ position = parseInt(match[2], 10);
153
+ }
154
+ else {
155
+ // Evenly distribute if no position specified
156
+ position = colorParts.length === 1 ? 0 : (i / (colorParts.length - 1)) * 100;
157
+ }
158
+ stops.push({ color, position: Math.round(position) });
159
+ }
160
+ }
161
+ if (stops.length < 2)
162
+ return undefined;
163
+ return { angle, stops };
164
+ }
165
+ /**
166
+ * Normalize a CSS color value to hex format (without #).
167
+ * Handles hex (#RGB, #RRGGBB), rgb(), rgba(), and named colors.
168
+ */
169
+ export function normalizeColorToHex(color) {
170
+ color = color.trim();
171
+ // Already hex
172
+ if (color.startsWith("#")) {
173
+ let hex = color.slice(1).toUpperCase();
174
+ // Expand shorthand (#RGB -> #RRGGBB)
175
+ if (hex.length === 3) {
176
+ hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
177
+ }
178
+ // Strip alpha if present (#RRGGBBAA -> #RRGGBB)
179
+ if (hex.length === 8) {
180
+ hex = hex.slice(0, 6);
181
+ }
182
+ return hex;
183
+ }
184
+ // RGB/RGBA
185
+ const rgbMatch = color.match(/rgba?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/i);
186
+ if (rgbMatch) {
187
+ const r = parseInt(rgbMatch[1], 10).toString(16).padStart(2, "0");
188
+ const g = parseInt(rgbMatch[2], 10).toString(16).padStart(2, "0");
189
+ const b = parseInt(rgbMatch[3], 10).toString(16).padStart(2, "0");
190
+ return (r + g + b).toUpperCase();
191
+ }
192
+ // Named colors (common ones)
193
+ const namedColors = {
194
+ red: "FF0000", green: "008000", blue: "0000FF", white: "FFFFFF", black: "000000",
195
+ yellow: "FFFF00", cyan: "00FFFF", magenta: "FF00FF", orange: "FFA500", purple: "800080",
196
+ pink: "FFC0CB", gray: "808080", grey: "808080", navy: "000080", teal: "008080",
197
+ maroon: "800000", olive: "808000", lime: "00FF00", aqua: "00FFFF", silver: "C0C0C0",
198
+ fuchsia: "FF00FF", transparent: "FFFFFF",
199
+ };
200
+ const lowerColor = color.toLowerCase();
201
+ if (namedColors[lowerColor]) {
202
+ return namedColors[lowerColor];
203
+ }
204
+ // Fallback: return as-is (uppercase)
205
+ return color.toUpperCase().replace("#", "");
206
+ }
207
+ /**
208
+ * Extract the primary (first) font name from a CSS font-family value.
209
+ * Handles font stacks like "'Source Sans Pro', -apple-system, sans-serif"
210
+ * Returns the first non-generic font name, cleaned of quotes.
211
+ *
212
+ * Generic fonts (sans-serif, serif, monospace, cursive, fantasy, system-ui) are skipped
213
+ * unless they're the only option.
214
+ */
215
+ export function extractPrimaryFont(fontFamily) {
216
+ if (!fontFamily)
217
+ return undefined;
218
+ // Split by comma, handling quoted font names
219
+ const fonts = [];
220
+ let current = "";
221
+ let inQuote = false;
222
+ let quoteChar = "";
223
+ for (let i = 0; i < fontFamily.length; i++) {
224
+ const char = fontFamily[i];
225
+ if ((char === '"' || char === "'") && !inQuote) {
226
+ inQuote = true;
227
+ quoteChar = char;
228
+ }
229
+ else if (char === quoteChar && inQuote) {
230
+ inQuote = false;
231
+ quoteChar = "";
232
+ }
233
+ else if (char === "," && !inQuote) {
234
+ const trimmed = current.trim().replace(/^['"]|['"]$/g, "");
235
+ if (trimmed)
236
+ fonts.push(trimmed);
237
+ current = "";
238
+ }
239
+ else {
240
+ current += char;
241
+ }
242
+ }
243
+ // Add last font
244
+ const trimmed = current.trim().replace(/^['"]|['"]$/g, "");
245
+ if (trimmed)
246
+ fonts.push(trimmed);
247
+ // Generic font families to skip
248
+ const genericFonts = new Set([
249
+ "sans-serif", "serif", "monospace", "cursive", "fantasy", "system-ui",
250
+ "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica Neue",
251
+ "Arial", "Helvetica", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans",
252
+ "Noto Sans", "sans-serif", "Oxygen", "Open Sans",
253
+ ]);
254
+ // Find first non-generic font
255
+ for (const font of fonts) {
256
+ if (!genericFonts.has(font) && !font.startsWith("-")) {
257
+ return font;
258
+ }
259
+ }
260
+ // If all fonts are generic, return the first one
261
+ return fonts[0];
262
+ }
263
+ export function extractHexColor(value) {
264
+ // Handle named CSS colors (comprehensive list for documents)
265
+ const namedColors = {
266
+ white: "FFFFFF",
267
+ black: "000000",
268
+ red: "FF0000",
269
+ green: "008000",
270
+ blue: "0000FF",
271
+ yellow: "FFFF00",
272
+ orange: "FFA500",
273
+ purple: "800080",
274
+ gray: "808080",
275
+ grey: "808080",
276
+ transparent: "", // Return empty for transparent
277
+ // Extended named colors commonly used in documents
278
+ navy: "000080",
279
+ teal: "008080",
280
+ aqua: "00FFFF",
281
+ cyan: "00FFFF",
282
+ magenta: "FF00FF",
283
+ fuchsia: "FF00FF",
284
+ lime: "00FF00",
285
+ maroon: "800000",
286
+ olive: "808000",
287
+ silver: "C0C0C0",
288
+ darkblue: "00008B",
289
+ darkgreen: "006400",
290
+ darkred: "8B0000",
291
+ darkgray: "A9A9A9",
292
+ darkgrey: "A9A9A9",
293
+ lightgray: "D3D3D3",
294
+ lightgrey: "D3D3D3",
295
+ lightblue: "ADD8E6",
296
+ lightgreen: "90EE90",
297
+ lightyellow: "FFFFE0",
298
+ lightcoral: "F08080",
299
+ lightpink: "FFB6C1",
300
+ lightsalmon: "FFA07A",
301
+ lightcyan: "E0FFFF",
302
+ lavender: "E6E6FA",
303
+ coral: "FF7F50",
304
+ salmon: "FA8072",
305
+ tomato: "FF6347",
306
+ gold: "FFD700",
307
+ goldenrod: "DAA520",
308
+ darkgoldenrod: "B8860B",
309
+ wheat: "F5DEB3",
310
+ beige: "F5F5DC",
311
+ ivory: "FFFFF0",
312
+ linen: "FAF0E6",
313
+ cornsilk: "FFF8DC",
314
+ khaki: "F0E68C",
315
+ darkkhaki: "BDB76B",
316
+ crimson: "DC143C",
317
+ firebrick: "B22222",
318
+ indianred: "CD5C5C",
319
+ hotpink: "FF69B4",
320
+ deeppink: "FF1493",
321
+ pink: "FFC0CB",
322
+ plum: "DDA0DD",
323
+ violet: "EE82EE",
324
+ orchid: "DA70D6",
325
+ darkorchid: "9932CC",
326
+ darkviolet: "9400D3",
327
+ mediumpurple: "9370DB",
328
+ indigo: "4B0082",
329
+ slateblue: "6A5ACD",
330
+ darkslateblue: "483D8B",
331
+ royalblue: "4169E1",
332
+ dodgerblue: "1E90FF",
333
+ cornflowerblue: "6495ED",
334
+ steelblue: "4682B4",
335
+ cadetblue: "5F9EA0",
336
+ mediumblue: "0000CD",
337
+ midnightblue: "191970",
338
+ skyblue: "87CEEB",
339
+ deepskyblue: "00BFFF",
340
+ powderblue: "B0E0E6",
341
+ turquoise: "40E0D0",
342
+ mediumturquoise: "48D1CC",
343
+ darkturquoise: "00CED1",
344
+ darkcyan: "008B8B",
345
+ aquamarine: "7FFFD4",
346
+ mediumaquamarine: "66CDAA",
347
+ mediumseagreen: "3CB371",
348
+ seagreen: "2E8B57",
349
+ forestgreen: "228B22",
350
+ limegreen: "32CD32",
351
+ springgreen: "00FF7F",
352
+ darkseagreen: "8FBC8F",
353
+ olivedrab: "6B8E23",
354
+ darkolivegreen: "556B2F",
355
+ yellowgreen: "9ACD32",
356
+ greenyellow: "ADFF2F",
357
+ chartreuse: "7FFF00",
358
+ lawngreen: "7CFC00",
359
+ peru: "CD853F",
360
+ chocolate: "D2691E",
361
+ sienna: "A0522D",
362
+ saddlebrown: "8B4513",
363
+ brown: "A52A2A",
364
+ tan: "D2B48C",
365
+ sandybrown: "F4A460",
366
+ burlywood: "DEB887",
367
+ rosybrown: "BC8F8F",
368
+ moccasin: "FFE4B5",
369
+ peachpuff: "FFDAB9",
370
+ papayawhip: "FFEFD5",
371
+ blanchedalmond: "FFEBCD",
372
+ bisque: "FFE4C4",
373
+ mistyrose: "FFE4E1",
374
+ antiquewhite: "FAEBD7",
375
+ floralwhite: "FFFAF0",
376
+ ghostwhite: "F8F8FF",
377
+ mintcream: "F5FFFA",
378
+ snow: "FFFAFA",
379
+ seashell: "FFF5EE",
380
+ aliceblue: "F0F8FF",
381
+ honeydew: "F0FFF0",
382
+ whitesmoke: "F5F5F5",
383
+ gainsboro: "DCDCDC",
384
+ dimgray: "696969",
385
+ dimgrey: "696969",
386
+ darkslategray: "2F4F4F",
387
+ darkslategrey: "2F4F4F",
388
+ slategray: "708090",
389
+ slategrey: "708090",
390
+ lightslategray: "778899",
391
+ lightslategrey: "778899",
392
+ };
393
+ const lowerValue = value.toLowerCase().trim();
394
+ if (namedColors[lowerValue] !== undefined) {
395
+ return namedColors[lowerValue] || undefined;
396
+ }
397
+ // Handle hex colors
398
+ const hexMatch = value.match(/#([0-9a-fA-F]{3,6})/);
399
+ if (hexMatch) {
400
+ let hex = hexMatch[1];
401
+ // Expand 3-digit hex to 6-digit
402
+ if (hex.length === 3) {
403
+ hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
404
+ }
405
+ return hex.toUpperCase();
406
+ }
407
+ // Handle linear-gradient - extract and blend the first color
408
+ const gradientMatch = value.match(/linear-gradient\s*\([^)]+\)/i);
409
+ if (gradientMatch) {
410
+ // Find all rgba colors in the gradient
411
+ const rgbaMatches = value.matchAll(/rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([0-9.]+)\s*\)/g);
412
+ for (const match of rgbaMatches) {
413
+ const alpha = parseFloat(match[4]);
414
+ // Blend with white based on alpha
415
+ const r = Math.round(parseInt(match[1], 10) * alpha + 255 * (1 - alpha));
416
+ const g = Math.round(parseInt(match[2], 10) * alpha + 255 * (1 - alpha));
417
+ const b = Math.round(parseInt(match[3], 10) * alpha + 255 * (1 - alpha));
418
+ return (r.toString(16).padStart(2, "0") +
419
+ g.toString(16).padStart(2, "0") +
420
+ b.toString(16).padStart(2, "0")).toUpperCase();
421
+ }
422
+ // Fallback: try to find a hex color in the gradient
423
+ const gradientHexMatch = value.match(/#([0-9a-fA-F]{3,6})/);
424
+ if (gradientHexMatch) {
425
+ let hex = gradientHexMatch[1];
426
+ if (hex.length === 3) {
427
+ hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
428
+ }
429
+ return hex.toUpperCase();
430
+ }
431
+ // For gradients without extractable colors, return undefined (no background)
432
+ return undefined;
433
+ }
434
+ // Handle rgb/rgba - check for alpha value
435
+ const rgbaMatch = value.match(/rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([0-9.]+)\s*\)/);
436
+ if (rgbaMatch) {
437
+ const alpha = parseFloat(rgbaMatch[4]);
438
+ // If alpha is very low (< 0.3), the color is mostly transparent
439
+ // Blend with white to get the effective color
440
+ if (alpha < 0.3) {
441
+ const r = Math.round(parseInt(rgbaMatch[1], 10) * alpha + 255 * (1 - alpha));
442
+ const g = Math.round(parseInt(rgbaMatch[2], 10) * alpha + 255 * (1 - alpha));
443
+ const b = Math.round(parseInt(rgbaMatch[3], 10) * alpha + 255 * (1 - alpha));
444
+ return (r.toString(16).padStart(2, "0") +
445
+ g.toString(16).padStart(2, "0") +
446
+ b.toString(16).padStart(2, "0")).toUpperCase();
447
+ }
448
+ // For higher alpha, just use the RGB values
449
+ const r = parseInt(rgbaMatch[1], 10).toString(16).padStart(2, "0");
450
+ const g = parseInt(rgbaMatch[2], 10).toString(16).padStart(2, "0");
451
+ const b = parseInt(rgbaMatch[3], 10).toString(16).padStart(2, "0");
452
+ return (r + g + b).toUpperCase();
453
+ }
454
+ // Handle rgb (no alpha)
455
+ const rgbMatch = value.match(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/);
456
+ if (rgbMatch) {
457
+ const r = parseInt(rgbMatch[1], 10).toString(16).padStart(2, "0");
458
+ const g = parseInt(rgbMatch[2], 10).toString(16).padStart(2, "0");
459
+ const b = parseInt(rgbMatch[3], 10).toString(16).padStart(2, "0");
460
+ return (r + g + b).toUpperCase();
461
+ }
462
+ // Handle hsl/hsla colors (e.g., hsl(220, 90%, 56%), hsla(220, 90%, 56%, 0.5))
463
+ const hslMatch = value.match(/hsla?\s*\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(?:,\s*([0-9.]+))?\s*\)/);
464
+ if (hslMatch) {
465
+ const h = parseInt(hslMatch[1], 10) / 360;
466
+ const s = parseInt(hslMatch[2], 10) / 100;
467
+ const l = parseInt(hslMatch[3], 10) / 100;
468
+ const alpha = hslMatch[4] !== undefined ? parseFloat(hslMatch[4]) : 1;
469
+ // HSL to RGB conversion
470
+ let r, g, b;
471
+ if (s === 0) {
472
+ r = g = b = l;
473
+ }
474
+ else {
475
+ const hue2rgb = (p, q, t) => {
476
+ if (t < 0)
477
+ t += 1;
478
+ if (t > 1)
479
+ t -= 1;
480
+ if (t < 1 / 6)
481
+ return p + (q - p) * 6 * t;
482
+ if (t < 1 / 2)
483
+ return q;
484
+ if (t < 2 / 3)
485
+ return p + (q - p) * (2 / 3 - t) * 6;
486
+ return p;
487
+ };
488
+ const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
489
+ const p = 2 * l - q;
490
+ r = hue2rgb(p, q, h + 1 / 3);
491
+ g = hue2rgb(p, q, h);
492
+ b = hue2rgb(p, q, h - 1 / 3);
493
+ }
494
+ // Apply alpha blending with white if semi-transparent
495
+ if (alpha < 1) {
496
+ r = r * alpha + (1 - alpha);
497
+ g = g * alpha + (1 - alpha);
498
+ b = b * alpha + (1 - alpha);
499
+ }
500
+ const rHex = Math.round(r * 255).toString(16).padStart(2, "0");
501
+ const gHex = Math.round(g * 255).toString(16).padStart(2, "0");
502
+ const bHex = Math.round(b * 255).toString(16).padStart(2, "0");
503
+ return (rHex + gHex + bHex).toUpperCase();
504
+ }
505
+ return undefined;
506
+ }
507
+ //# sourceMappingURL=parse-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-colors.js","sourceRoot":"","sources":["../../../packages/docs/parse-colors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import { TextGradient } from "./common";
2
+ /**
3
+ * CSS context for resolving variables and class-based styles.
4
+ */
5
+ export interface CalloutStyle {
6
+ backgroundColor?: string;
7
+ borderColor?: string;
8
+ labelColor?: string;
9
+ }
10
+ /**
11
+ * General style properties that can be extracted from any CSS class.
12
+ */
13
+ export interface ClassStyle {
14
+ backgroundColor?: string;
15
+ backgroundGradient?: TextGradient;
16
+ borderColor?: string;
17
+ borderBottom?: string;
18
+ borderTop?: string;
19
+ borderLeft?: string;
20
+ borderRight?: string;
21
+ color?: string;
22
+ display?: string;
23
+ gridTemplateColumns?: string;
24
+ textAlign?: string;
25
+ fontSize?: string;
26
+ fontWeight?: string;
27
+ fontStyle?: string;
28
+ fontFamily?: string;
29
+ textIndent?: string;
30
+ textTransform?: string;
31
+ padding?: string;
32
+ paddingLeft?: string;
33
+ paddingRight?: string;
34
+ paddingTop?: string;
35
+ paddingBottom?: string;
36
+ border?: string;
37
+ flex?: string;
38
+ flexDirection?: string;
39
+ flexWrap?: string;
40
+ justifyContent?: string;
41
+ gap?: string;
42
+ marginBottom?: string;
43
+ lineHeight?: string;
44
+ letterSpacing?: string;
45
+ marginTop?: string;
46
+ gradient?: TextGradient;
47
+ }
48
+ export interface CssContext {
49
+ variables: Map<string, string>;
50
+ classColors: Map<string, string>;
51
+ calloutStyles: Map<string, CalloutStyle>;
52
+ classStyles: Map<string, ClassStyle>;
53
+ elementStyles: Map<string, ClassStyle>;
54
+ nestedStyles: Map<string, Map<string, ClassStyle>>;
55
+ }
56
+ /**
57
+ * Remove @media blocks from CSS text by tracking brace nesting.
58
+ * This properly handles nested braces within media queries.
59
+ */
60
+ export declare function removeMediaQueries(cssText: string): string;
61
+ export declare function parseCssContext(doc: Document): CssContext;
62
+ /**
63
+ * Get merged styles for an element by combining all its class styles.
64
+ * Later classes override earlier ones.
65
+ * Also checks element type selectors as a base layer.
66
+ *
67
+ * @param element The element to get styles for
68
+ * @param cssContext The CSS context
69
+ * @param parentElement Optional parent element for nested style lookups
70
+ */
71
+ export declare function getElementStyles(element: Element, cssContext: CssContext, parentElement?: Element): ClassStyle;
72
+ /**
73
+ * Get color for an element by checking its classes against parsed CSS rules.
74
+ */
75
+ export declare function getColorFromClasses(element: Element, cssContext: CssContext): string | undefined;
76
+ /**
77
+ * Extract the text color from an element's inline style, CSS class rules, or computed style.
78
+ * Checks inline style first, then CSS class rules, then element type rules, then computed style if available.
79
+ * Returns the actual color from the HTML - does NOT filter out any colors.
80
+ * Per the skill rules: ALL styling values MUST be extracted from HTML, never filtered.
81
+ */
82
+ export declare function extractTextColor(element: Element, cssContext?: CssContext): string | undefined;
83
+ /**
84
+ * Extract border color from a border shorthand or border-color property.
85
+ * Also handles borderLeft, borderRight, borderTop, borderBottom.
86
+ */
87
+ export declare function extractBorderColorFromStyle(style: ClassStyle): string | undefined;
88
+ /**
89
+ * Check if an element has a border-bottom style that should become a horizontal rule.
90
+ * Returns the border color if found, undefined otherwise.
91
+ */
92
+ export declare function extractBorderBottomColor(element: Element, cssContext: CssContext): string | undefined;
93
+ /**
94
+ * Extract color from a border-top CSS property on an element.
95
+ * Checks inline styles and CSS classes, and resolves CSS variables.
96
+ */
97
+ export declare function extractBorderTopColor(element: Element, cssContext: CssContext): string | undefined;
98
+ //# sourceMappingURL=parse-css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-css.d.ts","sourceRoot":"","sources":["../../../packages/docs/parse-css.ts"],"names":[],"mappings":"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"}