markstream-octane 0.0.56-beta.1

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/README.md +276 -0
  2. package/dist/client/chunks/languageIconExtended-BZR3DrgI.js +2 -0
  3. package/dist/client/index.js +2 -0
  4. package/dist/client/workers/katexRenderer.worker.js +59 -0
  5. package/dist/client/workers/mermaidParser.worker.js +63 -0
  6. package/dist/index.css +2 -0
  7. package/dist/index.d.ts +845 -0
  8. package/dist/index.px.css +2 -0
  9. package/dist/index.tailwind.css +2009 -0
  10. package/dist/server/index.js +2 -0
  11. package/dist/server.d.ts +661 -0
  12. package/dist/tailwind.cjs +4 -0
  13. package/dist/tailwind.d.ts +2 -0
  14. package/dist/tailwind.js +2 -0
  15. package/dist/types/components/AdmonitionNode/AdmonitionNode.d.ts +12 -0
  16. package/dist/types/components/BlockquoteNode/BlockquoteNode.d.ts +8 -0
  17. package/dist/types/components/CheckboxNode/CheckboxNode.d.ts +7 -0
  18. package/dist/types/components/CodeBlockNode/CodeBlockNode.d.ts +14 -0
  19. package/dist/types/components/CodeBlockNode/HtmlPreviewFrame.d.ts +12 -0
  20. package/dist/types/components/CodeBlockNode/PreCodeNode.d.ts +3 -0
  21. package/dist/types/components/CodeBlockNode/monaco.d.ts +2 -0
  22. package/dist/types/components/CodeBlockNode/monacoThemeRegistry.d.ts +8 -0
  23. package/dist/types/components/CodeBlockNode/monacoThemeScheduler.d.ts +5 -0
  24. package/dist/types/components/D2BlockNode/D2BlockNode.d.ts +3 -0
  25. package/dist/types/components/D2BlockNode/d2.d.ts +18 -0
  26. package/dist/types/components/D2BlockNode/index.d.ts +3 -0
  27. package/dist/types/components/DefinitionListNode/DefinitionListNode.d.ts +8 -0
  28. package/dist/types/components/EmojiNode/EmojiNode.d.ts +8 -0
  29. package/dist/types/components/EmphasisNode/EmphasisNode.d.ts +6 -0
  30. package/dist/types/components/FootnoteAnchorNode/FootnoteAnchorNode.d.ts +7 -0
  31. package/dist/types/components/FootnoteNode/FootnoteNode.d.ts +9 -0
  32. package/dist/types/components/FootnoteReferenceNode/FootnoteReferenceNode.d.ts +7 -0
  33. package/dist/types/components/HardBreakNode/HardBreakNode.d.ts +6 -0
  34. package/dist/types/components/HeadingNode/HeadingNode.d.ts +10 -0
  35. package/dist/types/components/HighlightNode/HighlightNode.d.ts +6 -0
  36. package/dist/types/components/HtmlBlockNode/HtmlBlockNode.d.ts +19 -0
  37. package/dist/types/components/HtmlInlineNode/HtmlInlineNode.d.ts +16 -0
  38. package/dist/types/components/ImageNode/ImageNode.d.ts +9 -0
  39. package/dist/types/components/InfographicBlockNode/InfographicBlockNode.d.ts +16 -0
  40. package/dist/types/components/InfographicBlockNode/height.d.ts +6 -0
  41. package/dist/types/components/InfographicBlockNode/index.d.ts +3 -0
  42. package/dist/types/components/InfographicBlockNode/infographic.d.ts +2 -0
  43. package/dist/types/components/InlineCodeNode/InlineCodeNode.d.ts +7 -0
  44. package/dist/types/components/InsertNode/InsertNode.d.ts +6 -0
  45. package/dist/types/components/LinkNode/LinkNode.d.ts +22 -0
  46. package/dist/types/components/ListItemNode/ListItemNode.d.ts +13 -0
  47. package/dist/types/components/ListNode/ListNode.d.ts +10 -0
  48. package/dist/types/components/MarkdownCodeBlockNode/MarkdownCodeBlockNode.d.ts +34 -0
  49. package/dist/types/components/Math/MathBlockNode.d.ts +3 -0
  50. package/dist/types/components/Math/MathInlineNode.d.ts +3 -0
  51. package/dist/types/components/Math/katex.d.ts +2 -0
  52. package/dist/types/components/MathBlockNode/MathBlockNode.d.ts +3 -0
  53. package/dist/types/components/MathInlineNode/MathInlineNode.d.ts +3 -0
  54. package/dist/types/components/MermaidBlockNode/MermaidBlockNode.d.ts +16 -0
  55. package/dist/types/components/MermaidBlockNode/height.d.ts +7 -0
  56. package/dist/types/components/MermaidBlockNode/index.d.ts +3 -0
  57. package/dist/types/components/MermaidBlockNode/mermaid.d.ts +23 -0
  58. package/dist/types/components/NodeRenderer/FallbackComponent.d.ts +6 -0
  59. package/dist/types/components/NodeRenderer/preloadMonaco.d.ts +2 -0
  60. package/dist/types/components/NodeRenderer.d.ts +5 -0
  61. package/dist/types/components/ParagraphNode/ParagraphNode.d.ts +9 -0
  62. package/dist/types/components/PreCodeNode/PreCodeNode.d.ts +3 -0
  63. package/dist/types/components/ReferenceNode/ReferenceNode.d.ts +15 -0
  64. package/dist/types/components/StrikethroughNode/StrikethroughNode.d.ts +6 -0
  65. package/dist/types/components/StrongNode/StrongNode.d.ts +6 -0
  66. package/dist/types/components/SubscriptNode/SubscriptNode.d.ts +6 -0
  67. package/dist/types/components/SuperscriptNode/SuperscriptNode.d.ts +6 -0
  68. package/dist/types/components/TableNode/TableNode.d.ts +10 -0
  69. package/dist/types/components/TextNode/TextNode.d.ts +8 -0
  70. package/dist/types/components/ThematicBreakNode/ThematicBreakNode.d.ts +3 -0
  71. package/dist/types/components/Tooltip/Tooltip.d.ts +16 -0
  72. package/dist/types/components/VmrContainerNode/VmrContainerNode.d.ts +10 -0
  73. package/dist/types/context/smoothStreaming.d.ts +2 -0
  74. package/dist/types/context/streamState.d.ts +25 -0
  75. package/dist/types/context/viewportPriority.d.ts +18 -0
  76. package/dist/types/customComponents.d.ts +38 -0
  77. package/dist/types/hooks/useSmoothMarkdownStream.d.ts +21 -0
  78. package/dist/types/i18n/useSafeI18n.d.ts +11 -0
  79. package/dist/types/index.d.ts +71 -0
  80. package/dist/types/renderers/codeBlockExtraProps.d.ts +5 -0
  81. package/dist/types/renderers/renderChildren.d.ts +7 -0
  82. package/dist/types/renderers/renderNode.d.ts +5 -0
  83. package/dist/types/server-renderer/html.d.ts +2 -0
  84. package/dist/types/server-renderer/index.d.ts +176 -0
  85. package/dist/types/server-renderer/katex.d.ts +2 -0
  86. package/dist/types/server.d.ts +56 -0
  87. package/dist/types/tailwind-entry.d.ts +3 -0
  88. package/dist/types/tooltip/singletonTooltip.d.ts +8 -0
  89. package/dist/types/types/component-props.d.ts +234 -0
  90. package/dist/types/types/node-component.d.ts +15 -0
  91. package/dist/types/types/octane.d.ts +12 -0
  92. package/dist/types/types.d.ts +127 -0
  93. package/dist/types/utils/customHtmlTag.d.ts +18 -0
  94. package/dist/types/utils/devEnv.d.ts +2 -0
  95. package/dist/types/utils/htmlToOctane.d.ts +23 -0
  96. package/dist/types/utils/languageIcon.d.ts +9 -0
  97. package/dist/types/utils/languageIconExtended.d.ts +2 -0
  98. package/dist/types/utils/normalizeKaTeXRenderInput.d.ts +2 -0
  99. package/dist/types/utils/performanceMonitor.d.ts +79 -0
  100. package/dist/types/utils/safeRaf.d.ts +3 -0
  101. package/dist/types/utils/streamingTextState.d.ts +3 -0
  102. package/dist/types/workers/katexRenderer.worker.d.ts +2 -0
  103. package/dist/types/workers/katexWorkerClient.d.ts +32 -0
  104. package/dist/types/workers/mermaidParser.worker.d.ts +2 -0
  105. package/dist/types/workers/mermaidWorkerClient.d.ts +15 -0
  106. package/package.json +149 -0
@@ -0,0 +1,661 @@
1
+ import * as stream_markdown_parser from 'stream-markdown-parser';
2
+ import { CodeBlockNode as CodeBlockNode$1, BaseNode, ParseOptions, MarkdownIt, HtmlPolicy, ParsedNode, ListItemNode as ListItemNode$1, TableRowNode, DefinitionItemNode } from 'stream-markdown-parser';
3
+ import * as Octane from 'octane';
4
+ import { OctaneNode, ComponentBody } from 'octane';
5
+ import * as octane_jsx_runtime from 'octane/jsx-runtime';
6
+ import { Octane as Octane$1 } from 'octane/jsx-runtime';
7
+ import { SmoothMarkdownStreamOptions } from 'markstream-core';
8
+
9
+ // Generated by scripts/generate-tsrx-types.mjs for the built package.
10
+
11
+ interface HtmlPreviewFrameProps {
12
+ code: string;
13
+ isDark?: boolean;
14
+ htmlPreviewAllowScripts?: boolean;
15
+ htmlPreviewSandbox?: string;
16
+ onClose?: () => void;
17
+ title?: string;
18
+ }
19
+
20
+ // Generated by scripts/generate-tsrx-types.mjs for the built package.
21
+
22
+ type OctanePropsWithChildren<P> = P & {
23
+ children?: OctaneNode;
24
+ };
25
+ type OctaneStyle = Exclude<Octane$1.JSX.IntrinsicElements['div']['style'], string | undefined>;
26
+
27
+ // Generated by scripts/generate-tsrx-types.mjs for the built package.
28
+
29
+ type CustomComponentDisplayMode = 'inline' | 'block';
30
+ type MarkstreamCustomComponent<P = any> = ComponentBody<P> & {
31
+ markstreamDisplay?: CustomComponentDisplayMode;
32
+ };
33
+ type CustomComponentMap = Record<string, MarkstreamCustomComponent>;
34
+ type StreamingComponent<TNode = any> = ComponentBody<NodeComponentProps<TNode>>;
35
+ type StreamingComponentMap = Record<string, StreamingComponent<any>>;
36
+ type HtmlComponent<P extends object = any> = ComponentBody<OctanePropsWithChildren<P>>;
37
+ type HtmlComponentMap = Record<string, HtmlComponent<any>>;
38
+ type IsAny<T> = 0 extends (1 & T) ? true : false;
39
+ type ComponentProps<T> = T extends ComponentBody<infer P> ? P : T extends (props: infer P) => any ? P : never;
40
+ type StreamingComponentDefinitions<T extends Record<string, any>> = {
41
+ [K in keyof T]: ComponentProps<T[K]> extends infer P ? IsAny<P> extends true ? T[K] : P extends NodeComponentProps<any> ? NodeComponentProps<any> extends P ? T[K] : never : never : never;
42
+ };
43
+ type ParserComponentOnlyProp = Exclude<keyof NodeComponentProps<any>, 'children' | 'node'>;
44
+ type HtmlComponentDefinitions<T extends Record<string, any>> = {
45
+ [K in keyof T]: ComponentProps<T[K]> extends infer P ? IsAny<P> extends true ? T[K] : Extract<keyof P, ParserComponentOnlyProp> extends never ? T[K] : never : never;
46
+ };
47
+ declare function setCustomComponents(id: string, mapping: CustomComponentMap): void;
48
+ declare function setCustomComponents(mapping: CustomComponentMap): void;
49
+ declare function getCustomNodeComponents(customId?: string): CustomComponentMap;
50
+ declare function removeCustomComponents(id: string): void;
51
+ declare function clearGlobalCustomComponents(): void;
52
+ declare function getCustomComponentDisplay(component: ComponentBody<any> | null | undefined): CustomComponentDisplayMode | undefined;
53
+ declare function withMarkstreamComponentDisplay<T extends ComponentBody<any>>(component: T, display: CustomComponentDisplayMode): T & {
54
+ markstreamDisplay: CustomComponentDisplayMode;
55
+ };
56
+ declare function defineStreamingComponents<const T extends Record<string, ComponentBody<any>>>(components: T & StreamingComponentDefinitions<T>): T & StreamingComponentDefinitions<T>;
57
+ declare function defineHtmlComponents<const T extends Record<string, ComponentBody<any>>>(components: T & HtmlComponentDefinitions<T>): T & HtmlComponentDefinitions<T>;
58
+
59
+ // Generated by scripts/generate-tsrx-types.mjs for the built package.
60
+
61
+ interface CodeBlockMonacoThemeObject {
62
+ name: string;
63
+ base?: string;
64
+ inherit?: boolean;
65
+ colors?: Record<string, string>;
66
+ rules?: Array<Record<string, unknown>>;
67
+ [key: string]: unknown;
68
+ }
69
+ type CodeBlockMonacoTheme = string | CodeBlockMonacoThemeObject;
70
+ type CodeBlockMonacoLanguage = string | ((...args: unknown[]) => unknown);
71
+ interface CommonCodeBlockProps {
72
+ showHeader?: boolean;
73
+ showCopyButton?: boolean;
74
+ showExpandButton?: boolean;
75
+ }
76
+ interface ShikiCodeBlockProps extends CommonCodeBlockProps {
77
+ themes?: readonly string[];
78
+ /**
79
+ * Shiki language preload request forwarded to stream-markdown's registerHighlight().
80
+ * This is not a rendering allow-list; already available Shiki languages may still highlight.
81
+ */
82
+ langs?: readonly string[];
83
+ }
84
+ interface CodeBlockDiffHideUnchangedRegionsOptions {
85
+ enabled?: boolean;
86
+ contextLineCount?: number;
87
+ minimumLineCount?: number;
88
+ revealLineCount?: number;
89
+ }
90
+ type CodeBlockDiffHideUnchangedRegions = boolean | CodeBlockDiffHideUnchangedRegionsOptions;
91
+ type CodeBlockDiffLineStyle = 'background' | 'bar';
92
+ type CodeBlockDiffAppearance = 'auto' | 'light' | 'dark';
93
+ type CodeBlockDiffUnchangedRegionStyle = 'line-info' | 'line-info-basic' | 'metadata' | 'simple';
94
+ type CodeBlockDiffHunkActionKind = 'revert' | 'stage';
95
+ type CodeBlockDiffHunkSide = 'upper' | 'lower';
96
+ interface CodeBlockDiffHunkActionContext {
97
+ action: CodeBlockDiffHunkActionKind;
98
+ side: CodeBlockDiffHunkSide;
99
+ lineChange: unknown;
100
+ originalModel: unknown;
101
+ modifiedModel: unknown;
102
+ }
103
+ interface CodeBlockMonacoOptions {
104
+ MAX_HEIGHT?: number | string;
105
+ fontSize?: number;
106
+ lineHeight?: number;
107
+ fontFamily?: string;
108
+ tabSize?: number;
109
+ readOnly?: boolean;
110
+ wordWrap?: 'off' | 'on' | 'wordWrapColumn' | 'bounded' | string;
111
+ wrappingIndent?: 'none' | 'same' | 'indent' | 'deepIndent' | string;
112
+ theme?: string;
113
+ themes?: CodeBlockMonacoTheme[];
114
+ languages?: CodeBlockMonacoLanguage[];
115
+ renderSideBySide?: boolean;
116
+ useInlineViewWhenSpaceIsLimited?: boolean;
117
+ enableSplitViewResizing?: boolean;
118
+ ignoreTrimWhitespace?: boolean;
119
+ maxComputationTime?: number;
120
+ diffAlgorithm?: string;
121
+ renderIndicators?: boolean;
122
+ originalEditable?: boolean;
123
+ revealDebounceMs?: number;
124
+ revealStrategy?: 'bottom' | 'centerIfOutside' | 'center';
125
+ revealBatchOnIdleMs?: number;
126
+ updateThrottleMs?: number;
127
+ diffUpdateThrottleMs?: number;
128
+ diffAutoScroll?: boolean;
129
+ diffHideUnchangedRegions?: CodeBlockDiffHideUnchangedRegions;
130
+ diffLineStyle?: CodeBlockDiffLineStyle;
131
+ diffAppearance?: CodeBlockDiffAppearance;
132
+ diffUnchangedRegionStyle?: CodeBlockDiffUnchangedRegionStyle;
133
+ diffHunkActionsOnHover?: boolean;
134
+ diffHunkHoverHideDelayMs?: number;
135
+ onDiffHunkAction?: (context: CodeBlockDiffHunkActionContext) => void | boolean | Promise<void | boolean>;
136
+ scrollbar?: Record<string, unknown>;
137
+ [key: string]: unknown;
138
+ }
139
+ interface CodeBlockNodeProps extends CommonCodeBlockProps {
140
+ node: CodeBlockNode$1;
141
+ isDark?: boolean;
142
+ loading?: boolean;
143
+ stream?: boolean;
144
+ darkTheme?: CodeBlockMonacoTheme;
145
+ lightTheme?: CodeBlockMonacoTheme;
146
+ isShowPreview?: boolean;
147
+ monacoOptions?: CodeBlockMonacoOptions;
148
+ enableFontSizeControl?: boolean;
149
+ minWidth?: string | number;
150
+ maxWidth?: string | number;
151
+ themes?: CodeBlockMonacoTheme[];
152
+ showPreviewButton?: boolean;
153
+ showCollapseButton?: boolean;
154
+ showFontSizeButtons?: boolean;
155
+ showTooltips?: boolean;
156
+ htmlPreviewAllowScripts?: boolean;
157
+ htmlPreviewSandbox?: string;
158
+ customId?: string;
159
+ }
160
+ interface ImageNodeProps {
161
+ node: {
162
+ type: 'image';
163
+ src: string;
164
+ alt: string;
165
+ title: string | null;
166
+ raw: string;
167
+ loading?: boolean;
168
+ };
169
+ fallbackSrc?: string;
170
+ lazy?: boolean;
171
+ usePlaceholder?: boolean;
172
+ }
173
+ interface LinkNodeProps {
174
+ node: {
175
+ type: 'link';
176
+ href: string;
177
+ title: string | null;
178
+ text: string;
179
+ attrs?: [string, string][];
180
+ children: {
181
+ type: string;
182
+ raw: string;
183
+ }[];
184
+ raw: string;
185
+ loading?: boolean;
186
+ };
187
+ indexKey: number | string;
188
+ customId?: string;
189
+ showTooltip?: boolean;
190
+ color?: string;
191
+ underlineHeight?: number;
192
+ underlineBottom?: number | string;
193
+ animationDuration?: number;
194
+ animationOpacity?: number;
195
+ animationTiming?: string;
196
+ animationIteration?: string | number;
197
+ }
198
+ interface PreCodeNodeProps {
199
+ node: CodeBlockNode$1;
200
+ className?: string;
201
+ style?: OctaneStyle;
202
+ showLineNumbers?: boolean;
203
+ diffInline?: boolean;
204
+ }
205
+ interface MermaidBlockNodeProps {
206
+ node: CodeBlockNode$1;
207
+ maxHeight?: string | null;
208
+ estimatedPreviewHeightPx?: number;
209
+ loading?: boolean;
210
+ isDark?: boolean;
211
+ workerTimeoutMs?: number;
212
+ parseTimeoutMs?: number;
213
+ renderTimeoutMs?: number;
214
+ fullRenderTimeoutMs?: number;
215
+ renderDebounceMs?: number;
216
+ contentStableDelayMs?: number;
217
+ previewPollDelayMs?: number;
218
+ previewPollMaxDelayMs?: number;
219
+ previewPollMaxAttempts?: number;
220
+ showHeader?: boolean;
221
+ showModeToggle?: boolean;
222
+ showCopyButton?: boolean;
223
+ showExportButton?: boolean;
224
+ showFullscreenButton?: boolean;
225
+ showCollapseButton?: boolean;
226
+ showZoomControls?: boolean;
227
+ enableWheelZoom?: boolean;
228
+ isStrict?: boolean;
229
+ enableMermaidInteractions?: boolean;
230
+ showTooltips?: boolean;
231
+ onRenderError?: (error: unknown, code: string, container: HTMLElement) => boolean | void;
232
+ }
233
+ interface CodeBlockPreviewPayload {
234
+ node: CodeBlockNode$1;
235
+ artifactType: 'text/html' | 'image/svg+xml';
236
+ artifactTitle: string;
237
+ id: string;
238
+ }
239
+ interface MermaidBlockEvent<TPayload = unknown> {
240
+ payload?: TPayload;
241
+ defaultPrevented: boolean;
242
+ preventDefault: () => void;
243
+ svgElement?: SVGElement | null;
244
+ svgString?: string | null;
245
+ }
246
+ interface D2BlockNodeProps {
247
+ node: CodeBlockNode$1;
248
+ maxHeight?: string | null;
249
+ loading?: boolean;
250
+ isDark?: boolean;
251
+ progressiveRender?: boolean;
252
+ progressiveIntervalMs?: number;
253
+ themeId?: number | null;
254
+ darkThemeId?: number | null;
255
+ showHeader?: boolean;
256
+ showModeToggle?: boolean;
257
+ showCopyButton?: boolean;
258
+ showExportButton?: boolean;
259
+ showCollapseButton?: boolean;
260
+ }
261
+ interface MathBlockNodeProps {
262
+ node: {
263
+ type: 'math_block';
264
+ content: string;
265
+ raw: string;
266
+ loading?: boolean;
267
+ };
268
+ }
269
+ interface MathInlineNodeProps {
270
+ node: {
271
+ type: 'math_inline';
272
+ content: string;
273
+ raw: string;
274
+ loading?: boolean;
275
+ markup?: string;
276
+ };
277
+ }
278
+ interface InfographicBlockNodeProps {
279
+ node: CodeBlockNode$1;
280
+ maxHeight?: string | null;
281
+ estimatedPreviewHeightPx?: number;
282
+ loading?: boolean;
283
+ isDark?: boolean;
284
+ showHeader?: boolean;
285
+ showModeToggle?: boolean;
286
+ showCopyButton?: boolean;
287
+ showCollapseButton?: boolean;
288
+ showExportButton?: boolean;
289
+ showFullscreenButton?: boolean;
290
+ showZoomControls?: boolean;
291
+ }
292
+
293
+ // Generated by scripts/generate-tsrx-types.mjs for the built package.
294
+
295
+ type NodeRendererCodeBlockThemes = CodeBlockNodeProps['themes'] | ShikiCodeBlockProps['themes'];
296
+ type NodeRendererCodeBlockProps = Partial<Omit<CodeBlockNodeProps, 'node' | 'themes'>> & Partial<Omit<ShikiCodeBlockProps, 'themes'>> & {
297
+ themes?: NodeRendererCodeBlockThemes;
298
+ } & Record<string, unknown>;
299
+ interface NodeRendererProps<TStreamingComponents extends Record<string, ComponentBody<any>> = StreamingComponentMap, THtmlComponents extends Record<string, any> = HtmlComponentMap> {
300
+ content?: string;
301
+ nodes?: readonly BaseNode[] | null;
302
+ /**
303
+ * Whether the input stream is complete (end-of-stream). When true, the parser
304
+ * can stop emitting streaming "loading" nodes for unfinished constructs.
305
+ */
306
+ final?: boolean;
307
+ parseOptions?: ParseOptions;
308
+ customMarkdownIt?: (md: MarkdownIt) => MarkdownIt;
309
+ streamingComponents?: TStreamingComponents & StreamingComponentDefinitions<TStreamingComponents>;
310
+ htmlComponents?: THtmlComponents & HtmlComponentDefinitions<THtmlComponents>;
311
+ /** Log parse/render timing stats (dev only). */
312
+ debugPerformance?: boolean;
313
+ /**
314
+ * Custom HTML-like tags that should be emitted as custom nodes (e.g. ['thinking']).
315
+ * Forwarded to `getMarkdown()` and merged into parseOptions.
316
+ */
317
+ customHtmlTags?: readonly string[];
318
+ htmlPolicy?: HtmlPolicy;
319
+ viewportPriority?: boolean;
320
+ codeBlockStream?: boolean;
321
+ codeBlockDarkTheme?: CodeBlockMonacoTheme;
322
+ codeBlockLightTheme?: CodeBlockMonacoTheme;
323
+ codeBlockMonacoOptions?: CodeBlockMonacoOptions;
324
+ renderCodeBlocksAsPre?: boolean;
325
+ codeBlockMinWidth?: string | number;
326
+ codeBlockMaxWidth?: string | number;
327
+ codeBlockProps?: NodeRendererCodeBlockProps;
328
+ mermaidProps?: Partial<Omit<MermaidBlockNodeProps, 'node' | 'loading' | 'isDark'>>;
329
+ d2Props?: Partial<Omit<D2BlockNodeProps, 'node' | 'loading' | 'isDark'>>;
330
+ infographicProps?: Partial<Omit<InfographicBlockNodeProps, 'node' | 'loading' | 'isDark'>>;
331
+ showTooltips?: boolean;
332
+ /**
333
+ * Theme names or theme objects preloaded for Monaco-backed code blocks.
334
+ * When Shiki code blocks are used, only string theme names are forwarded to
335
+ * MarkdownCodeBlockNode / stream-markdown; theme objects are ignored.
336
+ */
337
+ themes?: CodeBlockMonacoTheme[];
338
+ /**
339
+ * Shiki language preload list forwarded to MarkdownCodeBlockNode.
340
+ *
341
+ * The default Octane code block renderer is Monaco-backed. This prop is used
342
+ * when a custom `code_block` or language renderer uses MarkdownCodeBlockNode.
343
+ */
344
+ langs?: readonly string[];
345
+ isDark?: boolean;
346
+ customId?: string;
347
+ indexKey?: number | string;
348
+ /** Show a blinking typewriter cursor while streamed content grows. Default: false */
349
+ typewriter?: boolean;
350
+ /** Enable/disable non-code-node enter and streamed-text fade animations. Default: true */
351
+ fade?: boolean;
352
+ /**
353
+ * Enable built-in smooth pacing for streaming `content` updates.
354
+ * - `true`: force-enable smooth streaming (content mode only)
355
+ * - `false`: force-disable smooth streaming
356
+ * - `'auto'` (default): enable only when typewriter/incremental mode is active
357
+ * Applies when rendering from `content` (not `nodes`).
358
+ */
359
+ smoothStreaming?: boolean | 'auto';
360
+ /** Options forwarded to the built-in smooth streaming controller. Read once when the renderer is created. */
361
+ smoothStreamingOptions?: SmoothMarkdownStreamOptions;
362
+ batchRendering?: boolean;
363
+ initialRenderBatchSize?: number;
364
+ renderBatchSize?: number;
365
+ renderBatchDelay?: number;
366
+ renderBatchBudgetMs?: number;
367
+ renderBatchIdleTimeoutMs?: number;
368
+ deferNodesUntilVisible?: boolean;
369
+ maxLiveNodes?: number;
370
+ liveNodeBuffer?: number;
371
+ onCopy?: (code: string) => void;
372
+ onHandleArtifactClick?: (payload: CodeBlockPreviewPayload) => void;
373
+ onClick?: (event: MouseEvent) => void;
374
+ onMouseOver?: (event: MouseEvent) => void;
375
+ onMouseOut?: (event: MouseEvent) => void;
376
+ }
377
+ interface RenderContext {
378
+ customId?: string;
379
+ isDark?: boolean;
380
+ final?: boolean;
381
+ indexKey?: string;
382
+ typewriter?: boolean;
383
+ /** Enable/disable fade animations. Default: true */
384
+ fade?: boolean;
385
+ textStreamState?: Map<string, string>;
386
+ streamRenderVersion?: number;
387
+ customComponents?: CustomComponentMap;
388
+ streamingComponents?: StreamingComponentMap;
389
+ htmlComponents?: HtmlComponentMap;
390
+ customHtmlTags?: readonly string[];
391
+ htmlPolicy?: HtmlPolicy;
392
+ codeBlockProps?: NodeRendererCodeBlockProps;
393
+ mermaidProps?: Partial<Omit<MermaidBlockNodeProps, 'node' | 'loading' | 'isDark'>>;
394
+ d2Props?: Partial<Omit<D2BlockNodeProps, 'node' | 'loading' | 'isDark'>>;
395
+ infographicProps?: Partial<Omit<InfographicBlockNodeProps, 'node' | 'loading' | 'isDark'>>;
396
+ showTooltips?: boolean;
397
+ codeBlockStream?: boolean;
398
+ renderCodeBlocksAsPre?: boolean;
399
+ codeBlockThemes?: {
400
+ themes?: CodeBlockMonacoTheme[];
401
+ darkTheme?: CodeBlockMonacoTheme;
402
+ lightTheme?: CodeBlockMonacoTheme;
403
+ monacoOptions?: CodeBlockMonacoOptions;
404
+ minWidth?: string | number;
405
+ maxWidth?: string | number;
406
+ langs?: readonly string[];
407
+ };
408
+ events: {
409
+ onCopy?: (code: string) => void;
410
+ onHandleArtifactClick?: (payload: CodeBlockPreviewPayload) => void;
411
+ };
412
+ }
413
+ type RenderNodeFn = (node: ParsedNode, key: string | number | bigint, ctx: RenderContext) => Octane.OctaneNode;
414
+
415
+ // Generated by scripts/generate-tsrx-types.mjs for the built package.
416
+
417
+ interface NodeComponentProps<TNode = unknown> {
418
+ node: TNode;
419
+ ctx?: RenderContext;
420
+ renderNode?: RenderNodeFn;
421
+ indexKey?: string | number | bigint;
422
+ customId?: string;
423
+ isDark?: boolean;
424
+ typewriter?: boolean;
425
+ /** Enable/disable fade animations. Default: true */
426
+ fade?: boolean;
427
+ children?: Octane.OctaneNode;
428
+ }
429
+
430
+ interface LinkNodeStyleProps {
431
+ showTooltip?: boolean;
432
+ color?: string;
433
+ underlineHeight?: number;
434
+ underlineBottom?: number | string;
435
+ animationDuration?: number;
436
+ animationOpacity?: number;
437
+ animationTiming?: string;
438
+ animationIteration?: string | number;
439
+ }
440
+
441
+ interface ListItemNodeData {
442
+ type: 'list_item';
443
+ children?: ParsedNode[];
444
+ raw?: string;
445
+ }
446
+ interface ListItemNodeProps extends NodeComponentProps<ListItemNodeData> {
447
+ value?: number;
448
+ }
449
+
450
+ interface MarkdownCodeBlockNodeProps extends ShikiCodeBlockProps {
451
+ node: {
452
+ type: 'code_block';
453
+ language: string;
454
+ code: string;
455
+ raw: string;
456
+ diff?: boolean;
457
+ originalCode?: string;
458
+ updatedCode?: string;
459
+ };
460
+ loading?: boolean;
461
+ stream?: boolean;
462
+ darkTheme?: string;
463
+ lightTheme?: string;
464
+ isDark?: boolean;
465
+ isShowPreview?: boolean;
466
+ enableFontSizeControl?: boolean;
467
+ minWidth?: string | number;
468
+ maxWidth?: string | number;
469
+ showPreviewButton?: boolean;
470
+ showCollapseButton?: boolean;
471
+ showFontSizeButtons?: boolean;
472
+ showTooltips?: boolean;
473
+ onCopy?: (code: string) => void;
474
+ onPreviewCode?: (payload: {
475
+ type: string;
476
+ content: string;
477
+ title: string;
478
+ }) => void;
479
+ }
480
+
481
+ // Generated by scripts/generate-tsrx-types.mjs for the built package.
482
+
483
+ type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
484
+ interface TooltipProps {
485
+ visible: boolean;
486
+ anchorEl: HTMLElement | null;
487
+ content: string;
488
+ placement?: TooltipPlacement;
489
+ offset?: number;
490
+ originX?: number | null;
491
+ originY?: number | null;
492
+ id?: string | null;
493
+ isDark?: boolean | null;
494
+ }
495
+
496
+ declare function TextNode(props: NodeComponentProps<{
497
+ type: 'text';
498
+ content: string;
499
+ center?: boolean;
500
+ }>): octane_jsx_runtime.Octane.JSX.Element;
501
+ declare function ParagraphNode(props: NodeComponentProps<{
502
+ type: 'paragraph';
503
+ children?: ParsedNode[];
504
+ }>): Octane.ElementDescriptor<{}>;
505
+ declare function HeadingNode(props: NodeComponentProps<{
506
+ type: 'heading';
507
+ level?: number;
508
+ children?: ParsedNode[];
509
+ attrs?: Record<string, string | boolean>;
510
+ }>): octane_jsx_runtime.Octane.JSX.Element;
511
+ declare function BlockquoteNode(props: NodeComponentProps<{
512
+ type: 'blockquote';
513
+ children?: ParsedNode[];
514
+ }>): octane_jsx_runtime.Octane.JSX.Element;
515
+ declare function ListItemNode(props: NodeComponentProps<{
516
+ type: 'list_item';
517
+ children?: ParsedNode[];
518
+ }> & {
519
+ value?: number;
520
+ }): octane_jsx_runtime.Octane.JSX.Element;
521
+ declare function ListNode(props: NodeComponentProps<{
522
+ type: 'list';
523
+ ordered?: boolean;
524
+ start?: number;
525
+ items?: ListItemNode$1[];
526
+ }>): octane_jsx_runtime.Octane.JSX.Element;
527
+ declare function TableNode(props: NodeComponentProps<{
528
+ type: 'table';
529
+ header?: TableRowNode;
530
+ rows?: TableRowNode[];
531
+ loading?: boolean;
532
+ }>): octane_jsx_runtime.Octane.JSX.Element;
533
+ declare function DefinitionListNode(props: NodeComponentProps<{
534
+ type: 'definition_list';
535
+ items?: DefinitionItemNode[];
536
+ }>): octane_jsx_runtime.Octane.JSX.Element;
537
+ declare function FootnoteNode(props: NodeComponentProps<{
538
+ type: 'footnote';
539
+ id: string;
540
+ children?: ParsedNode[];
541
+ }>): octane_jsx_runtime.Octane.JSX.Element;
542
+ declare function FootnoteReferenceNode(props: NodeComponentProps<{
543
+ type: 'footnote_reference';
544
+ id: string;
545
+ }>): octane_jsx_runtime.Octane.JSX.Element;
546
+ declare function FootnoteAnchorNode(props: NodeComponentProps<{
547
+ type: 'footnote_anchor';
548
+ id: string;
549
+ }>): octane_jsx_runtime.Octane.JSX.Element;
550
+ declare function AdmonitionNode(props: NodeComponentProps<{
551
+ type: 'admonition';
552
+ kind?: string;
553
+ title?: string;
554
+ children?: ParsedNode[];
555
+ collapsible?: boolean;
556
+ open?: boolean;
557
+ }>): octane_jsx_runtime.Octane.JSX.Element;
558
+ declare function CheckboxNode(props: NodeComponentProps<{
559
+ type: 'checkbox' | 'checkbox_input';
560
+ checked?: boolean;
561
+ }>): octane_jsx_runtime.Octane.JSX.Element;
562
+ declare function EmojiNode(props: NodeComponentProps<{
563
+ type: 'emoji';
564
+ name: string;
565
+ markup?: string;
566
+ }>): octane_jsx_runtime.Octane.JSX.Element;
567
+ declare function StrongNode(props: NodeComponentProps<{
568
+ type: 'strong';
569
+ children?: ParsedNode[];
570
+ }>): octane_jsx_runtime.Octane.JSX.Element;
571
+ declare function EmphasisNode(props: NodeComponentProps<{
572
+ type: 'emphasis';
573
+ children?: ParsedNode[];
574
+ }>): octane_jsx_runtime.Octane.JSX.Element;
575
+ declare function StrikethroughNode(props: NodeComponentProps<{
576
+ type: 'strikethrough';
577
+ children?: ParsedNode[];
578
+ }>): octane_jsx_runtime.Octane.JSX.Element;
579
+ declare function HighlightNode(props: NodeComponentProps<{
580
+ type: 'highlight';
581
+ children?: ParsedNode[];
582
+ }>): octane_jsx_runtime.Octane.JSX.Element;
583
+ declare function InsertNode(props: NodeComponentProps<{
584
+ type: 'insert';
585
+ children?: ParsedNode[];
586
+ }>): octane_jsx_runtime.Octane.JSX.Element;
587
+ declare function SubscriptNode(props: NodeComponentProps<{
588
+ type: 'subscript';
589
+ children?: ParsedNode[];
590
+ }>): octane_jsx_runtime.Octane.JSX.Element;
591
+ declare function SuperscriptNode(props: NodeComponentProps<{
592
+ type: 'superscript';
593
+ children?: ParsedNode[];
594
+ }>): octane_jsx_runtime.Octane.JSX.Element;
595
+ declare function HardBreakNode(_props: NodeComponentProps<{
596
+ type: 'hardbreak';
597
+ }>): octane_jsx_runtime.Octane.JSX.Element;
598
+ declare function ThematicBreakNode(_props?: NodeComponentProps<{
599
+ type: 'thematic_break';
600
+ }>): octane_jsx_runtime.Octane.JSX.Element;
601
+ declare function InlineCodeNode(props: NodeComponentProps<{
602
+ type: 'inline_code';
603
+ code: string;
604
+ }>): octane_jsx_runtime.Octane.JSX.Element;
605
+ declare function LinkNode(props: NodeComponentProps<LinkNodeProps['node']> & {
606
+ showTooltip?: boolean;
607
+ color?: string;
608
+ underlineHeight?: number;
609
+ underlineBottom?: number | string;
610
+ animationDuration?: number;
611
+ animationOpacity?: number;
612
+ animationTiming?: string;
613
+ animationIteration?: string | number;
614
+ }): octane_jsx_runtime.Octane.JSX.Element;
615
+ declare function ImageNode(rawProps: ImageNodeProps): octane_jsx_runtime.Octane.JSX.Element | null;
616
+ declare function PreCodeNode({ node }: PreCodeNodeProps): octane_jsx_runtime.Octane.JSX.Element;
617
+ declare function CodeBlockNode(props: CodeBlockNodeProps): octane_jsx_runtime.Octane.JSX.Element;
618
+ declare function MarkdownCodeBlockNode(props: MarkdownCodeBlockNodeProps): octane_jsx_runtime.Octane.JSX.Element;
619
+ declare function MermaidBlockNode(props: MermaidBlockNodeProps): octane_jsx_runtime.Octane.JSX.Element;
620
+ declare function D2BlockNode(props: D2BlockNodeProps): octane_jsx_runtime.Octane.JSX.Element;
621
+ declare function InfographicBlockNode(props: InfographicBlockNodeProps): octane_jsx_runtime.Octane.JSX.Element;
622
+ declare function MathBlockNode({ node }: MathBlockNodeProps): octane_jsx_runtime.Octane.JSX.Element;
623
+ declare function MathInlineNode({ node }: MathInlineNodeProps): octane_jsx_runtime.Octane.JSX.Element;
624
+ declare function ReferenceNode(props: NodeComponentProps<{
625
+ type: 'reference';
626
+ id: string;
627
+ }> & {
628
+ messageId?: string;
629
+ threadId?: string;
630
+ }): octane_jsx_runtime.Octane.JSX.Element;
631
+ declare function HtmlBlockNode(props: NodeComponentProps<{
632
+ type: 'html_block';
633
+ content?: string;
634
+ tag?: string;
635
+ attrs?: [string, string | null][] | null;
636
+ children?: ParsedNode[];
637
+ }>): octane_jsx_runtime.Octane.JSX.Element | Octane.ElementDescriptor<{
638
+ [x: string]: unknown;
639
+ }>;
640
+ declare function HtmlInlineNode(props: NodeComponentProps<{
641
+ type: 'html_inline';
642
+ content?: string;
643
+ tag?: string;
644
+ attrs?: [string, string | null][] | null;
645
+ children?: ParsedNode[];
646
+ }>): octane_jsx_runtime.Octane.JSX.Element | Octane.ElementDescriptor<Record<string, stream_markdown_parser.HtmlPropValue>>;
647
+ declare function VmrContainerNode(props: NodeComponentProps<{
648
+ type: 'vmr_container';
649
+ name: string;
650
+ attrs?: Record<string, string> | [string, string | null][] | null;
651
+ children?: ParsedNode[];
652
+ }>): octane_jsx_runtime.Octane.JSX.Element;
653
+ declare function Tooltip(_props: TooltipProps): null;
654
+ declare function HtmlPreviewFrame(_props: HtmlPreviewFrameProps): null;
655
+ declare function FallbackComponent(props: NodeComponentProps<{
656
+ type: string;
657
+ }>): octane_jsx_runtime.Octane.JSX.Element;
658
+ declare function renderNode(node: ParsedNode, key: string | number | bigint, ctx: RenderContext): Octane.OctaneNode;
659
+ declare function NodeRenderer<TStreamingComponents extends StreamingComponentMap = StreamingComponentMap, THtmlComponents extends Record<string, any> = HtmlComponentMap>(props: NodeRendererProps<TStreamingComponents, THtmlComponents>): octane_jsx_runtime.Octane.JSX.Element;
660
+
661
+ export { AdmonitionNode, BlockquoteNode, CheckboxNode, CodeBlockDiffAppearance, CodeBlockDiffHideUnchangedRegions, CodeBlockDiffHideUnchangedRegionsOptions, CodeBlockDiffHunkActionContext, CodeBlockDiffHunkActionKind, CodeBlockDiffHunkSide, CodeBlockDiffLineStyle, CodeBlockDiffUnchangedRegionStyle, CodeBlockMonacoLanguage, CodeBlockMonacoOptions, CodeBlockMonacoTheme, CodeBlockMonacoThemeObject, CodeBlockNode, CodeBlockNodeProps, CodeBlockPreviewPayload, CommonCodeBlockProps, CustomComponentDisplayMode, D2BlockNode, D2BlockNodeProps, DefinitionListNode, EmojiNode, EmphasisNode, FallbackComponent, FootnoteAnchorNode, FootnoteNode, FootnoteReferenceNode, HardBreakNode, HeadingNode, HighlightNode, HtmlBlockNode, HtmlComponent, HtmlComponentMap, HtmlInlineNode, HtmlPreviewFrame, HtmlPreviewFrameProps, ImageNode, ImageNodeProps, InfographicBlockNode, InfographicBlockNodeProps, InlineCodeNode, InsertNode, LinkNode, LinkNodeProps, LinkNodeStyleProps, ListItemNode, ListItemNodeProps, ListNode, MarkdownCodeBlockNode, MarkdownCodeBlockNodeProps, MarkstreamCustomComponent, MathBlockNode, MathBlockNodeProps, MathInlineNode, MathInlineNodeProps, MermaidBlockEvent, MermaidBlockNode, MermaidBlockNodeProps, NodeComponentProps, NodeRenderer, NodeRendererCodeBlockProps, NodeRendererProps, CodeBlockNode as OctaneCodeBlockNode, ParagraphNode, PreCodeNode, PreCodeNodeProps, ReferenceNode, ShikiCodeBlockProps, StreamingComponent, StreamingComponentMap, StrikethroughNode, StrongNode, SubscriptNode, SuperscriptNode, TableNode, TextNode, ThematicBreakNode, Tooltip, TooltipPlacement, TooltipProps, VmrContainerNode, clearGlobalCustomComponents, NodeRenderer as default, defineHtmlComponents, defineStreamingComponents, getCustomComponentDisplay, getCustomNodeComponents, removeCustomComponents, renderNode, setCustomComponents, withMarkstreamComponentDisplay };
@@ -0,0 +1,4 @@
1
+ const safeList = `octane [markstream-octane] htmlPreviewSandbox contains both allow-scripts and this only fully trusted content served an isolated string en utf-8 viewport content="width=device-width initial-scale=1 event.key html-preview-frame__header html-preview-frame__title html-preview-frame__dot html-preview-frame__label ×\n html-preview-frame__iframe no-referrer about:blank typeof dependency is not install it to enable clsx name markstream-d2-root-svg number window.requestAnimationFrame d2InstanceRef.current instance.render throw new instance missing object render returned empty top d2-block my-4 rounded-lg border overflow-hidden shadow-sm border-gray-700/30 bg-gray-900 text-gray-100 border-gray-200 bg-white text-gray-900 d2-block-header flex justify-between items-center px-4 py-2.5 border-b border-gray-400/5 gap-x-2 text-sm font-medium font-mono gap-x-1 rounded-md mode-btn px-2 py-1 text-xs !showSource showSource d2-action-btn p-2 transition-colors hover:bg-[var(--vscode-editor-selectionBackground)] aria-label aria-hidden w-3 h-3 none currentColor round aria-pressed m9 d2-block-body d2-source py-4 d2-code d2-error mt-2 d2-render d2-svg pb-3 list-node my-5 pl-[calc(13/8*1em)] list-decimal list-disc max-lg:my-[calc(4/3*1em)] max-lg:pl-[calc(14/9*1em)] list markstream-core plaintext vitesse-dark vitesse-light canonicalLanguage shiki shiki-fallback console.warn('[MarkdownCodeBlockNode] dispose stream-markdown available [MarkdownCodeBlockNode] stale ready failed requires with using default language register configured retrying without clientX navigator.clipboard navigator.clipboard.writeText code-block-container is-dark code-block-header space-x-2 icon-slot h-4 w-4 flex-shrink-0 code-action-btn m14 code-block-content auto code-block-render code-fallback-plain code-loading-placeholder loading-skeleton skeleton-line short stream-markdown-parser mermaid loose strict hidden viewBox gantt open-modal keydown fullscreen [data-mermaid-wrapper] mermaid-action-btn rounded text-gray-400 hover:bg-gray-700 hover:text-gray-200 text-gray-600 hover:bg-gray-200 hover:text-gray-700 toggle-mode preview relative absolute top-2 right-2 z-10 gap-2 backdrop-blur common.zoomIn common.zoomOut −\n common.resetZoom min-h-[360px] block transition-[height] duration-150 data-mermaid-wrapper inset-0 w-full text-center justify-center min-h-full mermaid-loading mermaid-spinner diagram… mermaid-block-header bg-gray-800 bg-gray-50 space-x-1 px-2.5 bg-gray-600 text-gray-200 text-gray-700 text-gray-500 common.preview source common.source m16 opacity-50 common.export m7 p-4 text-gray-300 whitespace-pre-wrap mermaid-error data-markstream-mermaid hasRenderedOnce markstream-octane mermaid-modal-overlay dialog aria-modal mermaid-modal-header mermaid-modal-title mermaid-modal-close common.close mermaid-modal-body mermaid-modal-content abort timed out class=\"unknown-node italic\">\n node type:\n ?? image paragraph paragraph-node child.type renderNode ctx click mouseenter mouseleave class=\"reference-node cursor-pointer bg-[hsl(var(--muted))] px-1.5 mx-0.5 $$click $$mouseenter $$mouseleave $$keydown class=\"mb-4\"><dt class=\"definition-term font-semibold\"></dt><dd class=\"definition-desc definition data-index-key mb-4 dt definition-term font-semibold dd definition-desc ml-4 token.type child value safe ms-html text self_closing tag_open tag_close parse escape html-inline dynamic template html-inline-node html-inline-node--loading inline class=\"admonition-header\"><!><span id note admonition-icon admonition-toggle aria-expanded aria-controls collapsed admonition-content aria-labelledby class=\"footnote-reference\"><span>\n footnote-link className ref smooth [katexWorkerClient] worker inject via init cache-hit busy timeout waiting slot class=\"footnote-node leading-relaxed border-t border-[var(--footnote-border,#eaecef)] pt-2\"><div library text-red-500 error transform ease center touches data-markstream-infographic hasPreview cursor-not-allowed infographic-preview transition-all duration-100 isDragging fixed z-50 bg-black/70 dialog-panel h-full max-w-full max-h-full shadow-lg top-6 right-6 inline-flex !isDragging node.type next.maxHeight infographic langs code_block html_inline text_special heading list_item definition_list footnote footnote_reference footnote_anchor admonition hardbreak boolean inline_code emphasis strikethrough highlight insert subscript superscript checkbox checkbox_input emoji thematic_break math_inline math_block reference html_block vmr_container label_open label_close class=\"checkbox-node\"><input cannot delete global call clearGlobalCustomComponents was provided in streamingComponents entry will be used parser-backed html-block-node html-block html-block-node__placeholder html-block-node__placeholder-bar w-4/5 w-2/3 animationend $$animationend text-node-stream-delta text-node-stream-delta--a text-node-stream-delta--b text-node node.center class=\"inline-code text-[85%] px-1 py-0.5 bg-[hsl(var(--secondary))] whitespace-normal break-words heading-node class=\"table-node-wrapper\"><table><!><thead class=\"border-[var(--table-border,#cbd5e1)]\"><tr p-[calc(4/7*1em)] table-node__resize-handle rowIdx bodyRows.length aria-busy text-left pointermove pointerup pointercancel my-8 isLoading table-node__loading status aria-live polite table-node__spinner sr-only [mermaidWorkerClient] messageerror cleared canParse findPrefix class=\"hr-node primary fallback async placeholder image-node__placeholder image-node__spinner image-node__placeholder-text image… image-node__error load dark window.matchMedia ms-tooltip z-[9999] inline-block text-base py-2 px-3 shadow-md whitespace-nowrap pointer-events-none tooltip-element text-white border-gray-700 tooltip javascript typescript go python ruby shell powershell d2 plain cpp csharp objectivec objectivecpp yaml markdown rust kotlin class=\"footnote-anchor hover:underline cursor-pointer\">\n ↩︎\n href zoom class=\"list-item pl-1.5 list-item target rel infinite node.title link-loading items-baseline gap-1.5 link-text-wrapper leading-[normal] link-text link-loading-indicator noopener noreferrer class=\"math-block overflow-x-auto math-rendering $$ math-inline__loading math-inline__spinner thinking data-language data-markstream-line-numbers diff !options.preserveBlankKind added context markstream-pre__diff-pane--inline original markstream-pre__diff-pane--original modified markstream-pre__diff-pane--modified removed no markstream-pre__diff-code markstream-pre__diff-line markstream-pre__diff-rail markstream-pre__diff-number markstream-pre__diff-content markstream-pre__diff-content-inner normalizedType document viteEnv.MODE development process °C role aria-describedby module did expected sequencediagram classdiagram kind statediagram erdiagram flowchart graph globalThis.requestAnimationFrame globalThis.cancelAnimationFrame class children key indexKey prototype constructor next next.type window.requestIdleCallback [data-node-index] node-spacer data-custom-id node-slot data-node-index data-node-type fade-node node-placeholder typewriter-cursor [data-node-type="code_block"] [data-node-type="admonition"] [data-node-type="table"] [data-node-type="math_block"] [data-node-type="html_block"] [data-node-type="image"] performance [markstream-octane][perf] theme markdown-renderer class=\"code-editor-layer\"><div></div><div code-height-placeholder m-0 style.visibility line-info legacy off never background night moon black dracula mocha frappe macchiato palenight ocean poimandres monokai laserwave tokyo slack-dark rose-pine github-dark material-theme one-dark catppuccin-mocha catppuccin-frappe catppuccin-macchiato visible max-height height onDidUpdateDiff onDidContentSizeChange onDidLayoutChange window.MutationObserver record.type explicit fontSize lineHeight paddingBottom paddingTop tabSize on same single window.cancelAnimationFrame flex-1 truncate evenodd katex stream-monaco cite existingEnv.getWorkerUrl`;
2
+ module.exports = safeList;
3
+ module.exports.safeList = safeList;
4
+ module.exports.default = safeList;
@@ -0,0 +1,2 @@
1
+ export declare const safeList: string
2
+ export default safeList