Skip to content

Commit 32ea209

Browse files
authored
fix: splitting things mixed in the useFont loader function logic (#1904)
1 parent 53f8f80 commit 32ea209

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

src/core/useFont.tsx

+18-7
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,29 @@ export type FontData = {
1919
resolution: number
2020
underlineThickness: number
2121
}
22+
type FontInput = string | FontData
2223

2324
let fontLoader: FontLoader | null = null
2425

25-
async function loader(font: string | FontData) {
26-
if (!fontLoader) fontLoader = new FontLoader()
27-
let data = typeof font === 'string' ? await (await fetch(font as string)).json() : font
28-
return fontLoader.parse(data as FontData)
26+
async function loadFontData(font: FontInput): Promise<FontData> {
27+
return typeof font === 'string' ? await (await fetch(font)).json() : font
2928
}
3029

31-
export function useFont(font: string | FontData) {
30+
function parseFontData(fontData: FontData) {
31+
if (!fontLoader) {
32+
fontLoader = new FontLoader()
33+
}
34+
return fontLoader.parse(fontData)
35+
}
36+
37+
async function loader(font: FontInput) {
38+
const data = await loadFontData(font)
39+
return parseFontData(data)
40+
}
41+
42+
export function useFont(font: FontInput) {
3243
return suspend(loader, [font])
3344
}
3445

35-
useFont.preload = (font: string | FontData) => preload(loader, [font])
36-
useFont.clear = (font: string | FontData) => clear([font])
46+
useFont.preload = (font: FontInput) => preload(loader, [font])
47+
useFont.clear = (font: FontInput) => clear([font])

0 commit comments

Comments
 (0)