markstream-react 0.0.20-beta.8 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,6 +12,8 @@ pnpm --filter markstream-react dev
12
12
 
13
13
  ```bash
14
14
  pnpm --filter markstream-react build
15
+ pnpm --filter markstream-react build:analyze
16
+ pnpm --filter markstream-react size:check
15
17
  ```
16
18
 
17
19
  ## Usage
@@ -29,6 +31,19 @@ export default function Article({ markdown }: { markdown: string }) {
29
31
 
30
32
  You can also pass a pre-parsed `nodes` array if you already have AST data.
31
33
 
34
+ ## Bundle size notes
35
+
36
+ - Optional peers are not bundled; install only what you use (`stream-monaco`, `stream-markdown`, `mermaid`, `katex`, etc.).
37
+ - Infrequent language icons are split into an async chunk and loaded on demand.
38
+ - To avoid first-hit fallback icons, preload once when the app is idle:
39
+
40
+ ```tsx
41
+ import { preloadExtendedLanguageIcons } from 'markstream-react'
42
+
43
+ if (typeof window !== 'undefined')
44
+ void preloadExtendedLanguageIcons()
45
+ ```
46
+
32
47
  ## Tailwind
33
48
 
34
49
  - Non-Tailwind projects: keep importing `markstream-react/index.css` (includes precompiled utilities for the renderer).
package/dist/index.d.ts CHANGED
@@ -28,6 +28,7 @@ interface NodeRendererProps {
28
28
  codeBlockMinWidth?: string | number;
29
29
  codeBlockMaxWidth?: string | number;
30
30
  codeBlockProps?: Record<string, any>;
31
+ showTooltips?: boolean;
31
32
  themes?: string[];
32
33
  isDark?: boolean;
33
34
  customId?: string;
@@ -55,6 +56,7 @@ interface RenderContext {
55
56
  typewriter?: boolean;
56
57
  customComponents?: Record<string, React.ComponentType<any>>;
57
58
  codeBlockProps?: Record<string, any>;
59
+ showTooltips?: boolean;
58
60
  codeBlockStream?: boolean;
59
61
  renderCodeBlocksAsPre?: boolean;
60
62
  codeBlockThemes?: {
@@ -122,6 +124,7 @@ interface CodeBlockNodeProps {
122
124
  showExpandButton?: boolean;
123
125
  showPreviewButton?: boolean;
124
126
  showFontSizeButtons?: boolean;
127
+ showTooltips?: boolean;
125
128
  customId?: string;
126
129
  }
127
130
  interface ImageNodeProps {
@@ -258,6 +261,14 @@ interface HtmlPreviewFrameProps {
258
261
  }
259
262
  declare function HtmlPreviewFrame(props: HtmlPreviewFrameProps): React.ReactPortal;
260
263
 
264
+ type D2Loader = () => Promise<any> | any;
265
+ declare function setD2Loader(loader: D2Loader | null): void;
266
+ declare function enableD2(loader?: D2Loader): void;
267
+ declare function disableD2(): void;
268
+ declare function isD2Enabled(): boolean;
269
+
270
+ declare function D2BlockNode(rawProps: D2BlockNodeProps): react_jsx_runtime.JSX.Element;
271
+
261
272
  declare function DefinitionListNode(props: NodeComponentProps<{
262
273
  type: 'definition_list';
263
274
  items?: any[];
@@ -328,8 +339,6 @@ interface ImageNodeReactEvents {
328
339
  }
329
340
  declare function ImageNode(rawProps: ImageNodeProps & ImageNodeReactEvents): react_jsx_runtime.JSX.Element;
330
341
 
331
- declare function D2BlockNode(rawProps: D2BlockNodeProps): react_jsx_runtime.JSX.Element;
332
-
333
342
  interface InfographicBlockNodeReactEvents {
334
343
  onCopy?: (code: string) => void;
335
344
  onExport?: (event: MermaidBlockEvent<{
@@ -415,6 +424,7 @@ interface MarkdownCodeBlockNodeProps {
415
424
  showExpandButton?: boolean;
416
425
  showPreviewButton?: boolean;
417
426
  showFontSizeButtons?: boolean;
427
+ showTooltips?: boolean;
418
428
  onCopy?: (code: string) => void;
419
429
  onPreviewCode?: (payload: {
420
430
  type: string;
@@ -540,16 +550,12 @@ declare function useSafeI18n(): {
540
550
 
541
551
  declare function renderNode(node: ParsedNode, key: React.Key, ctx: RenderContext): react_jsx_runtime.JSX.Element;
542
552
 
543
- type D2Loader = () => Promise<any> | any;
544
- declare function setD2Loader(loader: D2Loader | null): void;
545
- declare function enableD2(loader?: D2Loader): void;
546
- declare function disableD2(): void;
547
- declare function isD2Enabled(): boolean;
548
-
549
553
  type LanguageIconResolver = (lang: string) => string | undefined | null;
550
554
  declare function setLanguageIconResolver(resolver?: LanguageIconResolver | null): void;
551
555
  declare function normalizeLanguageIdentifier(lang?: string | null): string;
552
556
  declare function resolveMonacoLanguageId(lang?: string | null): string;
557
+ declare function preloadExtendedLanguageIcons(): Promise<void>;
558
+ declare function subscribeLanguageIconsRevision(listener: () => void): () => void;
553
559
  declare function getLanguageIcon(lang: string): string;
554
560
  declare const languageMap: Record<string, string>;
555
561
 
@@ -598,4 +604,4 @@ declare function canParseOffthread(code: string, theme: Theme, timeout?: number)
598
604
  declare function findPrefixOffthread(code: string, theme: Theme, timeout?: number): Promise<string>;
599
605
  declare function terminateWorker(): void;
600
606
 
601
- export { AdmonitionNode, BackpressureOptions, BlockquoteNode, CheckboxNode, CodeBlockNode, CodeBlockNodeProps, D2BlockNode, D2BlockNodeProps, D2Loader, DefinitionListNode, EmojiNode, EmphasisNode, FallbackComponent, FootnoteAnchorNode, FootnoteNode, FootnoteReferenceNode, HardBreakNode, HeadingNode, HighlightNode, HtmlBlockNode, HtmlInlineNode, HtmlPreviewFrame, ImageNode, ImageNodeProps, InfographicBlockNode, InfographicBlockNodeProps, InlineCodeNode, InsertNode, LanguageIconResolver, LinkNode, LinkNodeProps, ListItemNode, ListNode, MERMAID_WORKER_BUSY_CODE, MarkdownCodeBlockNode, MathBlockNode, MathBlockNodeProps, MathInlineNode, MathInlineNodeProps, MermaidBlockEvent, MermaidBlockNode, MermaidBlockNodeProps, NodeComponentProps, NodeRenderer, NodeRendererProps, ParagraphNode, PreCodeNode, PreCodeNodeProps, CodeBlockNode as ReactCodeBlockNode, ReferenceNode, StrikethroughNode, StrongNode, SubscriptNode, SuperscriptNode, TableNode, TextNode, ThematicBreakNode, Tooltip, VmrContainerNode, WORKER_BUSY_CODE, canParseOffthread, clearGlobalCustomComponents, clearKaTeXCache, clearKaTeXWorker, clearMermaidWorker, NodeRenderer as default, disableD2, enableD2, findPrefixOffthread, getCustomNodeComponents, getKaTeXBackpressureDefaults, getLanguageIcon, getMermaidWorkerLoad, isD2Enabled, languageMap, normalizeLanguageIdentifier, removeCustomComponents, renderKaTeXInWorker, renderKaTeXWithBackpressure, renderNode, resolveMonacoLanguageId, setCustomComponents, setD2Loader, setDefaultI18nMap, setKaTeXBackpressureDefaults, setKaTeXCache, setKaTeXConcurrencyLimit, setKaTeXWorker, setKaTeXWorkerDebug, setLanguageIconResolver, setMermaidWorker, setMermaidWorkerClientDebug, setMermaidWorkerMaxConcurrency, terminateWorker, useSafeI18n, waitForKaTeXWorkerSlot };
607
+ export { AdmonitionNode, BackpressureOptions, BlockquoteNode, CheckboxNode, CodeBlockNode, CodeBlockNodeProps, D2BlockNode, D2BlockNodeProps, D2Loader, DefinitionListNode, EmojiNode, EmphasisNode, FallbackComponent, FootnoteAnchorNode, FootnoteNode, FootnoteReferenceNode, HardBreakNode, HeadingNode, HighlightNode, HtmlBlockNode, HtmlInlineNode, HtmlPreviewFrame, ImageNode, ImageNodeProps, InfographicBlockNode, InfographicBlockNodeProps, InlineCodeNode, InsertNode, LanguageIconResolver, LinkNode, LinkNodeProps, ListItemNode, ListNode, MERMAID_WORKER_BUSY_CODE, MarkdownCodeBlockNode, MathBlockNode, MathBlockNodeProps, MathInlineNode, MathInlineNodeProps, MermaidBlockEvent, MermaidBlockNode, MermaidBlockNodeProps, NodeComponentProps, NodeRenderer, NodeRendererProps, ParagraphNode, PreCodeNode, PreCodeNodeProps, CodeBlockNode as ReactCodeBlockNode, ReferenceNode, StrikethroughNode, StrongNode, SubscriptNode, SuperscriptNode, TableNode, TextNode, ThematicBreakNode, Tooltip, VmrContainerNode, WORKER_BUSY_CODE, canParseOffthread, clearGlobalCustomComponents, clearKaTeXCache, clearKaTeXWorker, clearMermaidWorker, NodeRenderer as default, disableD2, enableD2, findPrefixOffthread, getCustomNodeComponents, getKaTeXBackpressureDefaults, getLanguageIcon, getMermaidWorkerLoad, isD2Enabled, languageMap, normalizeLanguageIdentifier, preloadExtendedLanguageIcons, removeCustomComponents, renderKaTeXInWorker, renderKaTeXWithBackpressure, renderNode, resolveMonacoLanguageId, setCustomComponents, setD2Loader, setDefaultI18nMap, setKaTeXBackpressureDefaults, setKaTeXCache, setKaTeXConcurrencyLimit, setKaTeXWorker, setKaTeXWorkerDebug, setLanguageIconResolver, setMermaidWorker, setMermaidWorkerClientDebug, setMermaidWorkerMaxConcurrency, subscribeLanguageIconsRevision, terminateWorker, useSafeI18n, waitForKaTeXWorkerSlot };