{"version":3,"file":"StaticRenderer.mjs","names":[],"sources":["../../../src/Highlighter/SyntaxHighlighter/StaticRenderer.tsx"],"sourcesContent":["'use client';\n\nimport { type 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        dir=\"ltr\"\n        style={style}\n        dangerouslySetInnerHTML={{\n          __html: data || `<pre><code>${escapeHtml(safeChildren)}</code></pre>`,\n        }}\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,OAAD;EACE,WALY,OAAO,SAAS,YAAY,KAAK,SAAS,IACrB,YAAY;EAK7C,KAAI;EACG;EACP,yBAAyB,EACvB,QAAQ,QAAQ,cAAc,WAAW,aAAa,CAAC,gBACxD;EACD,CAAA;EAGP;AAED,eAAe,cAAc"}