@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
1 lines • 1.69 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","names":["createElement"],"sources":["../../src/FontLoader/index.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useEffect, useRef } from 'react';\n\nconst createElement = (url: string) => {\n const element = document.createElement('link');\n element.rel = 'stylesheet';\n element.href = url;\n return element;\n};\n\nexport interface FontLoaderProps {\n url: string;\n}\n\nconst FontLoader = memo<FontLoaderProps>(({ url }) => {\n const elementRef = useRef<HTMLLinkElement | null>(null);\n\n useEffect(() => {\n // Create and append element\n const element = createElement(url);\n document.head.append(element);\n elementRef.current = element;\n\n // Optional: Add error handling\n const handleError = () => console.error(`Failed to load font from ${url}`);\n element.addEventListener('error', handleError);\n\n // Cleanup function to remove element when component unmounts\n // or when url changes\n return () => {\n element.removeEventListener('error', handleError);\n element.remove();\n elementRef.current = null;\n };\n }, [url]);\n\n return null;\n});\n\nFontLoader.displayName = 'FontLoader';\n\nexport default FontLoader;\n"],"mappings":";;;AAIA,MAAMA,mBAAiB,QAAgB;CACrC,MAAM,UAAU,SAAS,cAAc,MAAM;CAC7C,QAAQ,MAAM;CACd,QAAQ,OAAO;CACf,OAAO;AACT;AAMA,MAAM,aAAa,MAAuB,EAAE,UAAU;CACpD,MAAM,aAAa,OAA+B,IAAI;CAEtD,gBAAgB;EAEd,MAAM,UAAUA,gBAAc,GAAG;EACjC,SAAS,KAAK,OAAO,OAAO;EAC5B,WAAW,UAAU;EAGrB,MAAM,oBAAoB,QAAQ,MAAM,4BAA4B,KAAK;EACzE,QAAQ,iBAAiB,SAAS,WAAW;EAI7C,aAAa;GACX,QAAQ,oBAAoB,SAAS,WAAW;GAChD,QAAQ,OAAO;GACf,WAAW,UAAU;EACvB;CACF,GAAG,CAAC,GAAG,CAAC;CAER,OAAO;AACT,CAAC;AAED,WAAW,cAAc"}