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.
- package/dist/bundle.js +3189 -1238
- package/dist/bundle.min.js +101 -99
- package/dist/cli.js +2653 -1117
- package/dist/packages/cli/commands/export-docs.d.ts.map +1 -1
- package/dist/packages/cli/commands/export-docs.js +131 -2
- package/dist/packages/cli/commands/export-docs.js.map +1 -1
- package/dist/packages/cli/commands/export-slides.d.ts.map +1 -1
- package/dist/packages/cli/commands/export-slides.js +25 -1
- package/dist/packages/cli/commands/export-slides.js.map +1 -1
- package/dist/packages/docs/common.d.ts +10 -0
- package/dist/packages/docs/common.d.ts.map +1 -1
- package/dist/packages/docs/common.js.map +1 -1
- package/dist/packages/docs/convert.d.ts.map +1 -1
- package/dist/packages/docs/convert.js +246 -218
- package/dist/packages/docs/convert.js.map +1 -1
- package/dist/packages/docs/create-document.d.ts.map +1 -1
- package/dist/packages/docs/create-document.js +43 -3
- package/dist/packages/docs/create-document.js.map +1 -1
- package/dist/packages/docs/export.d.ts +9 -8
- package/dist/packages/docs/export.d.ts.map +1 -1
- package/dist/packages/docs/export.js +23 -36
- package/dist/packages/docs/export.js.map +1 -1
- package/dist/packages/docs/parse-colors.d.ts +37 -0
- package/dist/packages/docs/parse-colors.d.ts.map +1 -0
- package/dist/packages/docs/parse-colors.js +507 -0
- package/dist/packages/docs/parse-colors.js.map +1 -0
- package/dist/packages/docs/parse-css.d.ts +98 -0
- package/dist/packages/docs/parse-css.d.ts.map +1 -0
- package/dist/packages/docs/parse-css.js +1592 -0
- package/dist/packages/docs/parse-css.js.map +1 -0
- package/dist/packages/docs/parse-helpers.d.ts +45 -0
- package/dist/packages/docs/parse-helpers.d.ts.map +1 -0
- package/dist/packages/docs/parse-helpers.js +214 -0
- package/dist/packages/docs/parse-helpers.js.map +1 -0
- package/dist/packages/docs/parse-inline.d.ts +41 -0
- package/dist/packages/docs/parse-inline.d.ts.map +1 -0
- package/dist/packages/docs/parse-inline.js +473 -0
- package/dist/packages/docs/parse-inline.js.map +1 -0
- package/dist/packages/docs/parse-layout.d.ts +57 -0
- package/dist/packages/docs/parse-layout.d.ts.map +1 -0
- package/dist/packages/docs/parse-layout.js +295 -0
- package/dist/packages/docs/parse-layout.js.map +1 -0
- package/dist/packages/docs/parse-special.d.ts +51 -0
- package/dist/packages/docs/parse-special.d.ts.map +1 -0
- package/dist/packages/docs/parse-special.js +251 -0
- package/dist/packages/docs/parse-special.js.map +1 -0
- package/dist/packages/docs/parse-units.d.ts +68 -0
- package/dist/packages/docs/parse-units.d.ts.map +1 -0
- package/dist/packages/docs/parse-units.js +275 -0
- package/dist/packages/docs/parse-units.js.map +1 -0
- package/dist/packages/docs/parse.d.ts.map +1 -1
- package/dist/packages/docs/parse.js +957 -2800
- package/dist/packages/docs/parse.js.map +1 -1
- package/dist/packages/slides/common.d.ts +7 -0
- package/dist/packages/slides/common.d.ts.map +1 -1
- package/dist/packages/slides/convert.d.ts.map +1 -1
- package/dist/packages/slides/convert.js +92 -7
- package/dist/packages/slides/convert.js.map +1 -1
- package/dist/packages/slides/parse.d.ts.map +1 -1
- package/dist/packages/slides/parse.js +723 -40
- package/dist/packages/slides/parse.js.map +1 -1
- package/dist/packages/slides/transform.d.ts.map +1 -1
- package/dist/packages/slides/transform.js +12 -7
- package/dist/packages/slides/transform.js.map +1 -1
- 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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"}
|