markstream-solid 0.0.0-stage → 2.0.23

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 (102) hide show
  1. package/README.md +120 -2
  2. package/dist/client/extended-BTbixd9o.js +38 -0
  3. package/dist/client/index.js +5640 -0
  4. package/dist/client/katexWorkerClient-ZLzkPVv_.js +260 -0
  5. package/dist/client/languageIcon-CDTPjsAQ.js +280 -0
  6. package/dist/client/mermaidWorkerClient-BAvGYsCO.js +243 -0
  7. package/dist/client/utils/index.js +31 -0
  8. package/dist/client/utils/katex-threshold.js +32 -0
  9. package/dist/client/utils/performance-monitor.js +73 -0
  10. package/dist/client/utils/safeRaf.js +27 -0
  11. package/dist/client/workers/katexCdnWorker.js +177 -0
  12. package/dist/client/workers/katexRenderer.worker.js +45 -0
  13. package/dist/client/workers/katexWorkerClient.js +16 -0
  14. package/dist/client/workers/mermaidCdnWorker.js +226 -0
  15. package/dist/client/workers/mermaidParser.worker.js +73 -0
  16. package/dist/client/workers/mermaidWorkerClient.js +13 -0
  17. package/dist/components/BuiltinNodes.d.ts +42 -0
  18. package/dist/components/CodeBlockNode.d.ts +10 -0
  19. package/dist/components/DiagramBlockNode.d.ts +27 -0
  20. package/dist/components/HtmlPreviewFrame.d.ts +10 -0
  21. package/dist/components/MarkstreamProvider.d.ts +5 -0
  22. package/dist/components/MarkstreamVirtualTimeline.d.ts +35 -0
  23. package/dist/components/MathNode.d.ts +6 -0
  24. package/dist/components/NodeRenderer.d.ts +27 -0
  25. package/dist/components/NodeSlot.d.ts +11 -0
  26. package/dist/components/PreCodeBlock.d.ts +3 -0
  27. package/dist/components/PreCodeNode.d.ts +9 -0
  28. package/dist/components/RenderNode.d.ts +11 -0
  29. package/dist/components/StreamingTextNode.d.ts +2 -0
  30. package/dist/components/ToolbarButton.d.ts +14 -0
  31. package/dist/components/ToolbarIcon.d.ts +18 -0
  32. package/dist/components/Tooltip.d.ts +13 -0
  33. package/dist/components/lifecycle.d.ts +6 -0
  34. package/dist/components/mathHeightCache.d.ts +5 -0
  35. package/dist/components/rendererModeDefaults.d.ts +4 -0
  36. package/dist/components/shared/diagram-height.d.ts +16 -0
  37. package/dist/components/shared/node-helpers.d.ts +78 -0
  38. package/dist/components/shared/node-outlet-helpers.d.ts +10 -0
  39. package/dist/components/shared/render-window.d.ts +18 -0
  40. package/dist/components/shared/reuseParsedNodes.d.ts +3 -0
  41. package/dist/components/viewport.d.ts +5 -0
  42. package/dist/components/virtualLayoutKey.d.ts +13 -0
  43. package/dist/configuration.d.ts +9 -0
  44. package/dist/customComponents.d.ts +36 -0
  45. package/dist/enhanceRenderedHtml.d.ts +25 -0
  46. package/dist/hydrateCustomTagContent.d.ts +2 -0
  47. package/dist/i18n/useSafeI18n.d.ts +4 -0
  48. package/dist/icon-themes/index.d.ts +2 -0
  49. package/dist/icon-themes/material/core.d.ts +2 -0
  50. package/dist/icon-themes/material/extended.d.ts +2 -0
  51. package/dist/icon-themes/material/index.d.ts +2 -0
  52. package/dist/icon-themes/registry.d.ts +9 -0
  53. package/dist/icon-themes/types.d.ts +11 -0
  54. package/dist/index.css +3279 -0
  55. package/dist/index.d.ts +48 -0
  56. package/dist/index.px.css +3279 -0
  57. package/dist/index.tailwind.css +3279 -0
  58. package/dist/optional/d2.d.ts +17 -0
  59. package/dist/optional/infographic.d.ts +31 -0
  60. package/dist/optional/katex.d.ts +9 -0
  61. package/dist/optional/mermaid.d.ts +27 -0
  62. package/dist/optional/streamDiffs.d.ts +29 -0
  63. package/dist/renderMarkdownHtml.d.ts +30 -0
  64. package/dist/sanitizeHtmlContent.d.ts +2 -0
  65. package/dist/server/extended-CKyCqQt3.js +69 -0
  66. package/dist/server/index.js +6264 -0
  67. package/dist/server/languageIcon-TXkIEBPf.js +353 -0
  68. package/dist/server/utils/index.js +31 -0
  69. package/dist/server/utils/katex-threshold.js +41 -0
  70. package/dist/server/utils/performance-monitor.js +120 -0
  71. package/dist/server/utils/safeRaf.js +28 -0
  72. package/dist/server/workers/katexCdnWorker.js +190 -0
  73. package/dist/server/workers/katexWorkerClient.js +373 -0
  74. package/dist/server/workers/mermaidCdnWorker.js +238 -0
  75. package/dist/server/workers/mermaidWorkerClient.js +333 -0
  76. package/dist/streamDiffsWorker.d.ts +72 -0
  77. package/dist/tailwind.d.ts +2 -0
  78. package/dist/tailwind.js +3 -0
  79. package/dist/tooltip/singletonTooltip.d.ts +7 -0
  80. package/dist/types/component-props.d.ts +253 -0
  81. package/dist/types/node-renderer-props.d.ts +333 -0
  82. package/dist/useSmoothMarkdownStream.d.ts +22 -0
  83. package/dist/utils/clipboard.d.ts +1 -0
  84. package/dist/utils/d2RenderSalt.d.ts +1 -0
  85. package/dist/utils/footnoteTarget.d.ts +1 -0
  86. package/dist/utils/index.d.ts +8 -0
  87. package/dist/utils/katex-threshold.d.ts +20 -0
  88. package/dist/utils/languageIcon.d.ts +8 -0
  89. package/dist/utils/mermaidRenderId.d.ts +1 -0
  90. package/dist/utils/normalizeKaTeXRenderInput.d.ts +1 -0
  91. package/dist/utils/performance-monitor.d.ts +121 -0
  92. package/dist/utils/resolveLanguageIcon.d.ts +2 -0
  93. package/dist/utils/safeRaf.d.ts +2 -0
  94. package/dist/utils/virtualItemMeasurement.d.ts +5 -0
  95. package/dist/virtual-adapter.d.ts +165 -0
  96. package/dist/workers/katexCdnWorker.d.ts +20 -0
  97. package/dist/workers/katexRenderer.worker.d.ts +1 -0
  98. package/dist/workers/katexWorkerClient.d.ts +35 -0
  99. package/dist/workers/mermaidCdnWorker.d.ts +15 -0
  100. package/dist/workers/mermaidParser.worker.d.ts +1 -0
  101. package/dist/workers/mermaidWorkerClient.d.ts +15 -0
  102. package/package.json +149 -3
@@ -0,0 +1,78 @@
1
+ import type { BaseNode, HtmlPolicy, MarkdownIt, ParsedNode, ParseOptions } from 'stream-markdown-parser';
2
+ import type { CustomComponentMap, HtmlComponentMap } from '../../customComponents';
3
+ import type { CodeBlockOptions, CodeBlockPreviewPayload, CodeBlockTheme, CodeBlockThemes, D2BlockNodeProps, InfographicBlockNodeProps, MermaidBlockNodeProps } from '../../types/component-props';
4
+ import type { NodeRendererCodeBlockProps, NodeRendererProps, NodeRendererTypewriter } from '../../types/node-renderer-props';
5
+ import { getHtmlTagFromContent, hasCompleteHtmlTagContent, normalizeCustomHtmlTags, normalizeCustomHtmlTagName as normalizeTagName, stripCustomHtmlWrapper } from 'stream-markdown-parser';
6
+ export { getHtmlTagFromContent, hasCompleteHtmlTagContent, normalizeCustomHtmlTags, normalizeTagName, stripCustomHtmlWrapper, };
7
+ export type SolidRenderableNode = (ParsedNode | BaseNode) & Record<string, any>;
8
+ export type { CodeBlockPreviewPayload } from '../../types/component-props';
9
+ export type { NodeRendererCodeBlockProps, NodeRendererMode, NodeRendererProps } from '../../types/node-renderer-props';
10
+ export type NodeRendererMermaidProps = Partial<Omit<MermaidBlockNodeProps, 'node'>>;
11
+ export type NodeRendererD2Props = Partial<Omit<D2BlockNodeProps, 'node'>>;
12
+ export type NodeRendererInfographicProps = Partial<Omit<InfographicBlockNodeProps, 'node'>>;
13
+ export interface NodeRendererEvents {
14
+ onCopy?: (code: string) => void;
15
+ onHandleArtifactClick?: (payload: CodeBlockPreviewPayload) => void;
16
+ }
17
+ export interface SolidRenderContext {
18
+ viewportPriority?: boolean;
19
+ viewportPriorityOptions?: NodeRendererProps['viewportPriorityOptions'];
20
+ htmlComponents?: HtmlComponentMap;
21
+ customId?: string;
22
+ isDark?: boolean;
23
+ indexKey?: string;
24
+ final?: boolean;
25
+ typewriter?: NodeRendererTypewriter;
26
+ fade?: boolean;
27
+ textStreamState?: Map<string, string>;
28
+ streamRenderVersion?: number;
29
+ showTooltips?: boolean;
30
+ codeBlockStream?: boolean;
31
+ renderCodeBlocksAsPre?: boolean;
32
+ allowHtml?: boolean;
33
+ htmlPolicy?: HtmlPolicy;
34
+ customHtmlTags?: readonly string[];
35
+ parseOptions?: ParseOptions;
36
+ customMarkdownIt?: (md: MarkdownIt) => MarkdownIt;
37
+ codeBlockOptions?: CodeBlockOptions;
38
+ codeBlockProps?: NodeRendererCodeBlockProps;
39
+ mermaidProps?: NodeRendererMermaidProps;
40
+ d2Props?: NodeRendererD2Props;
41
+ infographicProps?: NodeRendererInfographicProps;
42
+ customComponents?: CustomComponentMap;
43
+ codeBlockThemes?: {
44
+ themes?: CodeBlockThemes;
45
+ darkTheme?: CodeBlockTheme;
46
+ lightTheme?: CodeBlockTheme;
47
+ minWidth?: string | number;
48
+ maxWidth?: string | number;
49
+ };
50
+ events: NodeRendererEvents;
51
+ }
52
+ export declare const BLOCK_LEVEL_TYPES: Set<string>;
53
+ export declare function buildRenderContext(props: NodeRendererProps, events?: NodeRendererEvents, textStreamState?: Map<string, string>, streamRenderVersion?: number): SolidRenderContext;
54
+ export declare function resolveParsedNodes(props: NodeRendererProps): SolidRenderableNode[];
55
+ export declare function getNodeList(value: unknown): SolidRenderableNode[];
56
+ export declare function isWhitespaceTextNode(node: SolidRenderableNode | null | undefined): boolean;
57
+ export declare function getMeaningfulLinkChildren(node: SolidRenderableNode | null | undefined): SolidRenderableNode[];
58
+ export declare function isImageOnlyLinkNode(node: SolidRenderableNode | null | undefined): boolean;
59
+ export declare function isMediaOnlyParagraphNodes(children: readonly SolidRenderableNode[]): boolean;
60
+ export declare function normalizeMediaOnlyParagraphNodes(children: readonly SolidRenderableNode[]): SolidRenderableNode[];
61
+ export declare function getString(value: unknown): string;
62
+ export declare function isSafeAttrName(value: string): boolean;
63
+ export declare function escapeHtml(value: unknown): string;
64
+ export declare function escapeAttr(value: unknown): string;
65
+ export declare function sanitizeClassToken(value: string): string;
66
+ export declare function clampHeadingLevel(value: unknown): number;
67
+ export declare function capitalize(value: string): string;
68
+ export declare function normalizeCodeLanguage(raw: unknown): string;
69
+ export declare function resolveCodeBlockLanguage(node: SolidRenderableNode): string;
70
+ export declare function encodeDataPayload(value: string): any;
71
+ export declare function normalizeTokenAttrs(attrs?: Array<[string, string | null]> | null): Record<string, string | true> | null;
72
+ export declare function splitParagraphChildren(children: readonly SolidRenderableNode[], getDisplay?: (node: SolidRenderableNode) => 'inline' | 'block' | undefined): ({
73
+ kind: "inline";
74
+ nodes: SolidRenderableNode[];
75
+ } | {
76
+ kind: "block";
77
+ node: SolidRenderableNode;
78
+ })[];
@@ -0,0 +1,10 @@
1
+ import type { SolidRenderableNode, SolidRenderContext } from './node-helpers';
2
+ export type CodeBlockMode = 'mermaid' | 'd2' | 'infographic' | 'pre' | 'code';
3
+ export declare function resolveNodeOutletCodeMode(node: SolidRenderableNode, context?: SolidRenderContext): CodeBlockMode;
4
+ export declare function resolveHtmlTag(node: SolidRenderableNode): string;
5
+ export declare function coerceCustomHtmlNode(node: SolidRenderableNode): SolidRenderableNode;
6
+ export declare function coerceBuiltinHtmlNode(node: SolidRenderableNode, resolvedType: string): SolidRenderableNode;
7
+ export declare function resolveNodeOutletCustomInputs(node: SolidRenderableNode, context?: SolidRenderContext): Partial<Omit<import("../..").D2BlockNodeProps, "node">> | {
8
+ [x: string]: any;
9
+ } | null;
10
+ export declare function resolveNodeOutletCustomComponent(node: SolidRenderableNode, context?: SolidRenderContext, customComponents?: Record<string, any> | null): any;
@@ -0,0 +1,18 @@
1
+ export declare const DEFAULT_NODE_HEIGHT = 32;
2
+ export declare const MAX_DEFERRED_NODE_COUNT = 900;
3
+ export interface LiveRange {
4
+ start: number;
5
+ end: number;
6
+ }
7
+ export interface DeferNodesOptions {
8
+ deferNodesUntilVisible?: boolean;
9
+ maxLiveNodes?: number;
10
+ parsedNodeCount: number;
11
+ viewportPriority?: boolean;
12
+ virtualizationEnabled: boolean;
13
+ }
14
+ export declare function resolveVirtualizationEnabled(parsedNodeCount: number, maxLiveNodes?: number): boolean;
15
+ export declare function resolveDeferNodes(options: DeferNodesOptions): boolean;
16
+ export declare function resolveAverageNodeHeight(nodeHeights: ReadonlyMap<number, number>, fallback?: number): number;
17
+ export declare function estimateHeightRange(start: number, end: number, nodeHeights: ReadonlyMap<number, number>, averageNodeHeight: number): number;
18
+ export declare function computeLiveRange(total: number, focusIndex: number, maxLiveNodes?: number, liveNodeBuffer?: number): LiveRange;
@@ -0,0 +1,3 @@
1
+ import type { SolidRenderableNode } from './node-helpers';
2
+ export declare function sameParserValue(previous: unknown, next: unknown, seen?: WeakMap<object, object>): boolean;
3
+ export declare function reuseParsedNodes(previous: readonly SolidRenderableNode[] | undefined, next: SolidRenderableNode[]): SolidRenderableNode[];
@@ -0,0 +1,5 @@
1
+ import type { Accessor } from 'solid-js';
2
+ import type { SolidRenderContext } from './shared/node-helpers';
3
+ export declare function useHeavyNodeVisibility(props: {
4
+ context?: SolidRenderContext;
5
+ }, element: Accessor<Element | undefined>): Accessor<boolean>;
@@ -0,0 +1,13 @@
1
+ import type { NodeRendererProps } from '../types/node-renderer-props';
2
+ export interface VirtualRendererLayoutKeyOptions {
3
+ renderCodeBlocksAsPre: boolean;
4
+ isDark?: boolean;
5
+ codeBlockStream?: boolean;
6
+ codeBlockMinWidth?: NodeRendererProps['codeBlockMinWidth'];
7
+ codeBlockMaxWidth?: NodeRendererProps['codeBlockMaxWidth'];
8
+ codeBlockOptions?: NodeRendererProps['codeBlockOptions'];
9
+ codeBlockProps?: NodeRendererProps['codeBlockProps'];
10
+ }
11
+ export declare function stringifyVirtualToken(value: unknown): string;
12
+ export declare function buildVirtualRendererLayoutKey(options: VirtualRendererLayoutKeyOptions): string;
13
+ export declare function buildVirtualMeasurementKey(hostMeasurementKey: string | number | null | undefined, rendererLayoutKey: string): string;
@@ -0,0 +1,9 @@
1
+ import type { Accessor } from 'solid-js';
2
+ import type { CustomComponentMap } from './customComponents';
3
+ import type { LanguageIconResolver } from './utils/languageIcon';
4
+ export interface MarkstreamSolidOptions {
5
+ components?: CustomComponentMap;
6
+ defaultI18nMap?: Partial<Record<string, string>>;
7
+ languageIconResolver?: LanguageIconResolver | null;
8
+ }
9
+ export declare const MarkstreamConfigContext: import("solid-js").Context<Accessor<MarkstreamSolidOptions>>;
@@ -0,0 +1,36 @@
1
+ import type { Component, JSX } from 'solid-js';
2
+ import type { SolidRenderableNode, SolidRenderContext } from './components/shared/node-helpers';
3
+ import type { CodeBlockOptions, CodeBlockPreviewPayload } from './types/component-props';
4
+ export interface NodeComponentProps<TNode = SolidRenderableNode> {
5
+ node: TNode;
6
+ context?: SolidRenderContext;
7
+ ctx?: SolidRenderContext;
8
+ showTooltips?: boolean;
9
+ codeBlockOptions?: CodeBlockOptions;
10
+ onCopy?: (payload: any) => void;
11
+ onHandleArtifactClick?: (payload: CodeBlockPreviewPayload) => void;
12
+ indexKey?: string | number;
13
+ isDark?: boolean;
14
+ customId?: string;
15
+ typewriter?: boolean | 'simple' | 'precise';
16
+ fade?: boolean;
17
+ }
18
+ export type CustomComponentMap = Record<string, Component<NodeComponentProps<any>>>;
19
+ export type StreamingComponent<TNode = SolidRenderableNode> = Component<NodeComponentProps<TNode>>;
20
+ export type StreamingComponentMap = Record<string, StreamingComponent<any>>;
21
+ export type HtmlComponent<P = Record<string, unknown>> = Component<P & {
22
+ children?: JSX.Element;
23
+ }>;
24
+ export type HtmlComponentMap = Record<string, HtmlComponent<any>>;
25
+ export type CustomComponentDisplayMode = 'inline' | 'block';
26
+ export declare function defineStreamingComponents<T extends StreamingComponentMap>(components: T): T;
27
+ export declare function defineHtmlComponents<T extends HtmlComponentMap>(components: T): T;
28
+ export declare function withMarkstreamComponentDisplay<T extends Component<any>>(component: T, display: CustomComponentDisplayMode): T & {
29
+ markstreamDisplay: CustomComponentDisplayMode;
30
+ };
31
+ export declare function getCustomComponentDisplay(component?: Component<any> | null): CustomComponentDisplayMode | undefined;
32
+ export declare function setCustomComponents(mapping: CustomComponentMap): void;
33
+ export declare function setCustomComponents(id: string, mapping: CustomComponentMap): void;
34
+ export declare function getCustomNodeComponents(id?: string): CustomComponentMap;
35
+ export declare function removeCustomComponents(id: string): void;
36
+ export declare function clearGlobalCustomComponents(): void;
@@ -0,0 +1,25 @@
1
+ import type { NodeRendererCodeBlockProps, NodeRendererD2Props, NodeRendererInfographicProps, NodeRendererMermaidProps } from './components/shared/node-helpers';
2
+ import type { CodeBlockOptions, CodeBlockTheme, CodeBlockThemes } from './types/component-props';
3
+ export interface EnhanceRenderedHtmlOptions {
4
+ final?: boolean;
5
+ isDark?: boolean;
6
+ renderCodeBlocksAsPre?: boolean;
7
+ d2ThemeId?: number | null;
8
+ d2DarkThemeId?: number | null;
9
+ showTooltips?: boolean;
10
+ codeBlockOptions?: CodeBlockOptions;
11
+ codeBlockProps?: NodeRendererCodeBlockProps;
12
+ codeBlockDarkTheme?: CodeBlockTheme;
13
+ codeBlockLightTheme?: CodeBlockTheme;
14
+ themes?: CodeBlockThemes;
15
+ mermaidProps?: NodeRendererMermaidProps;
16
+ d2Props?: NodeRendererD2Props;
17
+ infographicProps?: NodeRendererInfographicProps;
18
+ onCopy?: (code: string) => void;
19
+ isCancelled?: () => boolean;
20
+ }
21
+ export interface RenderedHtmlEnhancementHandle {
22
+ dispose: () => void;
23
+ }
24
+ export declare function enhanceRenderedHtml(root: HTMLElement, options?: EnhanceRenderedHtmlOptions): Promise<RenderedHtmlEnhancementHandle>;
25
+ export declare function disposeRenderedHtmlEnhancements(root: HTMLElement | null | undefined): void;
@@ -0,0 +1,2 @@
1
+ import type { BaseNode } from 'stream-markdown-parser';
2
+ export declare function hydrateCustomTagContent<T extends BaseNode>(nodes: readonly T[] | null | undefined, source: string, customHtmlTags?: readonly string[]): T[];
@@ -0,0 +1,4 @@
1
+ export declare function setDefaultI18nMap(map: Partial<Record<string, string>>): void;
2
+ export declare function useSafeI18n(): {
3
+ t(key: string): string;
4
+ };
@@ -0,0 +1,2 @@
1
+ export { getRegisteredThemes, registerIconTheme, setIconTheme } from './registry';
2
+ export type { IconTheme, LanguageIconMap } from './types';
@@ -0,0 +1,2 @@
1
+ import type { LanguageIconMap } from '../types';
2
+ export declare const materialCoreMap: LanguageIconMap;
@@ -0,0 +1,2 @@
1
+ import type { LanguageIconMap } from '../types';
2
+ export declare const materialExtendedMap: LanguageIconMap;
@@ -0,0 +1,2 @@
1
+ import type { IconTheme } from '../types';
2
+ export declare const materialIconTheme: IconTheme;
@@ -0,0 +1,9 @@
1
+ import type { IconTheme } from './types';
2
+ export declare function _setRevisionBumper(fn: () => void): void;
3
+ export declare function registerIconTheme(theme: IconTheme): void;
4
+ export declare function setIconTheme(id: string): void;
5
+ export declare function getActiveTheme(): IconTheme | undefined;
6
+ export declare function getRegisteredThemes(): string[];
7
+ export declare function resolveFromTheme(normalized: string): string | undefined;
8
+ export declare function getThemeFallback(): string;
9
+ export declare function preloadActiveThemeExtended(): Promise<void>;
@@ -0,0 +1,11 @@
1
+ export type LanguageIconMap = Record<string, string>;
2
+ export interface IconTheme {
3
+ /** Unique identifier, e.g. 'default', 'material' */
4
+ readonly id: string;
5
+ /** Core icons — statically imported, always available */
6
+ readonly core: LanguageIconMap;
7
+ /** Default/fallback icon SVG string */
8
+ readonly fallback: string;
9
+ /** Lazy loader for extended icons. Called at most once; result is cached. */
10
+ loadExtended?: () => Promise<LanguageIconMap>;
11
+ }