UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

1 lines 1.69 kB
{"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,OAAO;AAC9C,SAAQ,MAAM;AACd,SAAQ,OAAO;AACf,QAAO;;AAOT,MAAM,aAAa,MAAuB,EAAE,UAAU;CACpD,MAAM,aAAa,OAA+B,KAAK;AAEvD,iBAAgB;EAEd,MAAM,UAAUA,gBAAc,IAAI;AAClC,WAAS,KAAK,OAAO,QAAQ;AAC7B,aAAW,UAAU;EAGrB,MAAM,oBAAoB,QAAQ,MAAM,4BAA4B,MAAM;AAC1E,UAAQ,iBAAiB,SAAS,YAAY;AAI9C,eAAa;AACX,WAAQ,oBAAoB,SAAS,YAAY;AACjD,WAAQ,QAAQ;AAChB,cAAW,UAAU;;IAEtB,CAAC,IAAI,CAAC;AAET,QAAO;EACP;AAEF,WAAW,cAAc;AAEzB,yBAAe"}