{"version":3,"file":"StaticMermaid.mjs","names":[],"sources":["../../../src/Mermaid/SyntaxMermaid/StaticMermaid.tsx"],"sourcesContent":["'use client';\n\nimport { type Ref } from 'react';\nimport { memo, useMemo } from 'react';\n\nimport { useMermaid } from '@/hooks/useMermaid';\n\nimport { mermaidThemes } from '../const';\nimport { type SyntaxMermaidProps } from '../type';\nimport MermaidFallback from './MermaidFallback';\nimport MermaidSvg from './MermaidSvg';\n\ninterface StaticMermaidProps {\n  children: string;\n  className?: string;\n  fallbackClassName?: string;\n  ref?: Ref<HTMLDivElement>;\n  style?: SyntaxMermaidProps['style'];\n  theme?: SyntaxMermaidProps['theme'];\n  variant?: SyntaxMermaidProps['variant'];\n}\n\nconst StaticMermaid = memo<StaticMermaidProps>(\n  ({ children, className, fallbackClassName, ref, style, theme: customTheme, variant }) => {\n    const safeChildren = children ?? '';\n    const isDefaultTheme = customTheme === 'lobe-theme' || !customTheme;\n\n    const background = useMemo(() => {\n      if (isDefaultTheme) return;\n      return mermaidThemes.find((item) => item.id === customTheme)?.background;\n    }, [isDefaultTheme, customTheme]);\n\n    const { svg, error, loading } = useMermaid(safeChildren, {\n      theme: isDefaultTheme ? undefined : customTheme,\n    });\n\n    const containerStyle = {\n      background: variant === 'filled' ? background : undefined,\n      margin: 0,\n      minWidth: 300,\n      padding: variant === 'borderless' ? 0 : 16,\n      position: 'relative' as const,\n      width: '100%',\n      ...style,\n    };\n\n    if (error && !loading) {\n      return (\n        <MermaidFallback className={fallbackClassName} message={error} style={style}>\n          {safeChildren}\n        </MermaidFallback>\n      );\n    }\n\n    if (!svg) {\n      return (\n        <div className={fallbackClassName} style={style}>\n          <div style={{ padding: 16 }}>Loading...</div>\n        </div>\n      );\n    }\n\n    return <MermaidSvg className={className} ref={ref} style={containerStyle} svg={svg} />;\n  },\n);\n\nStaticMermaid.displayName = 'StaticMermaid';\n\nexport default StaticMermaid;\n"],"mappings":";;;;;;;;AAsBA,MAAM,gBAAgB,MACnB,EAAE,UAAU,WAAW,mBAAmB,KAAK,OAAO,OAAO,aAAa,cAAc;CACvF,MAAM,eAAe,YAAY;CACjC,MAAM,iBAAiB,gBAAgB,gBAAgB,CAAC;CAExD,MAAM,aAAa,cAAc;EAC/B,IAAI,gBAAgB;EACpB,OAAO,cAAc,MAAM,SAAS,KAAK,OAAO,WAAW,CAAC,EAAE;CAChE,GAAG,CAAC,gBAAgB,WAAW,CAAC;CAEhC,MAAM,EAAE,KAAK,OAAO,YAAY,WAAW,cAAc,EACvD,OAAO,iBAAiB,KAAA,IAAY,YACtC,CAAC;CAED,MAAM,iBAAiB;EACrB,YAAY,YAAY,WAAW,aAAa,KAAA;EAChD,QAAQ;EACR,UAAU;EACV,SAAS,YAAY,eAAe,IAAI;EACxC,UAAU;EACV,OAAO;EACP,GAAG;CACL;CAEA,IAAI,SAAS,CAAC,SACZ,OACE,oBAAC,iBAAD;EAAiB,WAAW;EAAmB,SAAS;EAAc;EACnE,UAAA;CACc,CAAA;CAIrB,IAAI,CAAC,KACH,OACE,oBAAC,OAAD;EAAK,WAAW;EAA0B;EACxC,UAAA,oBAAC,OAAD;GAAK,OAAO,EAAE,SAAS,GAAG;GAAG,UAAA;EAAe,CAAA;CACzC,CAAA;CAIT,OAAO,oBAAC,YAAD;EAAuB;EAAgB;EAAK,OAAO;EAAqB;CAAM,CAAA;AACvF,CACF;AAEA,cAAc,cAAc"}