pd-markdown 1.0.1 → 2.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.
- package/package.json +3 -2
- package/packages/parser/dist/index.cjs +2 -2
- package/packages/parser/dist/index.cjs.map +1 -1
- package/packages/parser/dist/index.mjs +1 -1
- package/packages/web/dist/components/MarkdownRenderer.d.ts +1 -1
- package/packages/web/dist/components/MarkdownRenderer.d.ts.map +1 -1
- package/packages/web/dist/components/StreamMarkdownRenderer.d.ts +58 -0
- package/packages/web/dist/components/StreamMarkdownRenderer.d.ts.map +1 -0
- package/packages/web/dist/components/defaults/index.d.ts +16 -8
- package/packages/web/dist/components/defaults/index.d.ts.map +1 -1
- package/packages/web/dist/hooks/useMarkdown.d.ts +1 -1
- package/packages/web/dist/hooks/useMarkdown.d.ts.map +1 -1
- package/packages/web/dist/hooks/useStreamMarkdown.d.ts +59 -0
- package/packages/web/dist/hooks/useStreamMarkdown.d.ts.map +1 -0
- package/packages/web/dist/index.cjs +421 -12
- package/packages/web/dist/index.cjs.map +1 -1
- package/packages/web/dist/index.d.ts +2 -0
- package/packages/web/dist/index.d.ts.map +1 -1
- package/packages/web/dist/index.mjs +418 -11
- package/packages/web/dist/index.mjs.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pd-markdown",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A modular markdown parsing and rendering library",
|
|
6
6
|
"exports": {
|
|
@@ -77,9 +77,10 @@
|
|
|
77
77
|
"unified"
|
|
78
78
|
],
|
|
79
79
|
"license": "MIT",
|
|
80
|
+
"homepage": "https://github.com/LaoChen1994/pd-markdown",
|
|
80
81
|
"repository": {
|
|
81
82
|
"type": "git",
|
|
82
|
-
"url": "https://github.com/
|
|
83
|
+
"url": "https://github.com/LaoChen1994/pd-markdown"
|
|
83
84
|
},
|
|
84
85
|
"sideEffects": false,
|
|
85
86
|
"scripts": {
|
|
@@ -6,7 +6,7 @@ var remarkGfm = require('remark-gfm');
|
|
|
6
6
|
var remarkFrontmatter = require('remark-frontmatter');
|
|
7
7
|
var unistUtilVisit = require('unist-util-visit');
|
|
8
8
|
var yaml = require('yaml');
|
|
9
|
-
var
|
|
9
|
+
var pdMarkdownUtils = require('pd-markdown-utils');
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Extract text content from phrasing content nodes
|
|
@@ -31,7 +31,7 @@ function transformHeading(tree) {
|
|
|
31
31
|
const slugs = new Set();
|
|
32
32
|
unistUtilVisit.visit(tree, 'heading', (node) => {
|
|
33
33
|
const text = extractText(node.children);
|
|
34
|
-
const slug =
|
|
34
|
+
const slug = pdMarkdownUtils.uniqueSlugify(text, slugs);
|
|
35
35
|
// Add data.id to the heading node
|
|
36
36
|
const data = (node.data || {});
|
|
37
37
|
data.id = slug;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/plugins/transform/heading.ts","../src/plugins/transform/list.ts","../src/plugins/transform/table.ts","../src/processor.ts"],"sourcesContent":[null,null,null,null],"names":["visit","uniqueSlugify","parseYaml","unified"],"mappings":";;;;;;;;;;AAIA;;AAEG;AACH,SAAS,WAAW,CAAC,KAAwB,EAAA;AAC3C,IAAA,OAAO;AACJ,SAAA,GAAG,CAAC,CAAC,IAAI,KAAI;AACZ,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACxB,OAAO,IAAI,CAAC,KAAK;QACnB;AACA,QAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,WAAW,CAAC,IAAI,CAAC,QAA6B,CAAC;QACxD;AACA,QAAA,OAAO,EAAE;AACX,IAAA,CAAC;SACA,IAAI,CAAC,EAAE,CAAC;AACb;AAEA;;AAEG;AACG,SAAU,gBAAgB,CAAC,IAAU,EAAA;AACzC,IAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU;IAE/BA,oBAAK,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,IAAa,KAAI;QACvC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;QACvC,MAAM,IAAI,GAAGC,
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/plugins/transform/heading.ts","../src/plugins/transform/list.ts","../src/plugins/transform/table.ts","../src/processor.ts"],"sourcesContent":[null,null,null,null],"names":["visit","uniqueSlugify","parseYaml","unified"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import remarkGfm from 'remark-gfm';
|
|
|
4
4
|
import remarkFrontmatter from 'remark-frontmatter';
|
|
5
5
|
import { visit } from 'unist-util-visit';
|
|
6
6
|
import { parse } from 'yaml';
|
|
7
|
-
import { uniqueSlugify } from '
|
|
7
|
+
import { uniqueSlugify } from 'pd-markdown-utils';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Extract text content from phrasing content nodes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { FC, CSSProperties } from 'react';
|
|
2
2
|
import type { Root } from 'mdast';
|
|
3
|
-
import { type ParserOptions } from '
|
|
3
|
+
import { type ParserOptions } from 'pd-markdown-parser';
|
|
4
4
|
import type { ComponentMap } from './defaults';
|
|
5
5
|
export interface MarkdownRendererProps {
|
|
6
6
|
/** Markdown source string (will be parsed) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownRenderer.d.ts","sourceRoot":"","sources":["../../src/components/MarkdownRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"MarkdownRenderer.d.ts","sourceRoot":"","sources":["../../src/components/MarkdownRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,WAAW,qBAAqB;IACpC,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oDAAoD;IACpD,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,iCAAiC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IAClC,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,yDAAyD;IACzD,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAeD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA2BtD,CAAA"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { CSSProperties, FC, ReactNode } from 'react';
|
|
2
|
+
import type { Root } from 'mdast';
|
|
3
|
+
import { type ParserOptions } from 'pd-markdown-parser';
|
|
4
|
+
import type { ComponentMap } from './defaults';
|
|
5
|
+
export interface StreamMarkdownRendererProps {
|
|
6
|
+
/** The streaming markdown source string — pass accumulated text */
|
|
7
|
+
source: string;
|
|
8
|
+
/** Whether the stream is currently active/receiving data */
|
|
9
|
+
isStreaming?: boolean;
|
|
10
|
+
/** Pre-parsed AST (skip internal parsing when using useStreamMarkdown) */
|
|
11
|
+
ast?: Root;
|
|
12
|
+
/** Custom component overrides */
|
|
13
|
+
components?: Partial<ComponentMap>;
|
|
14
|
+
/** CSS class name for wrapper */
|
|
15
|
+
className?: string;
|
|
16
|
+
/** Inline styles for wrapper */
|
|
17
|
+
style?: CSSProperties;
|
|
18
|
+
/** Parser options */
|
|
19
|
+
parserOptions?: ParserOptions;
|
|
20
|
+
/** Whether to show a blinking cursor at the end while streaming. Default: true */
|
|
21
|
+
showCursor?: boolean;
|
|
22
|
+
/** Custom cursor element */
|
|
23
|
+
cursorElement?: ReactNode;
|
|
24
|
+
/** CSS class name for the animated wrapper on new content */
|
|
25
|
+
animationClassName?: string;
|
|
26
|
+
/** Whether to enable fade-in animation for new blocks. Default: true */
|
|
27
|
+
enableAnimation?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* StreamMarkdownRenderer — A streaming-aware markdown renderer.
|
|
31
|
+
*
|
|
32
|
+
* This component is designed for rendering AI-generated streaming markdown.
|
|
33
|
+
* It shows a blinking cursor at the end while content is being streamed,
|
|
34
|
+
* and optionally animates new content blocks as they appear.
|
|
35
|
+
*
|
|
36
|
+
* Usage patterns:
|
|
37
|
+
*
|
|
38
|
+
* 1. **With `useStreamMarkdown` hook** (recommended):
|
|
39
|
+
* ```tsx
|
|
40
|
+
* const stream = useStreamMarkdown()
|
|
41
|
+
* // ... consume stream
|
|
42
|
+
* <StreamMarkdownRenderer
|
|
43
|
+
* source={stream.source}
|
|
44
|
+
* ast={stream.ast}
|
|
45
|
+
* isStreaming={stream.isStreaming}
|
|
46
|
+
* />
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* 2. **Standalone** (pass source, let it parse internally):
|
|
50
|
+
* ```tsx
|
|
51
|
+
* <StreamMarkdownRenderer
|
|
52
|
+
* source={accumulatedText}
|
|
53
|
+
* isStreaming={isLoading}
|
|
54
|
+
* />
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare const StreamMarkdownRenderer: FC<StreamMarkdownRendererProps>;
|
|
58
|
+
//# sourceMappingURL=StreamMarkdownRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamMarkdownRenderer.d.ts","sourceRoot":"","sources":["../../src/components/StreamMarkdownRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AA4B9C,MAAM,WAAW,2BAA2B;IAC1C,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,iCAAiC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IAClC,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,qBAAqB;IACrB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,kFAAkF;IAClF,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,wEAAwE;IACxE,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAoCD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAuHlE,CAAA"}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { Heading
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
2
|
+
import { Heading } from './Heading';
|
|
3
|
+
import type { HeadingProps } from './Heading';
|
|
4
|
+
import { Paragraph } from './Paragraph';
|
|
5
|
+
import type { ParagraphProps } from './Paragraph';
|
|
6
|
+
import { List, ListItem } from './List';
|
|
7
|
+
import type { ListProps, ListItemProps } from './List';
|
|
8
|
+
import { Table, TableRow, TableCell } from './Table';
|
|
9
|
+
import type { TableProps, TableRowProps, TableCellProps } from './Table';
|
|
10
|
+
import { Code, InlineCodeComponent } from './Code';
|
|
11
|
+
import type { CodeProps, InlineCodeProps } from './Code';
|
|
12
|
+
import { Link } from './Link';
|
|
13
|
+
import type { LinkProps } from './Link';
|
|
14
|
+
import { Image } from './Image';
|
|
15
|
+
import type { ImageProps } from './Image';
|
|
16
|
+
import { Blockquote } from './Blockquote';
|
|
17
|
+
import type { BlockquoteProps } from './Blockquote';
|
|
10
18
|
export { Heading, Paragraph, List, ListItem, Table, TableRow, TableCell, Code, InlineCodeComponent, Link, Image, Blockquote, };
|
|
11
19
|
export type { HeadingProps, ParagraphProps, ListProps, ListItemProps, TableProps, TableRowProps, TableCellProps, CodeProps, InlineCodeProps, LinkProps, ImageProps, BlockquoteProps, };
|
|
12
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/defaults/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/defaults/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAGnD,OAAO,EACL,OAAO,EACP,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,mBAAmB,EACnB,IAAI,EACJ,KAAK,EACL,UAAU,GACX,CAAA;AAGD,YAAY,EACV,YAAY,EACZ,cAAc,EACd,SAAS,EACT,aAAa,EACb,UAAU,EACV,aAAa,EACb,cAAc,EACd,SAAS,EACT,eAAe,EACf,SAAS,EACT,UAAU,EACV,eAAe,GAChB,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;IAC/B,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,CAAA;IACnC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IACzB,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA;IACjC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAC3B,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA;IACjC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,CAAA;IACnC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IACzB,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,CAAA;IACrC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IACzB,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAC3B,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,CAAA;IAErC,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAa/B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMarkdown.d.ts","sourceRoot":"","sources":["../../src/hooks/useMarkdown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useMarkdown.d.ts","sourceRoot":"","sources":["../../src/hooks/useMarkdown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAerE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAOzE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { Root } from 'mdast';
|
|
2
|
+
import { type ParserOptions } from 'pd-markdown-parser';
|
|
3
|
+
export interface StreamState {
|
|
4
|
+
/** The current accumulated markdown source */
|
|
5
|
+
source: string;
|
|
6
|
+
/** The parsed AST of the current source */
|
|
7
|
+
ast: Root;
|
|
8
|
+
/** Whether the stream is currently receiving data */
|
|
9
|
+
isStreaming: boolean;
|
|
10
|
+
/** Whether the stream has completed */
|
|
11
|
+
isDone: boolean;
|
|
12
|
+
/** Error if any occurred */
|
|
13
|
+
error: Error | null;
|
|
14
|
+
}
|
|
15
|
+
export interface UseStreamMarkdownOptions {
|
|
16
|
+
/** Parser options */
|
|
17
|
+
parserOptions?: ParserOptions;
|
|
18
|
+
/** Callback when streaming starts */
|
|
19
|
+
onStart?: () => void;
|
|
20
|
+
/** Callback when a new chunk is received */
|
|
21
|
+
onChunk?: (chunk: string, fullText: string) => void;
|
|
22
|
+
/** Callback when streaming completes */
|
|
23
|
+
onDone?: (fullText: string) => void;
|
|
24
|
+
/** Callback on error */
|
|
25
|
+
onError?: (error: Error) => void;
|
|
26
|
+
/** Debounce interval for re-parsing (ms). Default: 50 */
|
|
27
|
+
parseDebounceMs?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface UseStreamMarkdownReturn extends StreamState {
|
|
30
|
+
/** Append a chunk of markdown text */
|
|
31
|
+
append: (chunk: string) => void;
|
|
32
|
+
/** Signal that the stream is complete */
|
|
33
|
+
done: () => void;
|
|
34
|
+
/** Reset the stream state */
|
|
35
|
+
reset: () => void;
|
|
36
|
+
/** Start consuming a ReadableStream */
|
|
37
|
+
consume: (stream: ReadableStream<string>) => Promise<void>;
|
|
38
|
+
/** Start consuming an async iterator */
|
|
39
|
+
consumeIterator: (iterator: AsyncIterable<string>) => Promise<void>;
|
|
40
|
+
/** Start consuming a fetch Response with SSE */
|
|
41
|
+
consumeResponse: (response: Response, options?: {
|
|
42
|
+
extractContent?: (data: string) => string | null;
|
|
43
|
+
}) => Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Hook for streaming markdown rendering.
|
|
47
|
+
*
|
|
48
|
+
* Provides a simple API to progressively append markdown text,
|
|
49
|
+
* automatically re-parsing into an AST that can be rendered
|
|
50
|
+
* by the MarkdownRenderer.
|
|
51
|
+
*
|
|
52
|
+
* Supports multiple consumption methods:
|
|
53
|
+
* - Manual `append()` + `done()` calls
|
|
54
|
+
* - `consume(readableStream)` for ReadableStream<string>
|
|
55
|
+
* - `consumeIterator(asyncIterable)` for async iterators
|
|
56
|
+
* - `consumeResponse(response)` for SSE/fetch responses
|
|
57
|
+
*/
|
|
58
|
+
export declare function useStreamMarkdown(options?: UseStreamMarkdownOptions): UseStreamMarkdownReturn;
|
|
59
|
+
//# sourceMappingURL=useStreamMarkdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStreamMarkdown.d.ts","sourceRoot":"","sources":["../../src/hooks/useStreamMarkdown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAErE,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,2CAA2C;IAC3C,GAAG,EAAE,IAAI,CAAA;IACT,qDAAqD;IACrD,WAAW,EAAE,OAAO,CAAA;IACpB,uCAAuC;IACvC,MAAM,EAAE,OAAO,CAAA;IACf,4BAA4B;IAC5B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,qBAAqB;IACrB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,wCAAwC;IACxC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,wBAAwB;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,sCAAsC;IACtC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,yCAAyC;IACzC,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,uCAAuC;IACvC,OAAO,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,wCAAwC;IACxC,eAAe,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnE,gDAAgD;IAChD,eAAe,EAAE,CACf,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;KAAE,KAC3D,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB;AAuBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAoRzB"}
|