@stream-mdx/react 0.5.0 → 1.0.0

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.
Files changed (99) hide show
  1. package/CHANGELOG.md +371 -0
  2. package/README.md +79 -4
  3. package/dist/blocks-renderer-DAOBFBfi.d.ts +29 -0
  4. package/dist/blocks-renderer-DQEL1kJW.d.cts +29 -0
  5. package/dist/components/bottom-stick-scroll-area.cjs +117 -193
  6. package/dist/components/bottom-stick-scroll-area.mjs +112 -183
  7. package/dist/components/diff-renderer.cjs +86 -0
  8. package/dist/components/diff-renderer.d.cts +11 -0
  9. package/dist/components/diff-renderer.d.ts +11 -0
  10. package/dist/components/diff-renderer.mjs +66 -0
  11. package/dist/components/index.cjs +2761 -1508
  12. package/dist/components/index.d.cts +7 -2
  13. package/dist/components/index.d.ts +7 -2
  14. package/dist/components/index.mjs +2730 -1493
  15. package/dist/components/katex-math.cjs +220 -0
  16. package/dist/components/katex-math.d.cts +10 -0
  17. package/dist/components/katex-math.d.ts +10 -0
  18. package/dist/components/katex-math.mjs +188 -0
  19. package/dist/contexts/math-tracker.cjs +240 -521
  20. package/dist/contexts/math-tracker.mjs +235 -513
  21. package/dist/index-Cmne1yUK.d.cts +723 -0
  22. package/dist/index-D7dyyu3q.d.ts +723 -0
  23. package/dist/index.cjs +13029 -6475
  24. package/dist/index.d.cts +69 -39
  25. package/dist/index.d.ts +69 -39
  26. package/dist/index.mjs +13007 -6442
  27. package/dist/math/display-wrapper.cjs +7 -15
  28. package/dist/math/display-wrapper.d.cts +2 -2
  29. package/dist/math/display-wrapper.d.ts +2 -2
  30. package/dist/math/display-wrapper.mjs +2 -6
  31. package/dist/node-views-Bpc6Gkgl.d.cts +13 -0
  32. package/dist/node-views-DpnYdaAS.d.ts +13 -0
  33. package/dist/renderer/hooks.cjs +35 -20
  34. package/dist/renderer/hooks.d.cts +22 -1
  35. package/dist/renderer/hooks.d.ts +22 -1
  36. package/dist/renderer/hooks.mjs +27 -12
  37. package/dist/renderer/patch-batching.cjs +5 -8
  38. package/dist/renderer/patch-coalescing.cjs +5 -8
  39. package/dist/renderer/patch-commit-scheduler.cjs +138 -356
  40. package/dist/renderer/patch-commit-scheduler.d.cts +13 -1
  41. package/dist/renderer/patch-commit-scheduler.d.ts +13 -1
  42. package/dist/renderer/patch-commit-scheduler.mjs +133 -348
  43. package/dist/renderer/store.cjs +3775 -1373
  44. package/dist/renderer/store.d.cts +108 -3
  45. package/dist/renderer/store.d.ts +108 -3
  46. package/dist/renderer/store.mjs +3778 -1362
  47. package/dist/renderer/virtualized-code.cjs +415 -71
  48. package/dist/renderer/virtualized-code.d.cts +24 -23
  49. package/dist/renderer/virtualized-code.d.ts +24 -23
  50. package/dist/renderer/virtualized-code.mjs +409 -62
  51. package/dist/renderer.cjs +10655 -4334
  52. package/dist/renderer.d.cts +98 -29
  53. package/dist/renderer.d.ts +98 -29
  54. package/dist/renderer.mjs +10582 -4212
  55. package/dist/server-regions-CPLHGli0.d.cts +32 -0
  56. package/dist/server-regions-mUhyoKi7.d.ts +32 -0
  57. package/dist/server.cjs +10195 -3872
  58. package/dist/server.d.cts +17 -252
  59. package/dist/server.d.ts +17 -252
  60. package/dist/server.mjs +9997 -3649
  61. package/dist/{streaming-markdown-CEI9eDZm.d.ts → streaming-markdown-yELbJxyH.d.ts} +49 -55
  62. package/dist/{streaming-markdown-DRisClXb.d.cts → streaming-markdown-zVwFuaJG.d.cts} +49 -55
  63. package/dist/streaming-markdown.cjs +11660 -5378
  64. package/dist/streaming-markdown.d.cts +7 -2
  65. package/dist/streaming-markdown.d.ts +7 -2
  66. package/dist/streaming-markdown.mjs +11679 -5347
  67. package/dist/trusted-mdx/index.cjs +833 -0
  68. package/dist/trusted-mdx/index.d.cts +11 -0
  69. package/dist/trusted-mdx/index.d.ts +11 -0
  70. package/dist/trusted-mdx/index.mjs +807 -0
  71. package/dist/trusted-mdx/native-children-slot.cjs +45 -0
  72. package/dist/trusted-mdx/native-children-slot.d.cts +11 -0
  73. package/dist/trusted-mdx/native-children-slot.d.ts +11 -0
  74. package/dist/trusted-mdx/native-children-slot.mjs +24 -0
  75. package/dist/trusted-mdx/server.cjs +752 -0
  76. package/dist/trusted-mdx/server.d.cts +24 -0
  77. package/dist/trusted-mdx/server.d.ts +24 -0
  78. package/dist/trusted-mdx/server.mjs +724 -0
  79. package/dist/trusted-mdx-contract-ElKpkDI5.d.cts +113 -0
  80. package/dist/trusted-mdx-contract-ElKpkDI5.d.ts +113 -0
  81. package/dist/utils/inline-html.cjs +246 -147
  82. package/dist/utils/inline-html.d.cts +37 -6
  83. package/dist/utils/inline-html.d.ts +37 -6
  84. package/dist/utils/inline-html.mjs +237 -134
  85. package/package.json +41 -18
  86. package/dist/index-BVhp_pcF.d.ts +0 -251
  87. package/dist/index-EaeouYp2.d.cts +0 -251
  88. package/dist/mdx-client.cjs +0 -408
  89. package/dist/mdx-client.d.cts +0 -113
  90. package/dist/mdx-client.d.ts +0 -113
  91. package/dist/mdx-client.mjs +0 -369
  92. package/dist/mdx-coordinator.cjs +0 -584
  93. package/dist/mdx-coordinator.d.cts +0 -21
  94. package/dist/mdx-coordinator.d.ts +0 -21
  95. package/dist/mdx-coordinator.mjs +0 -550
  96. package/dist/renderer/node-views.cjs +0 -1887
  97. package/dist/renderer/node-views.d.cts +0 -14
  98. package/dist/renderer/node-views.d.ts +0 -14
  99. package/dist/renderer/node-views.mjs +0 -1861
@@ -1,50 +1,23 @@
1
- import React from 'react';
2
- import { PatchMetrics, FormatAnticipationConfig, CodeHighlightingMode, Block } from '@stream-mdx/core';
3
- import { L as LinkSafetyModalProps, B as BlockComponents, T as TableElements, H as HtmlElements, a as InlineComponents } from './index-BVhp_pcF.js';
1
+ import React__default from 'react';
2
+ import { a1 as LinkSafetyModalProps, l as ElementFilterOptions, _ as NodePresentations, C as ContentComponentsMap, a2 as MathEngine, $ as MermaidEngine, M as MathOptions, T as TableVirtualizationOptions, b as ControlsConfig, c as ControlsComponentProps, w as AnimatedProp } from './index-D7dyyu3q.js';
3
+ import { PatchMetrics, FormatAnticipationConfig, CodeHighlightingMode, Block, ContentPolicy, SyntaxExtensionDescriptor, HtmlOptions, UrlTransform } from '@stream-mdx/core';
4
+ import { VirtualizedCodeConfig } from './renderer/virtualized-code.js';
5
+ import { a as TrustedMdxEngine } from './trusted-mdx-contract-ElKpkDI5.js';
6
+ import { FinalizeResult, AppendResult, WaitForCapacityOptions } from '@stream-mdx/protocol';
4
7
  import { AdaptiveBudgetState, PatchFlushResult } from './renderer/patch-commit-scheduler.js';
5
8
  import { RendererStore } from './renderer/store.js';
6
-
7
- type MdxHydrationStrategy = "immediate" | "staggered" | "visible";
8
- type MdxHydrationOptions = {
9
- strategy?: MdxHydrationStrategy;
10
- maxConcurrent?: number;
11
- delayMs?: number;
12
- rootMargin?: string;
13
- idleTimeoutMs?: number;
14
- debounceMs?: number;
15
- };
9
+ import { CodeEngine } from '@stream-mdx/worker/engine';
16
10
 
17
11
  type DeferredRenderConfig = {
18
12
  rootMargin?: string;
19
13
  idleTimeoutMs?: number;
20
14
  debounceMs?: number;
21
15
  };
22
- declare const DeferredRenderContext: React.Context<DeferredRenderConfig | null>;
16
+ declare const DeferredRenderContext: React__default.Context<DeferredRenderConfig | null>;
23
17
 
24
- type MdxPrefetchSummary = {
25
- requested: number;
26
- completed: number;
27
- error: number;
28
- pending: number;
29
- avgPrefetchMs: number | null;
30
- p95PrefetchMs: number | null;
31
- maxPrefetchMs: number | null;
32
- lastPrefetchMs: number | null;
33
- };
34
- type MdxHydrationSummary = {
35
- compiled: number;
36
- hydrated: number;
37
- error: number;
38
- avgHydrationMs: number | null;
39
- p95HydrationMs: number | null;
40
- maxHydrationMs: number | null;
41
- lastHydrationMs: number | null;
42
- longTaskTotalMs: number | null;
43
- longTaskCount: number | null;
44
- p95LongTaskMs: number | null;
45
- maxLongTaskMs: number | null;
46
- prefetch?: MdxPrefetchSummary | null;
47
- };
18
+ declare class EngineCompatibilityError extends Error {
19
+ constructor(message?: string);
20
+ }
48
21
 
49
22
  interface StreamingSchedulerOptions {
50
23
  frameBudgetMs?: number;
@@ -73,6 +46,10 @@ interface StreamingFeatureFlags {
73
46
  liveTokenization?: boolean;
74
47
  emitHighlightTokens?: boolean;
75
48
  emitDiffBlocks?: boolean;
49
+ themes?: {
50
+ light: string;
51
+ dark: string;
52
+ };
76
53
  }
77
54
  /**
78
55
  * Metrics emitted after each flush (high-priority + low-priority batches).
@@ -107,16 +84,14 @@ interface RendererStateSnapshot {
107
84
  rendererVersion: number;
108
85
  store: RendererStore;
109
86
  lastMetrics: RendererMetrics | null;
110
- mdxHydration?: MdxHydrationSummary & {
111
- pending: number;
112
- };
113
87
  }
114
88
  interface StreamingMarkdownHandle {
115
89
  pause(): void;
116
90
  resume(): void;
117
91
  restart(): void;
118
- finalize(): void;
119
- append(text: string): void;
92
+ finalize(): Promise<FinalizeResult>;
93
+ append(text: string): AppendResult;
94
+ waitForCapacity(options: WaitForCapacityOptions): Promise<void>;
120
95
  setCredits(value: number): void;
121
96
  flushPending(): PatchFlushResult | null;
122
97
  waitForIdle(): Promise<void>;
@@ -129,31 +104,50 @@ type LinkSafetyCheck = (url: string) => boolean | Promise<boolean>;
129
104
  type LinkSafetyConfig = {
130
105
  enabled?: boolean;
131
106
  onLinkCheck?: LinkSafetyCheck;
132
- renderModal?: (props: LinkSafetyModalProps) => React.ReactNode;
107
+ renderModal?: (props: LinkSafetyModalProps) => React__default.ReactNode;
133
108
  };
134
- interface StreamingMarkdownProps {
109
+ type MarkdownEngineMode = "auto" | "main" | "worker";
110
+ interface StreamingMarkdownProps extends ElementFilterOptions {
135
111
  text?: string;
136
112
  stream?: AsyncIterable<string>;
137
113
  worker?: Worker | URL | (() => Worker) | string;
114
+ engine?: MarkdownEngineMode;
138
115
  managedWorker?: boolean;
139
116
  prewarmLangs?: string[];
140
117
  features?: StreamingFeatureFlags;
141
- components?: Partial<BlockComponents>;
142
- tableElements?: Partial<TableElements>;
143
- htmlElements?: Partial<HtmlElements>;
144
- mdxComponents?: Record<string, React.ComponentType<unknown>>;
145
- inlineComponents?: Partial<InlineComponents>;
118
+ themes?: {
119
+ light: string;
120
+ dark: string;
121
+ };
122
+ colorScheme?: "light" | "dark" | "system";
123
+ components?: NodePresentations;
146
124
  scheduling?: StreamingSchedulerOptions;
147
- mdxCompileMode?: "server" | "worker";
148
- mdxHydration?: MdxHydrationOptions;
125
+ contentPolicy?: ContentPolicy;
126
+ contentComponents?: ContentComponentsMap;
127
+ engines?: {
128
+ code?: CodeEngine;
129
+ math?: MathEngine;
130
+ mermaid?: MermaidEngine;
131
+ mdx?: TrustedMdxEngine;
132
+ };
149
133
  onMetrics?: (metrics: RendererMetrics) => void;
150
134
  onError?: (error: Error) => void;
151
135
  className?: string;
152
- style?: React.CSSProperties;
136
+ style?: React__default.CSSProperties;
153
137
  caret?: StreamingCaret;
154
138
  linkSafety?: LinkSafetyConfig;
139
+ mathOptions?: MathOptions;
155
140
  deferHeavyBlocks?: boolean | DeferredRenderConfig;
141
+ syntax?: SyntaxExtensionDescriptor;
142
+ html?: HtmlOptions;
143
+ tableVirtualization?: TableVirtualizationOptions;
144
+ codeVirtualization?: Partial<VirtualizedCodeConfig>;
145
+ urlTransform?: UrlTransform;
146
+ controls?: ControlsConfig;
147
+ controlsComponent?: React__default.ComponentType<ControlsComponentProps>;
148
+ animated?: AnimatedProp;
149
+ statusMessage?: string;
156
150
  }
157
- declare const StreamingMarkdown: React.ForwardRefExoticComponent<StreamingMarkdownProps & React.RefAttributes<StreamingMarkdownHandle>>;
151
+ declare const StreamingMarkdown: React__default.ForwardRefExoticComponent<StreamingMarkdownProps & React__default.RefAttributes<StreamingMarkdownHandle>>;
158
152
 
159
- export { type DeferredRenderConfig as D, type LinkSafetyCheck as L, type MdxHydrationOptions as M, type RendererMetrics as R, type StreamingSchedulerOptions as S, DeferredRenderContext as a, type StreamingFeatureFlags as b, type RendererStateSnapshot as c, type StreamingMarkdownHandle as d, type StreamingCaret as e, type LinkSafetyConfig as f, type StreamingMarkdownProps as g, StreamingMarkdown as h };
153
+ export { type DeferredRenderConfig as D, EngineCompatibilityError as E, type LinkSafetyCheck as L, type MarkdownEngineMode as M, type RendererMetrics as R, type StreamingSchedulerOptions as S, DeferredRenderContext as a, type StreamingFeatureFlags as b, type RendererStateSnapshot as c, type StreamingMarkdownHandle as d, type StreamingCaret as e, type LinkSafetyConfig as f, type StreamingMarkdownProps as g, StreamingMarkdown as h };
@@ -1,50 +1,23 @@
1
- import React from 'react';
2
- import { PatchMetrics, FormatAnticipationConfig, CodeHighlightingMode, Block } from '@stream-mdx/core';
3
- import { L as LinkSafetyModalProps, B as BlockComponents, T as TableElements, H as HtmlElements, a as InlineComponents } from './index-EaeouYp2.cjs';
1
+ import React__default from 'react';
2
+ import { a1 as LinkSafetyModalProps, l as ElementFilterOptions, _ as NodePresentations, C as ContentComponentsMap, a2 as MathEngine, $ as MermaidEngine, M as MathOptions, T as TableVirtualizationOptions, b as ControlsConfig, c as ControlsComponentProps, w as AnimatedProp } from './index-Cmne1yUK.cjs';
3
+ import { PatchMetrics, FormatAnticipationConfig, CodeHighlightingMode, Block, ContentPolicy, SyntaxExtensionDescriptor, HtmlOptions, UrlTransform } from '@stream-mdx/core';
4
+ import { VirtualizedCodeConfig } from './renderer/virtualized-code.cjs';
5
+ import { a as TrustedMdxEngine } from './trusted-mdx-contract-ElKpkDI5.cjs';
6
+ import { FinalizeResult, AppendResult, WaitForCapacityOptions } from '@stream-mdx/protocol';
4
7
  import { AdaptiveBudgetState, PatchFlushResult } from './renderer/patch-commit-scheduler.cjs';
5
8
  import { RendererStore } from './renderer/store.cjs';
6
-
7
- type MdxHydrationStrategy = "immediate" | "staggered" | "visible";
8
- type MdxHydrationOptions = {
9
- strategy?: MdxHydrationStrategy;
10
- maxConcurrent?: number;
11
- delayMs?: number;
12
- rootMargin?: string;
13
- idleTimeoutMs?: number;
14
- debounceMs?: number;
15
- };
9
+ import { CodeEngine } from '@stream-mdx/worker/engine';
16
10
 
17
11
  type DeferredRenderConfig = {
18
12
  rootMargin?: string;
19
13
  idleTimeoutMs?: number;
20
14
  debounceMs?: number;
21
15
  };
22
- declare const DeferredRenderContext: React.Context<DeferredRenderConfig | null>;
16
+ declare const DeferredRenderContext: React__default.Context<DeferredRenderConfig | null>;
23
17
 
24
- type MdxPrefetchSummary = {
25
- requested: number;
26
- completed: number;
27
- error: number;
28
- pending: number;
29
- avgPrefetchMs: number | null;
30
- p95PrefetchMs: number | null;
31
- maxPrefetchMs: number | null;
32
- lastPrefetchMs: number | null;
33
- };
34
- type MdxHydrationSummary = {
35
- compiled: number;
36
- hydrated: number;
37
- error: number;
38
- avgHydrationMs: number | null;
39
- p95HydrationMs: number | null;
40
- maxHydrationMs: number | null;
41
- lastHydrationMs: number | null;
42
- longTaskTotalMs: number | null;
43
- longTaskCount: number | null;
44
- p95LongTaskMs: number | null;
45
- maxLongTaskMs: number | null;
46
- prefetch?: MdxPrefetchSummary | null;
47
- };
18
+ declare class EngineCompatibilityError extends Error {
19
+ constructor(message?: string);
20
+ }
48
21
 
49
22
  interface StreamingSchedulerOptions {
50
23
  frameBudgetMs?: number;
@@ -73,6 +46,10 @@ interface StreamingFeatureFlags {
73
46
  liveTokenization?: boolean;
74
47
  emitHighlightTokens?: boolean;
75
48
  emitDiffBlocks?: boolean;
49
+ themes?: {
50
+ light: string;
51
+ dark: string;
52
+ };
76
53
  }
77
54
  /**
78
55
  * Metrics emitted after each flush (high-priority + low-priority batches).
@@ -107,16 +84,14 @@ interface RendererStateSnapshot {
107
84
  rendererVersion: number;
108
85
  store: RendererStore;
109
86
  lastMetrics: RendererMetrics | null;
110
- mdxHydration?: MdxHydrationSummary & {
111
- pending: number;
112
- };
113
87
  }
114
88
  interface StreamingMarkdownHandle {
115
89
  pause(): void;
116
90
  resume(): void;
117
91
  restart(): void;
118
- finalize(): void;
119
- append(text: string): void;
92
+ finalize(): Promise<FinalizeResult>;
93
+ append(text: string): AppendResult;
94
+ waitForCapacity(options: WaitForCapacityOptions): Promise<void>;
120
95
  setCredits(value: number): void;
121
96
  flushPending(): PatchFlushResult | null;
122
97
  waitForIdle(): Promise<void>;
@@ -129,31 +104,50 @@ type LinkSafetyCheck = (url: string) => boolean | Promise<boolean>;
129
104
  type LinkSafetyConfig = {
130
105
  enabled?: boolean;
131
106
  onLinkCheck?: LinkSafetyCheck;
132
- renderModal?: (props: LinkSafetyModalProps) => React.ReactNode;
107
+ renderModal?: (props: LinkSafetyModalProps) => React__default.ReactNode;
133
108
  };
134
- interface StreamingMarkdownProps {
109
+ type MarkdownEngineMode = "auto" | "main" | "worker";
110
+ interface StreamingMarkdownProps extends ElementFilterOptions {
135
111
  text?: string;
136
112
  stream?: AsyncIterable<string>;
137
113
  worker?: Worker | URL | (() => Worker) | string;
114
+ engine?: MarkdownEngineMode;
138
115
  managedWorker?: boolean;
139
116
  prewarmLangs?: string[];
140
117
  features?: StreamingFeatureFlags;
141
- components?: Partial<BlockComponents>;
142
- tableElements?: Partial<TableElements>;
143
- htmlElements?: Partial<HtmlElements>;
144
- mdxComponents?: Record<string, React.ComponentType<unknown>>;
145
- inlineComponents?: Partial<InlineComponents>;
118
+ themes?: {
119
+ light: string;
120
+ dark: string;
121
+ };
122
+ colorScheme?: "light" | "dark" | "system";
123
+ components?: NodePresentations;
146
124
  scheduling?: StreamingSchedulerOptions;
147
- mdxCompileMode?: "server" | "worker";
148
- mdxHydration?: MdxHydrationOptions;
125
+ contentPolicy?: ContentPolicy;
126
+ contentComponents?: ContentComponentsMap;
127
+ engines?: {
128
+ code?: CodeEngine;
129
+ math?: MathEngine;
130
+ mermaid?: MermaidEngine;
131
+ mdx?: TrustedMdxEngine;
132
+ };
149
133
  onMetrics?: (metrics: RendererMetrics) => void;
150
134
  onError?: (error: Error) => void;
151
135
  className?: string;
152
- style?: React.CSSProperties;
136
+ style?: React__default.CSSProperties;
153
137
  caret?: StreamingCaret;
154
138
  linkSafety?: LinkSafetyConfig;
139
+ mathOptions?: MathOptions;
155
140
  deferHeavyBlocks?: boolean | DeferredRenderConfig;
141
+ syntax?: SyntaxExtensionDescriptor;
142
+ html?: HtmlOptions;
143
+ tableVirtualization?: TableVirtualizationOptions;
144
+ codeVirtualization?: Partial<VirtualizedCodeConfig>;
145
+ urlTransform?: UrlTransform;
146
+ controls?: ControlsConfig;
147
+ controlsComponent?: React__default.ComponentType<ControlsComponentProps>;
148
+ animated?: AnimatedProp;
149
+ statusMessage?: string;
156
150
  }
157
- declare const StreamingMarkdown: React.ForwardRefExoticComponent<StreamingMarkdownProps & React.RefAttributes<StreamingMarkdownHandle>>;
151
+ declare const StreamingMarkdown: React__default.ForwardRefExoticComponent<StreamingMarkdownProps & React__default.RefAttributes<StreamingMarkdownHandle>>;
158
152
 
159
- export { type DeferredRenderConfig as D, type LinkSafetyCheck as L, type MdxHydrationOptions as M, type RendererMetrics as R, type StreamingSchedulerOptions as S, DeferredRenderContext as a, type StreamingFeatureFlags as b, type RendererStateSnapshot as c, type StreamingMarkdownHandle as d, type StreamingCaret as e, type LinkSafetyConfig as f, type StreamingMarkdownProps as g, StreamingMarkdown as h };
153
+ export { type DeferredRenderConfig as D, EngineCompatibilityError as E, type LinkSafetyCheck as L, type MarkdownEngineMode as M, type RendererMetrics as R, type StreamingSchedulerOptions as S, DeferredRenderContext as a, type StreamingFeatureFlags as b, type RendererStateSnapshot as c, type StreamingMarkdownHandle as d, type StreamingCaret as e, type LinkSafetyConfig as f, type StreamingMarkdownProps as g, StreamingMarkdown as h };