docgen-utils 1.0.12 → 1.0.14
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 +3221 -1225
- package/dist/bundle.min.js +100 -98
- package/dist/cli.js +26687 -1208
- package/dist/packages/cli/commands/export-docs.d.ts +10 -1
- package/dist/packages/cli/commands/export-docs.d.ts.map +1 -1
- package/dist/packages/cli/commands/export-docs.js +352 -5
- package/dist/packages/cli/commands/export-docs.js.map +1 -1
- package/dist/packages/cli/commands/export-slides.d.ts +1 -1
- package/dist/packages/cli/commands/export-slides.d.ts.map +1 -1
- package/dist/packages/cli/commands/export-slides.js +89 -8
- package/dist/packages/cli/commands/export-slides.js.map +1 -1
- package/dist/packages/cli/commands/import-docx.d.ts +1 -1
- package/dist/packages/cli/commands/import-docx.d.ts.map +1 -1
- package/dist/packages/cli/commands/import-docx.js +3 -3
- package/dist/packages/cli/commands/import-docx.js.map +1 -1
- package/dist/packages/cli/commands/import-pptx.d.ts +1 -1
- package/dist/packages/cli/commands/import-pptx.d.ts.map +1 -1
- package/dist/packages/cli/commands/import-pptx.js +2 -2
- package/dist/packages/cli/commands/import-pptx.js.map +1 -1
- package/dist/packages/cli/index.js +14 -8
- package/dist/packages/cli/index.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 +220 -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/createPresentation.d.ts.map +1 -1
- package/dist/packages/slides/createPresentation.js +20 -0
- package/dist/packages/slides/createPresentation.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 +57 -7
- package/dist/packages/slides/transform.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse a CSS length value to twips.
|
|
3
|
+
* Supports: px, rem, em, pt
|
|
4
|
+
* Returns undefined if parsing fails.
|
|
5
|
+
*
|
|
6
|
+
* Conversions:
|
|
7
|
+
* - 1 inch = 1440 twips
|
|
8
|
+
* - 1 point = 20 twips
|
|
9
|
+
* - 1 rem = 16px (assumed base)
|
|
10
|
+
* - 1px ≈ 0.75pt ≈ 15 twips
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseCssLengthToTwips(value: string): number | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Parse CSS padding shorthand into individual values in twips.
|
|
15
|
+
* Supports: "value", "vertical horizontal", "top horizontal bottom", "top right bottom left"
|
|
16
|
+
* Returns object with top, right, bottom, left in twips.
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseCssPaddingToTwips(padding: string): {
|
|
19
|
+
top?: number;
|
|
20
|
+
right?: number;
|
|
21
|
+
bottom?: number;
|
|
22
|
+
left?: number;
|
|
23
|
+
} | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Extract the left value from a CSS padding shorthand.
|
|
26
|
+
* e.g., "10px 20px" → "20px", "10px 20px 15px 30px" → "30px"
|
|
27
|
+
*/
|
|
28
|
+
export declare function extractPaddingLeft(padding?: string): string | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* GENERALIZED: Convert CSS font-size value to DOCX half-points.
|
|
31
|
+
* CSS font-size values: "0.875rem", "14px", "12pt", "1.5rem"
|
|
32
|
+
* DOCX size is in half-points (1pt = 2 half-points)
|
|
33
|
+
* Default browser font-size is 16px = 12pt = 24 half-points
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseFontSizeToHalfPoints(fontSize: string): number | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* GENERALIZED: Convert CSS margin/spacing value to DOCX twips.
|
|
38
|
+
* CSS margin values: "0.5rem", "8px", "6pt", "1rem"
|
|
39
|
+
* DOCX spacing is in twips (1 inch = 1440 twips, 1pt = 20 twips)
|
|
40
|
+
* Default browser font-size is 16px = 12pt
|
|
41
|
+
* 1rem = 16px = 12pt = 240 twips
|
|
42
|
+
*/
|
|
43
|
+
export declare function parseMarginToTwips(margin: string): number | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Convert CSS letter-spacing value to DOCX characterSpacing (in twips).
|
|
46
|
+
* CSS letter-spacing: "0.05em", "1px", "0.1rem", "0.5pt", "normal"
|
|
47
|
+
* DOCX characterSpacing is in twips (1/20 of a point).
|
|
48
|
+
* "normal" or "0" = no extra spacing.
|
|
49
|
+
*
|
|
50
|
+
* Common CSS values:
|
|
51
|
+
* - 0.05em ≈ 0.6pt ≈ 12 twips (subtle tracking)
|
|
52
|
+
* - 0.1em ≈ 1.2pt ≈ 24 twips (moderate tracking)
|
|
53
|
+
* - 1px ≈ 0.75pt ≈ 15 twips
|
|
54
|
+
* - 0.1rem ≈ 1.6px ≈ 1.2pt ≈ 24 twips
|
|
55
|
+
*/
|
|
56
|
+
export declare function parseLetterSpacingToTwips(letterSpacing: string): number | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* GENERALIZED: Convert CSS line-height value to DOCX line spacing.
|
|
59
|
+
* CSS line-height: "1.3", "1.7", "24px", "1.5em", "normal"
|
|
60
|
+
* DOCX line spacing with LineRuleType.AUTO uses "240ths of a line"
|
|
61
|
+
* where 240 = single spacing (1.0), 360 = 1.5, 480 = double (2.0)
|
|
62
|
+
* Formula: lineHeight * 240 = DOCX line value
|
|
63
|
+
*
|
|
64
|
+
* @param lineHeight CSS line-height value
|
|
65
|
+
* @param fontSize Optional font size in half-points for px conversion (e.g., 24 = 12pt)
|
|
66
|
+
*/
|
|
67
|
+
export declare function parseLineHeightToDocx(lineHeight: string, fontSize?: number): number | undefined;
|
|
68
|
+
//# sourceMappingURL=parse-units.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-units.d.ts","sourceRoot":"","sources":["../../../packages/docs/parse-units.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAkBvE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAwBpI;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUvE;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA8B9E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiCrE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgCnF;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA6D/F"}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse a CSS length value to twips.
|
|
3
|
+
* Supports: px, rem, em, pt
|
|
4
|
+
* Returns undefined if parsing fails.
|
|
5
|
+
*
|
|
6
|
+
* Conversions:
|
|
7
|
+
* - 1 inch = 1440 twips
|
|
8
|
+
* - 1 point = 20 twips
|
|
9
|
+
* - 1 rem = 16px (assumed base)
|
|
10
|
+
* - 1px ≈ 0.75pt ≈ 15 twips
|
|
11
|
+
*/
|
|
12
|
+
export function parseCssLengthToTwips(value) {
|
|
13
|
+
const match = value.trim().match(/^(-?[0-9.]+)(px|rem|em|pt)?$/);
|
|
14
|
+
if (!match)
|
|
15
|
+
return undefined;
|
|
16
|
+
const num = parseFloat(match[1]);
|
|
17
|
+
const unit = match[2] || 'px';
|
|
18
|
+
switch (unit) {
|
|
19
|
+
case 'px':
|
|
20
|
+
return Math.round(num * 15); // 1px ≈ 15 twips
|
|
21
|
+
case 'rem':
|
|
22
|
+
case 'em':
|
|
23
|
+
return Math.round(num * 16 * 15); // 1rem = 16px = 240 twips
|
|
24
|
+
case 'pt':
|
|
25
|
+
return Math.round(num * 20); // 1pt = 20 twips
|
|
26
|
+
default:
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parse CSS padding shorthand into individual values in twips.
|
|
32
|
+
* Supports: "value", "vertical horizontal", "top horizontal bottom", "top right bottom left"
|
|
33
|
+
* Returns object with top, right, bottom, left in twips.
|
|
34
|
+
*/
|
|
35
|
+
export function parseCssPaddingToTwips(padding) {
|
|
36
|
+
const parts = padding.trim().split(/\s+/);
|
|
37
|
+
if (parts.length === 0)
|
|
38
|
+
return undefined;
|
|
39
|
+
const values = parts.map(p => parseCssLengthToTwips(p)).filter(v => v !== undefined);
|
|
40
|
+
if (values.length === 0)
|
|
41
|
+
return undefined;
|
|
42
|
+
// CSS shorthand rules:
|
|
43
|
+
// 1 value: all sides
|
|
44
|
+
// 2 values: vertical horizontal
|
|
45
|
+
// 3 values: top horizontal bottom
|
|
46
|
+
// 4 values: top right bottom left
|
|
47
|
+
switch (values.length) {
|
|
48
|
+
case 1:
|
|
49
|
+
return { top: values[0], right: values[0], bottom: values[0], left: values[0] };
|
|
50
|
+
case 2:
|
|
51
|
+
return { top: values[0], right: values[1], bottom: values[0], left: values[1] };
|
|
52
|
+
case 3:
|
|
53
|
+
return { top: values[0], right: values[1], bottom: values[2], left: values[1] };
|
|
54
|
+
case 4:
|
|
55
|
+
return { top: values[0], right: values[1], bottom: values[2], left: values[3] };
|
|
56
|
+
default:
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Extract the left value from a CSS padding shorthand.
|
|
62
|
+
* e.g., "10px 20px" → "20px", "10px 20px 15px 30px" → "30px"
|
|
63
|
+
*/
|
|
64
|
+
export function extractPaddingLeft(padding) {
|
|
65
|
+
if (!padding)
|
|
66
|
+
return undefined;
|
|
67
|
+
const parts = padding.trim().split(/\s+/);
|
|
68
|
+
switch (parts.length) {
|
|
69
|
+
case 1: return parts[0]; // All sides same
|
|
70
|
+
case 2: return parts[1]; // vertical horizontal → horizontal is left
|
|
71
|
+
case 3: return parts[1]; // top horizontal bottom → horizontal is left
|
|
72
|
+
case 4: return parts[3]; // top right bottom left → last is left
|
|
73
|
+
default: return undefined;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* GENERALIZED: Convert CSS font-size value to DOCX half-points.
|
|
78
|
+
* CSS font-size values: "0.875rem", "14px", "12pt", "1.5rem"
|
|
79
|
+
* DOCX size is in half-points (1pt = 2 half-points)
|
|
80
|
+
* Default browser font-size is 16px = 12pt = 24 half-points
|
|
81
|
+
*/
|
|
82
|
+
export function parseFontSizeToHalfPoints(fontSize) {
|
|
83
|
+
if (!fontSize)
|
|
84
|
+
return undefined;
|
|
85
|
+
const fs = fontSize.trim();
|
|
86
|
+
if (fs.endsWith("rem")) {
|
|
87
|
+
// rem relative to 16px base, convert to points then half-points
|
|
88
|
+
// 1rem = 16px = 12pt = 24 half-points
|
|
89
|
+
const remValue = parseFloat(fs);
|
|
90
|
+
if (!isNaN(remValue)) {
|
|
91
|
+
return Math.round(remValue * 12 * 2);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else if (fs.endsWith("em")) {
|
|
95
|
+
// em relative to parent, assume 16px base
|
|
96
|
+
const emValue = parseFloat(fs);
|
|
97
|
+
if (!isNaN(emValue)) {
|
|
98
|
+
return Math.round(emValue * 12 * 2);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else if (fs.endsWith("px")) {
|
|
102
|
+
// px to points: 1px = 0.75pt, then to half-points
|
|
103
|
+
const pxValue = parseFloat(fs);
|
|
104
|
+
if (!isNaN(pxValue)) {
|
|
105
|
+
return Math.round(pxValue * 0.75 * 2);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else if (fs.endsWith("pt")) {
|
|
109
|
+
const ptValue = parseFloat(fs);
|
|
110
|
+
if (!isNaN(ptValue)) {
|
|
111
|
+
return Math.round(ptValue * 2);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* GENERALIZED: Convert CSS margin/spacing value to DOCX twips.
|
|
118
|
+
* CSS margin values: "0.5rem", "8px", "6pt", "1rem"
|
|
119
|
+
* DOCX spacing is in twips (1 inch = 1440 twips, 1pt = 20 twips)
|
|
120
|
+
* Default browser font-size is 16px = 12pt
|
|
121
|
+
* 1rem = 16px = 12pt = 240 twips
|
|
122
|
+
*/
|
|
123
|
+
export function parseMarginToTwips(margin) {
|
|
124
|
+
if (!margin)
|
|
125
|
+
return undefined;
|
|
126
|
+
const m = margin.trim();
|
|
127
|
+
// Handle bare "0" without units
|
|
128
|
+
if (m === "0")
|
|
129
|
+
return 0;
|
|
130
|
+
if (m.endsWith("rem")) {
|
|
131
|
+
// rem relative to 16px base
|
|
132
|
+
// 1rem = 16px = 12pt = 240 twips
|
|
133
|
+
const remValue = parseFloat(m);
|
|
134
|
+
if (!isNaN(remValue)) {
|
|
135
|
+
return Math.round(remValue * 240);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else if (m.endsWith("em")) {
|
|
139
|
+
// em relative to parent, assume 16px base
|
|
140
|
+
const emValue = parseFloat(m);
|
|
141
|
+
if (!isNaN(emValue)) {
|
|
142
|
+
return Math.round(emValue * 240);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else if (m.endsWith("px")) {
|
|
146
|
+
// px to twips: 1px = 15 twips (1 inch = 96px = 1440 twips)
|
|
147
|
+
const pxValue = parseFloat(m);
|
|
148
|
+
if (!isNaN(pxValue)) {
|
|
149
|
+
return Math.round(pxValue * 15);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
else if (m.endsWith("pt")) {
|
|
153
|
+
// pt to twips: 1pt = 20 twips
|
|
154
|
+
const ptValue = parseFloat(m);
|
|
155
|
+
if (!isNaN(ptValue)) {
|
|
156
|
+
return Math.round(ptValue * 20);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Convert CSS letter-spacing value to DOCX characterSpacing (in twips).
|
|
163
|
+
* CSS letter-spacing: "0.05em", "1px", "0.1rem", "0.5pt", "normal"
|
|
164
|
+
* DOCX characterSpacing is in twips (1/20 of a point).
|
|
165
|
+
* "normal" or "0" = no extra spacing.
|
|
166
|
+
*
|
|
167
|
+
* Common CSS values:
|
|
168
|
+
* - 0.05em ≈ 0.6pt ≈ 12 twips (subtle tracking)
|
|
169
|
+
* - 0.1em ≈ 1.2pt ≈ 24 twips (moderate tracking)
|
|
170
|
+
* - 1px ≈ 0.75pt ≈ 15 twips
|
|
171
|
+
* - 0.1rem ≈ 1.6px ≈ 1.2pt ≈ 24 twips
|
|
172
|
+
*/
|
|
173
|
+
export function parseLetterSpacingToTwips(letterSpacing) {
|
|
174
|
+
if (!letterSpacing)
|
|
175
|
+
return undefined;
|
|
176
|
+
const ls = letterSpacing.trim();
|
|
177
|
+
if (ls === "normal" || ls === "0")
|
|
178
|
+
return undefined;
|
|
179
|
+
if (ls.endsWith("rem")) {
|
|
180
|
+
// 1rem = 16px = 12pt = 240 twips
|
|
181
|
+
const remValue = parseFloat(ls);
|
|
182
|
+
if (!isNaN(remValue)) {
|
|
183
|
+
return Math.round(remValue * 240);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
else if (ls.endsWith("em")) {
|
|
187
|
+
// em relative to font-size; assume 12pt base → 1em = 12pt = 240 twips
|
|
188
|
+
const emValue = parseFloat(ls);
|
|
189
|
+
if (!isNaN(emValue)) {
|
|
190
|
+
return Math.round(emValue * 240);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
else if (ls.endsWith("px")) {
|
|
194
|
+
// 1px = 0.75pt = 15 twips
|
|
195
|
+
const pxValue = parseFloat(ls);
|
|
196
|
+
if (!isNaN(pxValue)) {
|
|
197
|
+
return Math.round(pxValue * 15);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
else if (ls.endsWith("pt")) {
|
|
201
|
+
// 1pt = 20 twips
|
|
202
|
+
const ptValue = parseFloat(ls);
|
|
203
|
+
if (!isNaN(ptValue)) {
|
|
204
|
+
return Math.round(ptValue * 20);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return undefined;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* GENERALIZED: Convert CSS line-height value to DOCX line spacing.
|
|
211
|
+
* CSS line-height: "1.3", "1.7", "24px", "1.5em", "normal"
|
|
212
|
+
* DOCX line spacing with LineRuleType.AUTO uses "240ths of a line"
|
|
213
|
+
* where 240 = single spacing (1.0), 360 = 1.5, 480 = double (2.0)
|
|
214
|
+
* Formula: lineHeight * 240 = DOCX line value
|
|
215
|
+
*
|
|
216
|
+
* @param lineHeight CSS line-height value
|
|
217
|
+
* @param fontSize Optional font size in half-points for px conversion (e.g., 24 = 12pt)
|
|
218
|
+
*/
|
|
219
|
+
export function parseLineHeightToDocx(lineHeight, fontSize) {
|
|
220
|
+
if (!lineHeight)
|
|
221
|
+
return undefined;
|
|
222
|
+
const lh = lineHeight.trim();
|
|
223
|
+
// "normal" typically equals 1.2 in browsers
|
|
224
|
+
if (lh === "normal") {
|
|
225
|
+
return Math.round(1.2 * 240);
|
|
226
|
+
}
|
|
227
|
+
// Unitless number (e.g., "1.3", "1.7") - most common
|
|
228
|
+
const unitlessValue = parseFloat(lh);
|
|
229
|
+
if (!isNaN(unitlessValue) && !lh.match(/[a-z%]/i)) {
|
|
230
|
+
return Math.round(unitlessValue * 240);
|
|
231
|
+
}
|
|
232
|
+
// em units (e.g., "1.5em") - treat as multiplier
|
|
233
|
+
if (lh.endsWith("em")) {
|
|
234
|
+
const emValue = parseFloat(lh);
|
|
235
|
+
if (!isNaN(emValue)) {
|
|
236
|
+
return Math.round(emValue * 240);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// px units (e.g., "27.2px" from getComputedStyle)
|
|
240
|
+
// Convert to ratio using font size if available, otherwise estimate
|
|
241
|
+
if (lh.endsWith("px")) {
|
|
242
|
+
const pxValue = parseFloat(lh);
|
|
243
|
+
if (!isNaN(pxValue)) {
|
|
244
|
+
// If we have font size (in half-points), convert:
|
|
245
|
+
// fontSize in half-points / 2 = points
|
|
246
|
+
// points * 4/3 = px (approx: 1pt ≈ 1.333px)
|
|
247
|
+
// lineHeight ratio = pxValue / (fontSize/2 * 1.333)
|
|
248
|
+
if (fontSize && fontSize > 0) {
|
|
249
|
+
const fontSizePx = (fontSize / 2) * (4 / 3);
|
|
250
|
+
const ratio = pxValue / fontSizePx;
|
|
251
|
+
return Math.round(ratio * 240);
|
|
252
|
+
}
|
|
253
|
+
// Without font size, estimate using 16px base (common default)
|
|
254
|
+
// This gives us a rough ratio
|
|
255
|
+
const estimatedRatio = pxValue / 16;
|
|
256
|
+
// Only use if the ratio is reasonable (0.8 to 3.0)
|
|
257
|
+
if (estimatedRatio >= 0.8 && estimatedRatio <= 3.0) {
|
|
258
|
+
return Math.round(estimatedRatio * 240);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
// pt units (e.g., "18pt")
|
|
263
|
+
if (lh.endsWith("pt")) {
|
|
264
|
+
const ptValue = parseFloat(lh);
|
|
265
|
+
if (!isNaN(ptValue) && fontSize && fontSize > 0) {
|
|
266
|
+
// fontSize in half-points / 2 = points
|
|
267
|
+
const fontSizePt = fontSize / 2;
|
|
268
|
+
const ratio = ptValue / fontSizePt;
|
|
269
|
+
return Math.round(ratio * 240);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
// Return undefined to use default line-height
|
|
273
|
+
return undefined;
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=parse-units.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-units.js","sourceRoot":"","sources":["../../../packages/docs/parse-units.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../packages/docs/parse.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../packages/docs/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,aAAa,EAA4B,MAAM,UAAU,CAAC;AA2nBxG;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAw4D9D"}
|