Skip to content

Commit 0e7ca8b

Browse files
feat: add use remark sync hook
1 parent 642866f commit 0e7ca8b

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

src/index.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,33 @@ import { Options as RemarkRehypeOptions } from 'mdast-util-to-hast';
1313
import remarkToRehype from 'remark-rehype';
1414
import rehypeReact, { Options as RehypeReactOptions } from 'rehype-react';
1515

16-
export interface UseRemarkOptions {
16+
export interface UseRemarkSyncOptions {
1717
remarkParseOptions?: Partial<RemarkParseOptions>;
1818
remarkToRehypeOptions?: RemarkRehypeOptions;
1919
rehypeReactOptions?: Partial<RehypeReactOptions<typeof createElement>>;
2020
remarkPlugins?: PluggableList;
2121
rehypePlugins?: PluggableList;
22+
}
23+
24+
export const useRemarkSync = (
25+
source: string,
26+
{
27+
remarkParseOptions,
28+
remarkToRehypeOptions,
29+
rehypeReactOptions,
30+
remarkPlugins = [],
31+
rehypePlugins = [],
32+
}: UseRemarkOptions = {}
33+
): ReactElement =>
34+
unified()
35+
.use(remarkParse, remarkParseOptions)
36+
.use(remarkPlugins)
37+
.use(remarkToRehype, remarkToRehypeOptions)
38+
.use(rehypePlugins)
39+
.use(rehypeReact, { createElement, Fragment, ...rehypeReactOptions })
40+
.processSync(source).result as ReactElement;
41+
42+
export interface UseRemarkOptions extends UseRemarkSyncOptions {
2243
onError?: (err: Error) => void;
2344
}
2445

0 commit comments

Comments
 (0)