diff --git a/packages/pdf/src/templates/shared/icon-size.ts b/packages/pdf/src/templates/shared/icon-size.ts index 16ab5a2cf..eee86ce5b 100644 --- a/packages/pdf/src/templates/shared/icon-size.ts +++ b/packages/pdf/src/templates/shared/icon-size.ts @@ -2,10 +2,10 @@ import type { Style } from "@react-pdf/types"; import type { StyleInput } from "./styles"; import { composeStyles } from "./styles"; -const parseFiniteNumber = (value: unknown): number | undefined => +export const parseFiniteNumber = (value: unknown): number | undefined => typeof value === "number" && Number.isFinite(value) ? value : undefined; -const parsePxValue = (value: unknown): number | undefined => { +export const parsePxValue = (value: unknown): number | undefined => { if (typeof value !== "string" || !value.endsWith("px")) return undefined; const parsedValue = Number.parseFloat(value); diff --git a/packages/pdf/src/templates/shared/rich-text-spacing.ts b/packages/pdf/src/templates/shared/rich-text-spacing.ts index 8d920328f..a2bedbe5f 100644 --- a/packages/pdf/src/templates/shared/rich-text-spacing.ts +++ b/packages/pdf/src/templates/shared/rich-text-spacing.ts @@ -1,6 +1,7 @@ import type { Style } from "@react-pdf/types"; import type { StyleInput } from "./styles"; import { NodeType } from "node-html-parser"; +import { parseFiniteNumber, parsePxValue, parseStyleFontSize } from "./icon-size"; import { composeStyles } from "./styles"; type RichTextSpacingElement = { @@ -18,19 +19,6 @@ type RichTextProseSpacing = { listItem: Style; }; -const parseFiniteNumber = (value: unknown): number | undefined => - typeof value === "number" && Number.isFinite(value) ? value : undefined; - -const parsePxValue = (value: unknown): number | undefined => { - if (typeof value !== "string" || !value.endsWith("px")) return undefined; - - const parsedValue = Number.parseFloat(value); - return Number.isFinite(parsedValue) ? parsedValue : undefined; -}; - -const parseFontSize = (fontSize: Style["fontSize"]): number | undefined => - parseFiniteNumber(fontSize) ?? parsePxValue(fontSize); - const parseLineHeight = ( lineHeight: Style["lineHeight"], ): { type: "multiplier" | "absolute"; value: number } | undefined => { @@ -129,7 +117,7 @@ export const resolveRichTextBodyLineHeight = (...styles: StyleInput[]): number | let bodyLineHeight: ReturnType; for (const style of composeStyles(...styles)) { - const fontSize = parseFontSize(style.fontSize); + const fontSize = parseStyleFontSize(style.fontSize); if (fontSize !== undefined) bodyFontSize = fontSize; const lineHeight = parseLineHeight(style.lineHeight);