@stream-mdx/react 0.4.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 (106) hide show
  1. package/CHANGELOG.md +385 -4
  2. package/README.md +141 -16
  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 +268 -0
  6. package/dist/components/bottom-stick-scroll-area.d.cts +36 -0
  7. package/dist/components/bottom-stick-scroll-area.d.ts +36 -0
  8. package/dist/components/bottom-stick-scroll-area.mjs +249 -0
  9. package/dist/components/diff-renderer.cjs +86 -0
  10. package/dist/components/diff-renderer.d.cts +11 -0
  11. package/dist/components/diff-renderer.d.ts +11 -0
  12. package/dist/components/diff-renderer.mjs +66 -0
  13. package/dist/components/index.cjs +2879 -1295
  14. package/dist/components/index.d.cts +9 -2
  15. package/dist/components/index.d.ts +9 -2
  16. package/dist/components/index.mjs +2842 -1277
  17. package/dist/components/katex-math.cjs +220 -0
  18. package/dist/components/katex-math.d.cts +10 -0
  19. package/dist/components/katex-math.d.ts +10 -0
  20. package/dist/components/katex-math.mjs +188 -0
  21. package/dist/contexts/math-tracker.cjs +240 -521
  22. package/dist/contexts/math-tracker.mjs +235 -513
  23. package/dist/index-Cmne1yUK.d.cts +723 -0
  24. package/dist/index-D7dyyu3q.d.ts +723 -0
  25. package/dist/index.cjs +13180 -5640
  26. package/dist/index.d.cts +72 -40
  27. package/dist/index.d.ts +72 -40
  28. package/dist/index.mjs +12587 -5038
  29. package/dist/math/display-wrapper.cjs +7 -15
  30. package/dist/math/display-wrapper.d.cts +2 -2
  31. package/dist/math/display-wrapper.d.ts +2 -2
  32. package/dist/math/display-wrapper.mjs +2 -6
  33. package/dist/node-views-Bpc6Gkgl.d.cts +13 -0
  34. package/dist/node-views-DpnYdaAS.d.ts +13 -0
  35. package/dist/renderer/hooks.cjs +35 -20
  36. package/dist/renderer/hooks.d.cts +22 -1
  37. package/dist/renderer/hooks.d.ts +22 -1
  38. package/dist/renderer/hooks.mjs +27 -12
  39. package/dist/renderer/patch-batching.cjs +7 -8
  40. package/dist/renderer/patch-batching.d.cts +1 -1
  41. package/dist/renderer/patch-batching.d.ts +1 -1
  42. package/dist/renderer/patch-batching.mjs +2 -1
  43. package/dist/renderer/patch-coalescing.cjs +5 -8
  44. package/dist/renderer/patch-commit-scheduler.cjs +160 -326
  45. package/dist/renderer/patch-commit-scheduler.d.cts +28 -4
  46. package/dist/renderer/patch-commit-scheduler.d.ts +28 -4
  47. package/dist/renderer/patch-commit-scheduler.mjs +157 -318
  48. package/dist/renderer/store.cjs +3847 -1099
  49. package/dist/renderer/store.d.cts +111 -3
  50. package/dist/renderer/store.d.ts +111 -3
  51. package/dist/renderer/store.mjs +3847 -1085
  52. package/dist/renderer/virtualized-code.cjs +415 -71
  53. package/dist/renderer/virtualized-code.d.cts +24 -23
  54. package/dist/renderer/virtualized-code.d.ts +24 -23
  55. package/dist/renderer/virtualized-code.mjs +409 -62
  56. package/dist/renderer.cjs +10939 -3974
  57. package/dist/renderer.d.cts +100 -29
  58. package/dist/renderer.d.ts +100 -29
  59. package/dist/renderer.mjs +10711 -3697
  60. package/dist/server-regions-CPLHGli0.d.cts +32 -0
  61. package/dist/server-regions-mUhyoKi7.d.ts +32 -0
  62. package/dist/server.cjs +10286 -3365
  63. package/dist/server.d.cts +17 -247
  64. package/dist/server.d.ts +17 -247
  65. package/dist/server.mjs +10565 -3619
  66. package/dist/{streaming-markdown-DOc2uLiP.d.ts → streaming-markdown-yELbJxyH.d.ts} +51 -55
  67. package/dist/{streaming-markdown-D-JcByd9.d.cts → streaming-markdown-zVwFuaJG.d.cts} +51 -55
  68. package/dist/streaming-markdown.cjs +11828 -4879
  69. package/dist/streaming-markdown.d.cts +9 -2
  70. package/dist/streaming-markdown.d.ts +9 -2
  71. package/dist/streaming-markdown.mjs +11820 -4821
  72. package/dist/trusted-mdx/index.cjs +833 -0
  73. package/dist/trusted-mdx/index.d.cts +11 -0
  74. package/dist/trusted-mdx/index.d.ts +11 -0
  75. package/dist/trusted-mdx/index.mjs +807 -0
  76. package/dist/trusted-mdx/native-children-slot.cjs +45 -0
  77. package/dist/trusted-mdx/native-children-slot.d.cts +11 -0
  78. package/dist/trusted-mdx/native-children-slot.d.ts +11 -0
  79. package/dist/trusted-mdx/native-children-slot.mjs +24 -0
  80. package/dist/trusted-mdx/server.cjs +752 -0
  81. package/dist/trusted-mdx/server.d.cts +24 -0
  82. package/dist/trusted-mdx/server.d.ts +24 -0
  83. package/dist/trusted-mdx/server.mjs +724 -0
  84. package/dist/trusted-mdx-contract-ElKpkDI5.d.cts +113 -0
  85. package/dist/trusted-mdx-contract-ElKpkDI5.d.ts +113 -0
  86. package/dist/utils/inline-html.cjs +246 -147
  87. package/dist/utils/inline-html.d.cts +39 -6
  88. package/dist/utils/inline-html.d.ts +39 -6
  89. package/dist/utils/inline-html.mjs +237 -134
  90. package/package.json +52 -18
  91. package/shadcn/README.md +28 -0
  92. package/shadcn/bottom-stick-scroll-area.tsx +358 -0
  93. package/dist/index-D2MYusAM.d.cts +0 -248
  94. package/dist/index-D2MYusAM.d.ts +0 -248
  95. package/dist/mdx-client.cjs +0 -408
  96. package/dist/mdx-client.d.cts +0 -113
  97. package/dist/mdx-client.d.ts +0 -113
  98. package/dist/mdx-client.mjs +0 -369
  99. package/dist/mdx-coordinator.cjs +0 -563
  100. package/dist/mdx-coordinator.d.cts +0 -21
  101. package/dist/mdx-coordinator.d.ts +0 -21
  102. package/dist/mdx-coordinator.mjs +0 -529
  103. package/dist/renderer/node-views.cjs +0 -1642
  104. package/dist/renderer/node-views.d.cts +0 -12
  105. package/dist/renderer/node-views.d.ts +0 -12
  106. package/dist/renderer/node-views.mjs +0 -1616
@@ -0,0 +1,113 @@
1
+ import { Block, TrustedMdxFlowChildSpan, TrustedMdxArtifact } from '@stream-mdx/core';
2
+ import { ElementType, ReactNode, ComponentType } from 'react';
3
+
4
+ interface TrustedMdxRenderProps {
5
+ readonly components?: Readonly<Record<string, ElementType>>;
6
+ readonly children?: ReactNode;
7
+ }
8
+ type TrustedMdxNativeChildFallback = (index: number) => ReactNode;
9
+ type TrustedMdxNativeChildrenFactory = (fallback: TrustedMdxNativeChildFallback) => ReactNode;
10
+ type TrustedMdxNativeChildOwner = {
11
+ readonly kind: "block";
12
+ readonly blockId: string;
13
+ } | {
14
+ readonly kind: "prepared-tree";
15
+ readonly blockId: string;
16
+ } | {
17
+ readonly kind: "continuation";
18
+ readonly ownerIndex: number;
19
+ } | null;
20
+ /** Private compiler-region invocation props; host components receive TrustedMdxRenderProps only. */
21
+ interface TrustedMdxCompiledRegionProps extends Omit<TrustedMdxRenderProps, "children"> {
22
+ readonly children?: ReactNode | TrustedMdxNativeChildrenFactory;
23
+ }
24
+ /** The compiler closure is invoked locally, not transported as an ordinary React component prop. */
25
+ type TrustedMdxCompiledRegion = (props: TrustedMdxCompiledRegionProps) => ReactNode;
26
+ interface TrustedMdxRevision {
27
+ /** The entire accepted authored document, without per-block concatenation or repair. */
28
+ readonly source: string;
29
+ /** Blocks belonging to that document's completed, committed worker revision. */
30
+ readonly blocks: readonly Block[];
31
+ }
32
+ type TrustedMdxBlockProjection = {
33
+ readonly kind: "render";
34
+ readonly regions: readonly TrustedMdxCompiledRegion[];
35
+ readonly placement: "flow" | "inline";
36
+ readonly rootElementName?: string | null;
37
+ /** The compiler-authored flow root replaces only children represented by its worker owners. */
38
+ readonly nativeChildren?: true;
39
+ /** Per-child owner, inline-run continuation, or null for a compiler-only child. */
40
+ readonly nativeChildOwners?: readonly TrustedMdxNativeChildOwner[];
41
+ readonly flowChildren?: readonly TrustedMdxFlowChildSpan[];
42
+ /** Top-level worker blocks consumed or replaced by this exact flow region. */
43
+ readonly nativeFlowOwnedBlockIds?: readonly string[];
44
+ /** The exact full worker block is the compiler-authored flow root. */
45
+ readonly wholeBlockFlowRoot?: true;
46
+ /** This block is rendered only inside its compiler-authored flow parent. */
47
+ readonly nativeFlowParent?: true;
48
+ } | {
49
+ /** Server projection carries React content, never evaluated closures or component maps. */
50
+ readonly kind: "server-content";
51
+ readonly content: ReactNode;
52
+ readonly placement: "flow" | "inline";
53
+ readonly nativeChildren?: true;
54
+ readonly nativeChildOwners?: readonly TrustedMdxNativeChildOwner[];
55
+ readonly flowChildren?: readonly TrustedMdxFlowChildSpan[];
56
+ readonly nativeFlowOwnedBlockIds?: readonly string[];
57
+ readonly wholeBlockFlowRoot?: true;
58
+ readonly nativeFlowParent?: true;
59
+ readonly rootElementName?: string | null;
60
+ } | {
61
+ readonly kind: "native-child";
62
+ readonly nativeFlowParent: true;
63
+ } | {
64
+ readonly kind: "module";
65
+ readonly nativeFlowParent?: true;
66
+ } | {
67
+ readonly kind: "unmapped";
68
+ readonly diagnostic: string;
69
+ readonly placement?: "flow" | "inline";
70
+ readonly nativeFlowParent?: true;
71
+ };
72
+ interface TrustedMdxDocumentSnapshot {
73
+ readonly requestedRevision: number;
74
+ /** Revision supplying the currently projected bindings; may be older than requested. */
75
+ readonly projectionRevision: number | null;
76
+ /** Advances only when a host confirms that projected content actually committed. */
77
+ readonly renderedRevision: number | null;
78
+ readonly status: "idle" | "compiling" | "ready" | "error" | "disposed";
79
+ readonly error: string | null;
80
+ readonly components: Readonly<Record<string, ElementType>>;
81
+ readonly layout: ComponentType<TrustedMdxRenderProps> | null;
82
+ readonly projections: Readonly<Record<string, TrustedMdxBlockProjection>>;
83
+ }
84
+ /** Evaluation and component identities are owned by this lease, never another document. */
85
+ interface TrustedMdxDocument {
86
+ readonly getSnapshot: () => TrustedMdxDocumentSnapshot;
87
+ readonly subscribe: (listener: () => void) => () => void;
88
+ readonly compileRevision: (revision: TrustedMdxRevision) => Promise<void>;
89
+ readonly confirmRenderedRevision: (revision: number) => void;
90
+ /** Rejects that candidate and restores the last actually committed module, if any. */
91
+ readonly reportRenderError: (revision: number, error: unknown) => void;
92
+ readonly clear: () => void;
93
+ readonly dispose: () => void;
94
+ }
95
+ interface TrustedMdxEngine {
96
+ readonly createDocument: () => TrustedMdxDocument;
97
+ /** Changes whenever the engine invalidates existing authorization/cache state. */
98
+ readonly getGeneration: () => number;
99
+ readonly subscribe: (listener: () => void) => () => void;
100
+ /** Invalidates shared pure compilation artifacts and all extant lease revisions. */
101
+ readonly clearCache: () => void;
102
+ readonly dispose: () => void;
103
+ }
104
+ interface TrustedMdxEngineOptions {
105
+ readonly components?: Readonly<Record<string, ElementType>>;
106
+ /** Explicit host bindings; absent authored imports are rejected, not fetched. */
107
+ readonly imports?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;
108
+ /** Optional explicit host compiler. The addon otherwise compiles locally. */
109
+ readonly compile?: (source: string) => Promise<TrustedMdxArtifact>;
110
+ readonly compilerIdentity?: string;
111
+ }
112
+
113
+ export type { TrustedMdxEngineOptions as T, TrustedMdxEngine as a, TrustedMdxBlockProjection as b, TrustedMdxDocument as c, TrustedMdxDocumentSnapshot as d, TrustedMdxRenderProps as e, TrustedMdxRevision as f, TrustedMdxNativeChildOwner as g };
@@ -0,0 +1,113 @@
1
+ import { Block, TrustedMdxFlowChildSpan, TrustedMdxArtifact } from '@stream-mdx/core';
2
+ import { ElementType, ReactNode, ComponentType } from 'react';
3
+
4
+ interface TrustedMdxRenderProps {
5
+ readonly components?: Readonly<Record<string, ElementType>>;
6
+ readonly children?: ReactNode;
7
+ }
8
+ type TrustedMdxNativeChildFallback = (index: number) => ReactNode;
9
+ type TrustedMdxNativeChildrenFactory = (fallback: TrustedMdxNativeChildFallback) => ReactNode;
10
+ type TrustedMdxNativeChildOwner = {
11
+ readonly kind: "block";
12
+ readonly blockId: string;
13
+ } | {
14
+ readonly kind: "prepared-tree";
15
+ readonly blockId: string;
16
+ } | {
17
+ readonly kind: "continuation";
18
+ readonly ownerIndex: number;
19
+ } | null;
20
+ /** Private compiler-region invocation props; host components receive TrustedMdxRenderProps only. */
21
+ interface TrustedMdxCompiledRegionProps extends Omit<TrustedMdxRenderProps, "children"> {
22
+ readonly children?: ReactNode | TrustedMdxNativeChildrenFactory;
23
+ }
24
+ /** The compiler closure is invoked locally, not transported as an ordinary React component prop. */
25
+ type TrustedMdxCompiledRegion = (props: TrustedMdxCompiledRegionProps) => ReactNode;
26
+ interface TrustedMdxRevision {
27
+ /** The entire accepted authored document, without per-block concatenation or repair. */
28
+ readonly source: string;
29
+ /** Blocks belonging to that document's completed, committed worker revision. */
30
+ readonly blocks: readonly Block[];
31
+ }
32
+ type TrustedMdxBlockProjection = {
33
+ readonly kind: "render";
34
+ readonly regions: readonly TrustedMdxCompiledRegion[];
35
+ readonly placement: "flow" | "inline";
36
+ readonly rootElementName?: string | null;
37
+ /** The compiler-authored flow root replaces only children represented by its worker owners. */
38
+ readonly nativeChildren?: true;
39
+ /** Per-child owner, inline-run continuation, or null for a compiler-only child. */
40
+ readonly nativeChildOwners?: readonly TrustedMdxNativeChildOwner[];
41
+ readonly flowChildren?: readonly TrustedMdxFlowChildSpan[];
42
+ /** Top-level worker blocks consumed or replaced by this exact flow region. */
43
+ readonly nativeFlowOwnedBlockIds?: readonly string[];
44
+ /** The exact full worker block is the compiler-authored flow root. */
45
+ readonly wholeBlockFlowRoot?: true;
46
+ /** This block is rendered only inside its compiler-authored flow parent. */
47
+ readonly nativeFlowParent?: true;
48
+ } | {
49
+ /** Server projection carries React content, never evaluated closures or component maps. */
50
+ readonly kind: "server-content";
51
+ readonly content: ReactNode;
52
+ readonly placement: "flow" | "inline";
53
+ readonly nativeChildren?: true;
54
+ readonly nativeChildOwners?: readonly TrustedMdxNativeChildOwner[];
55
+ readonly flowChildren?: readonly TrustedMdxFlowChildSpan[];
56
+ readonly nativeFlowOwnedBlockIds?: readonly string[];
57
+ readonly wholeBlockFlowRoot?: true;
58
+ readonly nativeFlowParent?: true;
59
+ readonly rootElementName?: string | null;
60
+ } | {
61
+ readonly kind: "native-child";
62
+ readonly nativeFlowParent: true;
63
+ } | {
64
+ readonly kind: "module";
65
+ readonly nativeFlowParent?: true;
66
+ } | {
67
+ readonly kind: "unmapped";
68
+ readonly diagnostic: string;
69
+ readonly placement?: "flow" | "inline";
70
+ readonly nativeFlowParent?: true;
71
+ };
72
+ interface TrustedMdxDocumentSnapshot {
73
+ readonly requestedRevision: number;
74
+ /** Revision supplying the currently projected bindings; may be older than requested. */
75
+ readonly projectionRevision: number | null;
76
+ /** Advances only when a host confirms that projected content actually committed. */
77
+ readonly renderedRevision: number | null;
78
+ readonly status: "idle" | "compiling" | "ready" | "error" | "disposed";
79
+ readonly error: string | null;
80
+ readonly components: Readonly<Record<string, ElementType>>;
81
+ readonly layout: ComponentType<TrustedMdxRenderProps> | null;
82
+ readonly projections: Readonly<Record<string, TrustedMdxBlockProjection>>;
83
+ }
84
+ /** Evaluation and component identities are owned by this lease, never another document. */
85
+ interface TrustedMdxDocument {
86
+ readonly getSnapshot: () => TrustedMdxDocumentSnapshot;
87
+ readonly subscribe: (listener: () => void) => () => void;
88
+ readonly compileRevision: (revision: TrustedMdxRevision) => Promise<void>;
89
+ readonly confirmRenderedRevision: (revision: number) => void;
90
+ /** Rejects that candidate and restores the last actually committed module, if any. */
91
+ readonly reportRenderError: (revision: number, error: unknown) => void;
92
+ readonly clear: () => void;
93
+ readonly dispose: () => void;
94
+ }
95
+ interface TrustedMdxEngine {
96
+ readonly createDocument: () => TrustedMdxDocument;
97
+ /** Changes whenever the engine invalidates existing authorization/cache state. */
98
+ readonly getGeneration: () => number;
99
+ readonly subscribe: (listener: () => void) => () => void;
100
+ /** Invalidates shared pure compilation artifacts and all extant lease revisions. */
101
+ readonly clearCache: () => void;
102
+ readonly dispose: () => void;
103
+ }
104
+ interface TrustedMdxEngineOptions {
105
+ readonly components?: Readonly<Record<string, ElementType>>;
106
+ /** Explicit host bindings; absent authored imports are rejected, not fetched. */
107
+ readonly imports?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;
108
+ /** Optional explicit host compiler. The addon otherwise compiles locally. */
109
+ readonly compile?: (source: string) => Promise<TrustedMdxArtifact>;
110
+ readonly compilerIdentity?: string;
111
+ }
112
+
113
+ export type { TrustedMdxEngineOptions as T, TrustedMdxEngine as a, TrustedMdxBlockProjection as b, TrustedMdxDocument as c, TrustedMdxDocumentSnapshot as d, TrustedMdxRenderProps as e, TrustedMdxRevision as f, TrustedMdxNativeChildOwner as g };