import { eventHandler, setResponseHeader, defaultContentType } from 'h3'; import { renderToString, renderToStaticMarkup } from 'react-dom/server'; import React from 'react'; import SvgPreview from '~/.vitepress/lib/SvgPreview/index.tsx'; import iconNodes from '~/.vitepress/data/iconNodes'; import createLucideIcon from 'lucide-react/src/createLucideIcon'; import Backdrop from '~/.vitepress/lib/SvgPreview/Backdrop.tsx'; export default eventHandler((event) => { const { params } = event.context; const pathData = params.data.split('/'); const data = pathData.at(-1).slice(0, -4); const [name] = pathData; const src = Buffer.from(data, 'base64').toString('utf8').replaceAll('\n', ''); const width = parseInt((src.includes(' arr.slice(0, idx + 1).join('-')) .reverse() .find((groupName) => groupName in iconNodes); if (!(name in iconNodes) && backdropName) { const iconNode = iconNodes[backdropName]; const LucideIcon = createLucideIcon(backdropName, iconNode); const svg = renderToStaticMarkup(); const backdropString = svg.replaceAll('\n', '').replace(/]*>|<\/svg>/g, ''); children.push( ]*>|<\/svg>/g, '')} color="#777" />, ); } defaultContentType(event, 'image/svg+xml'); setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000'); return renderToString( ]*>|<\/svg>/g, '')} showGrid height={height} width={width} > {children} , ); });