UNPKG

@lobehub/ui

Version:

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

1 lines 4.98 kB
{"version":3,"file":"Mermaid.mjs","names":["CopyButton","SyntaxMermaid","FullFeatured","Flexbox","Tag"],"sources":["../../src/Mermaid/Mermaid.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { memo, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { styles, variants } from '@/Highlighter/style';\nimport Tag from '@/Tag';\n\nimport FullFeatured from './FullFeatured';\nimport SyntaxMermaid from './SyntaxMermaid';\nimport { MermaidProps } from './type';\n\nconst Mermaid = memo<MermaidProps>(\n ({\n actionIconSize,\n animated,\n bodyRender,\n children,\n classNames,\n className,\n copyable = true,\n defaultExpand = true,\n fileName,\n fullFeatured,\n language = 'mermaid',\n actionsRender,\n shadow,\n showLanguage = true,\n style,\n styles: customStyles,\n theme,\n variant = 'filled',\n ...rest\n }) => {\n const tirmedChildren = children.trim();\n const copyContentRef = useRef(tirmedChildren);\n\n useEffect(() => {\n copyContentRef.current = tirmedChildren;\n }, [tirmedChildren]);\n\n const getCopyContent = useCallback(() => copyContentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return (\n <CopyButton content={getCopyContent} size={actionIconSize || { blockSize: 28, size: 16 }} />\n );\n }, [actionIconSize, copyable, getCopyContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize,\n content: tirmedChildren,\n getContent: getCopyContent,\n originalNode: originalActions,\n });\n }, [actionIconSize, actionsRender, getCopyContent, originalActions, tirmedChildren]);\n\n const defaultBody = useMemo(\n () => (\n <SyntaxMermaid\n animated={animated}\n className={classNames?.content}\n style={customStyles?.content}\n theme={theme}\n variant={variant}\n >\n {tirmedChildren}\n </SyntaxMermaid>\n ),\n [animated, theme, tirmedChildren, variant, classNames?.content, customStyles?.content],\n );\n\n const body = useMemo(() => {\n if (!bodyRender) return defaultBody;\n return bodyRender({ content: tirmedChildren, originalNode: defaultBody });\n }, [bodyRender, defaultBody, tirmedChildren]);\n\n if (fullFeatured)\n return (\n <FullFeatured\n actionsRender={actionsRender}\n className={className}\n classNames={classNames}\n content={tirmedChildren}\n copyable={copyable}\n defaultExpand={defaultExpand}\n fileName={fileName}\n language={language}\n shadow={shadow}\n showLanguage={showLanguage}\n style={style}\n styles={customStyles}\n variant={variant}\n {...rest}\n >\n {body}\n </FullFeatured>\n );\n\n return (\n <div\n className={cx(variants({ shadow, variant }), className)}\n data-code-type=\"mermaid\"\n style={style}\n {...rest}\n >\n <Flexbox align={'center'} className={styles.actions} flex={'none'} gap={4} horizontal>\n {actions}\n </Flexbox>\n {showLanguage && <Tag className={styles.lang}>{language.toLowerCase()}</Tag>}\n {body}\n </div>\n );\n },\n);\n\nMermaid.displayName = 'Mermaid';\n\nexport default Mermaid;\n\nexport { type MermaidProps } from './type';\n"],"mappings":";;;;;;;;;;;;;AAcA,MAAM,UAAU,MACb,EACC,gBACA,UACA,YACA,UACA,YACA,WACA,WAAW,MACX,gBAAgB,MAChB,UACA,cACA,WAAW,WACX,eACA,QACA,eAAe,MACf,OACA,QAAQ,cACR,OACA,UAAU,UACV,GAAG,WACC;CACJ,MAAM,iBAAiB,SAAS,MAAM;CACtC,MAAM,iBAAiB,OAAO,eAAe;AAE7C,iBAAgB;AACd,iBAAe,UAAU;IACxB,CAAC,eAAe,CAAC;CAEpB,MAAM,iBAAiB,kBAAkB,eAAe,SAAS,EAAE,CAAC;CAEpE,MAAM,kBAAkB,cAAc;AACpC,MAAI,CAAC,SAAU,QAAO;AACtB,SACE,oBAACA;GAAW,SAAS;GAAgB,MAAM,kBAAkB;IAAE,WAAW;IAAI,MAAM;IAAI;IAAI;IAE7F;EAAC;EAAgB;EAAU;EAAe,CAAC;CAE9C,MAAM,UAAU,cAAc;AAC5B,MAAI,CAAC,cAAe,QAAO;AAC3B,SAAO,cAAc;GACnB;GACA,SAAS;GACT,YAAY;GACZ,cAAc;GACf,CAAC;IACD;EAAC;EAAgB;EAAe;EAAgB;EAAiB;EAAe,CAAC;CAEpF,MAAM,cAAc,cAEhB,oBAACC;EACW;EACV,WAAW,YAAY;EACvB,OAAO,cAAc;EACd;EACE;YAER;GACa,EAElB;EAAC;EAAU;EAAO;EAAgB;EAAS,YAAY;EAAS,cAAc;EAAQ,CACvF;CAED,MAAM,OAAO,cAAc;AACzB,MAAI,CAAC,WAAY,QAAO;AACxB,SAAO,WAAW;GAAE,SAAS;GAAgB,cAAc;GAAa,CAAC;IACxE;EAAC;EAAY;EAAa;EAAe,CAAC;AAE7C,KAAI,aACF,QACE,oBAACC;EACgB;EACJ;EACC;EACZ,SAAS;EACC;EACK;EACL;EACA;EACF;EACM;EACP;EACP,QAAQ;EACC;EACT,GAAI;YAEH;GACY;AAGnB,QACE,qBAAC;EACC,WAAW,GAAG,SAAS;GAAE;GAAQ;GAAS,CAAC,EAAE,UAAU;EACvD,kBAAe;EACR;EACP,GAAI;;GAEJ,oBAACC;IAAQ,OAAO;IAAU,WAAW,OAAO;IAAS,MAAM;IAAQ,KAAK;IAAG;cACxE;KACO;GACT,gBAAgB,oBAACC;IAAI,WAAW,OAAO;cAAO,SAAS,aAAa;KAAO;GAC3E;;GACG;EAGX;AAED,QAAQ,cAAc;AAEtB,sBAAe"}