UNPKG

@lobehub/ui

Version:

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

1 lines 2.23 kB
{"version":3,"file":"StaticRenderer.mjs","names":[],"sources":["../../../src/Highlighter/SyntaxHighlighter/StaticRenderer.tsx"],"sourcesContent":["'use client';\n\nimport { CSSProperties, memo } from 'react';\nimport type { BuiltinTheme } from 'shiki';\n\nimport { useHighlight } from '@/hooks/useHighlight';\n\ninterface StaticRendererProps {\n children: string;\n className?: string;\n enableTransformer?: boolean;\n fallbackClassName?: string;\n language: string;\n style?: CSSProperties;\n theme?: BuiltinTheme;\n}\n\n// Escape HTML for fallback to prevent XSS\nconst escapeHtml = (str: string) =>\n str\n .replaceAll('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\n .replaceAll('\"', '&quot;')\n .replaceAll(\"'\", '&#039;');\n\n/**\n * Static renderer for syntax highlighting without animation\n * Uses useHighlight hook to generate HTML and renders it directly\n */\nconst StaticRenderer = memo<StaticRendererProps>(\n ({ children, className, enableTransformer, fallbackClassName, language, style, theme }) => {\n // Safely handle empty or invalid children\n const safeChildren = children ?? '';\n\n const data = useHighlight(safeChildren, {\n enableTransformer,\n language,\n theme,\n });\n\n const hasData = typeof data === 'string' && data.length > 0;\n const containerClassName = hasData ? className : fallbackClassName;\n\n return (\n <div\n className={containerClassName}\n dangerouslySetInnerHTML={{\n __html: data || `<pre><code>${escapeHtml(safeChildren)}</code></pre>`,\n }}\n dir=\"ltr\"\n style={style}\n />\n );\n },\n);\n\nStaticRenderer.displayName = 'StaticRenderer';\n\nexport default StaticRenderer;\n"],"mappings":";;;;;;;AAkBA,MAAM,cAAc,QAClB,IACG,WAAW,KAAK,QAAQ,CACxB,WAAW,KAAK,OAAO,CACvB,WAAW,KAAK,OAAO,CACvB,WAAW,MAAK,SAAS,CACzB,WAAW,KAAK,SAAS;;;;;AAM9B,MAAM,iBAAiB,MACpB,EAAE,UAAU,WAAW,mBAAmB,mBAAmB,UAAU,OAAO,YAAY;CAEzF,MAAM,eAAe,YAAY;CAEjC,MAAM,OAAO,aAAa,cAAc;EACtC;EACA;EACA;EACD,CAAC;AAKF,QACE,oBAAC;EACC,WALY,OAAO,SAAS,YAAY,KAAK,SAAS,IACrB,YAAY;EAK7C,yBAAyB,EACvB,QAAQ,QAAQ,cAAc,WAAW,aAAa,CAAC,gBACxD;EACD,KAAI;EACG;GACP;EAGP;AAED,eAAe,cAAc;AAE7B,6BAAe"}