@assistant-ui/react-markdown 0.7.13 → 0.7.15
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/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -1
- package/dist/memoization.d.ts +22 -0
- package/dist/memoization.d.ts.map +1 -0
- package/dist/memoization.js +60 -0
- package/dist/memoization.js.map +1 -0
- package/dist/memoization.mjs +33 -0
- package/dist/memoization.mjs.map +1 -0
- package/dist/overrides/CodeBlock.d.ts +0 -2
- package/dist/overrides/CodeBlock.d.ts.map +1 -1
- package/dist/overrides/CodeBlock.js +2 -4
- package/dist/overrides/CodeBlock.js.map +1 -1
- package/dist/overrides/CodeBlock.mjs +2 -4
- package/dist/overrides/CodeBlock.mjs.map +1 -1
- package/dist/overrides/CodeOverride.d.ts +2 -2
- package/dist/overrides/CodeOverride.d.ts.map +1 -1
- package/dist/overrides/CodeOverride.js +10 -8
- package/dist/overrides/CodeOverride.js.map +1 -1
- package/dist/overrides/CodeOverride.mjs +15 -10
- package/dist/overrides/CodeOverride.mjs.map +1 -1
- package/dist/overrides/PreOverride.d.ts +3 -2
- package/dist/overrides/PreOverride.d.ts.map +1 -1
- package/dist/overrides/PreOverride.js +3 -1
- package/dist/overrides/PreOverride.js.map +1 -1
- package/dist/overrides/PreOverride.mjs +8 -2
- package/dist/overrides/PreOverride.mjs.map +1 -1
- package/dist/overrides/defaultComponents.d.ts +0 -2
- package/dist/overrides/defaultComponents.d.ts.map +1 -1
- package/dist/overrides/defaultComponents.js +1 -1
- package/dist/overrides/defaultComponents.js.map +1 -1
- package/dist/overrides/defaultComponents.mjs +1 -1
- package/dist/overrides/defaultComponents.mjs.map +1 -1
- package/dist/primitives/MarkdownText.d.ts +2 -3
- package/dist/primitives/MarkdownText.d.ts.map +1 -1
- package/dist/primitives/MarkdownText.js +53 -32
- package/dist/primitives/MarkdownText.js.map +1 -1
- package/dist/primitives/MarkdownText.mjs +55 -33
- package/dist/primitives/MarkdownText.mjs.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +2 -0
- package/src/memoization.tsx +47 -0
- package/src/overrides/CodeBlock.tsx +0 -4
- package/src/overrides/CodeOverride.tsx +20 -8
- package/src/overrides/PreOverride.tsx +10 -2
- package/src/overrides/defaultComponents.tsx +3 -5
- package/src/primitives/MarkdownText.tsx +64 -36
|
@@ -4,9 +4,11 @@ import { INTERNAL, useContentPartText } from "@assistant-ui/react";
|
|
|
4
4
|
import {
|
|
5
5
|
ComponentRef,
|
|
6
6
|
ElementType,
|
|
7
|
+
FC,
|
|
7
8
|
forwardRef,
|
|
8
9
|
ForwardRefExoticComponent,
|
|
9
10
|
RefAttributes,
|
|
11
|
+
useMemo,
|
|
10
12
|
type ComponentPropsWithoutRef,
|
|
11
13
|
type ComponentType,
|
|
12
14
|
} from "react";
|
|
@@ -24,7 +26,7 @@ import { CodeOverride } from "../overrides/CodeOverride";
|
|
|
24
26
|
import { Primitive } from "@radix-ui/react-primitive";
|
|
25
27
|
import classNames from "classnames";
|
|
26
28
|
|
|
27
|
-
const { useSmooth } = INTERNAL;
|
|
29
|
+
const { useSmooth, useSmoothStatus, withSmoothContextProvider } = INTERNAL;
|
|
28
30
|
|
|
29
31
|
type MarkdownTextPrimitiveElement = ComponentRef<typeof Primitive.div>;
|
|
30
32
|
type PrimitiveDivProps = ComponentPropsWithoutRef<typeof Primitive.div>;
|
|
@@ -57,25 +59,37 @@ export type MarkdownTextPrimitiveProps = Omit<
|
|
|
57
59
|
smooth?: boolean | undefined;
|
|
58
60
|
};
|
|
59
61
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
62
|
+
const MarkdownTextInner: FC<MarkdownTextPrimitiveProps> = ({
|
|
63
|
+
components: userComponents,
|
|
64
|
+
componentsByLanguage = userComponents?.by_language,
|
|
65
|
+
smooth = true,
|
|
66
|
+
...rest
|
|
67
|
+
}) => {
|
|
68
|
+
const { text } = useSmooth(useContentPartText(), smooth);
|
|
69
|
+
|
|
70
|
+
const {
|
|
71
|
+
pre = DefaultPre,
|
|
72
|
+
code = DefaultCode,
|
|
73
|
+
SyntaxHighlighter = DefaultCodeBlockContent,
|
|
74
|
+
CodeHeader = DefaultCodeHeader,
|
|
75
|
+
} = userComponents ?? {};
|
|
76
|
+
const useCodeOverrideComponents = useMemo(() => {
|
|
77
|
+
return {
|
|
78
|
+
Pre: pre,
|
|
79
|
+
Code: code,
|
|
80
|
+
SyntaxHighlighter,
|
|
81
|
+
CodeHeader,
|
|
82
|
+
};
|
|
83
|
+
}, [pre, code, SyntaxHighlighter, CodeHeader]);
|
|
84
|
+
const CodeComponent = useCallbackRef((props) => (
|
|
85
|
+
<CodeOverride
|
|
86
|
+
components={useCodeOverrideComponents}
|
|
87
|
+
componentsByLanguage={componentsByLanguage}
|
|
88
|
+
{...props}
|
|
89
|
+
/>
|
|
90
|
+
));
|
|
78
91
|
|
|
92
|
+
const components: Options["components"] = useMemo(() => {
|
|
79
93
|
const {
|
|
80
94
|
pre = DefaultPre,
|
|
81
95
|
code = DefaultCode,
|
|
@@ -84,23 +98,35 @@ export const MarkdownTextPrimitive: ForwardRefExoticComponent<MarkdownTextPrimit
|
|
|
84
98
|
by_language,
|
|
85
99
|
...componentsRest
|
|
86
100
|
} = userComponents ?? {};
|
|
87
|
-
|
|
101
|
+
return {
|
|
88
102
|
...componentsRest,
|
|
89
103
|
pre: PreOverride,
|
|
90
|
-
code:
|
|
91
|
-
<CodeOverride
|
|
92
|
-
components={{
|
|
93
|
-
Pre: pre,
|
|
94
|
-
Code: code,
|
|
95
|
-
SyntaxHighlighter,
|
|
96
|
-
CodeHeader,
|
|
97
|
-
}}
|
|
98
|
-
componentsByLanguage={componentsByLanguage}
|
|
99
|
-
{...props}
|
|
100
|
-
/>
|
|
101
|
-
)),
|
|
104
|
+
code: CodeComponent,
|
|
102
105
|
};
|
|
106
|
+
}, [CodeComponent, userComponents, componentsByLanguage]);
|
|
107
|
+
|
|
108
|
+
return (
|
|
109
|
+
<ReactMarkdown components={components} {...rest}>
|
|
110
|
+
{text}
|
|
111
|
+
</ReactMarkdown>
|
|
112
|
+
);
|
|
113
|
+
};
|
|
103
114
|
|
|
115
|
+
const MarkdownTextPrimitiveImpl: ForwardRefExoticComponent<MarkdownTextPrimitiveProps> &
|
|
116
|
+
RefAttributes<MarkdownTextPrimitiveElement> = forwardRef<
|
|
117
|
+
MarkdownTextPrimitiveElement,
|
|
118
|
+
MarkdownTextPrimitiveProps
|
|
119
|
+
>(
|
|
120
|
+
(
|
|
121
|
+
{
|
|
122
|
+
className,
|
|
123
|
+
containerProps,
|
|
124
|
+
containerComponent: Container = "div",
|
|
125
|
+
...rest
|
|
126
|
+
},
|
|
127
|
+
forwardedRef,
|
|
128
|
+
) => {
|
|
129
|
+
const status = useSmoothStatus();
|
|
104
130
|
return (
|
|
105
131
|
<Container
|
|
106
132
|
data-status={status.type}
|
|
@@ -108,12 +134,14 @@ export const MarkdownTextPrimitive: ForwardRefExoticComponent<MarkdownTextPrimit
|
|
|
108
134
|
className={classNames(className, containerProps?.className)}
|
|
109
135
|
ref={forwardedRef}
|
|
110
136
|
>
|
|
111
|
-
<
|
|
112
|
-
{text}
|
|
113
|
-
</ReactMarkdown>
|
|
137
|
+
<MarkdownTextInner {...rest}></MarkdownTextInner>
|
|
114
138
|
</Container>
|
|
115
139
|
);
|
|
116
140
|
},
|
|
117
141
|
);
|
|
118
142
|
|
|
119
|
-
|
|
143
|
+
MarkdownTextPrimitiveImpl.displayName = "MarkdownTextPrimitive";
|
|
144
|
+
|
|
145
|
+
export const MarkdownTextPrimitive = withSmoothContextProvider(
|
|
146
|
+
MarkdownTextPrimitiveImpl,
|
|
147
|
+
);
|