UNPKG

@lobehub/ui

Version:

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

1 lines 1.38 kB
{"version":3,"file":"MarkdownProvider.mjs","names":[],"sources":["../../../src/Markdown/components/MarkdownProvider.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, memo, type PropsWithChildren, use } from 'react';\n\nimport { useStableValue } from '@/hooks/useStableValue';\n\nimport { type SyntaxMarkdownProps } from '../type';\n\nexport type MarkdownContentConfig = Omit<SyntaxMarkdownProps, 'children' | 'reactMarkdownProps'>;\n\nexport const MarkdownContext = createContext<MarkdownContentConfig>({});\n\nexport const MarkdownProvider = memo<PropsWithChildren<MarkdownContentConfig>>(\n ({ children, ...config }) => {\n // The rest-spread builds a fresh object on every render while `children`\n // changes on every streamed chunk, so without stabilisation each chunk\n // swaps the context identity and re-renders every consumer inside every\n // block, bypassing the per-block memo entirely.\n const stableConfig = useStableValue(config);\n\n return <MarkdownContext value={stableConfig}>{children}</MarkdownContext>;\n },\n);\n\nexport const useMarkdownContext = () => {\n return use(MarkdownContext);\n};\n"],"mappings":";;;;;AAUA,MAAa,kBAAkB,cAAqC,CAAC,CAAC;AAEtE,MAAa,mBAAmB,MAC7B,EAAE,UAAU,GAAG,aAAa;CAK3B,MAAM,eAAe,eAAe,MAAM;CAE1C,OAAO,oBAAC,iBAAD;EAAiB,OAAO;EAAe;CAA0B,CAAA;AAC1E,CACF;AAEA,MAAa,2BAA2B;CACtC,OAAO,IAAI,eAAe;AAC5B"}