@assistant-ui/react-markdown 0.2.22 → 0.2.24

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 (92) hide show
  1. package/dist/index.d.ts +6 -45
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +8 -307
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +7 -293
  6. package/dist/index.mjs.map +1 -1
  7. package/dist/overrides/CodeBlock.d.ts +14 -0
  8. package/dist/overrides/CodeBlock.d.ts.map +1 -0
  9. package/dist/overrides/CodeBlock.js +50 -0
  10. package/dist/overrides/CodeBlock.js.map +1 -0
  11. package/dist/overrides/CodeBlock.mjs +26 -0
  12. package/dist/overrides/CodeBlock.mjs.map +1 -0
  13. package/dist/overrides/CodeOverride.d.ts +16 -0
  14. package/dist/overrides/CodeOverride.d.ts.map +1 -0
  15. package/dist/overrides/CodeOverride.js +85 -0
  16. package/dist/overrides/CodeOverride.js.map +1 -0
  17. package/dist/overrides/CodeOverride.mjs +61 -0
  18. package/dist/overrides/CodeOverride.mjs.map +1 -0
  19. package/dist/overrides/PreOverride.d.ts +6 -0
  20. package/dist/overrides/PreOverride.d.ts.map +1 -0
  21. package/dist/overrides/PreOverride.js +41 -0
  22. package/dist/overrides/PreOverride.js.map +1 -0
  23. package/dist/overrides/PreOverride.mjs +15 -0
  24. package/dist/overrides/PreOverride.mjs.map +1 -0
  25. package/dist/overrides/defaultComponents.d.ts +13 -0
  26. package/dist/overrides/defaultComponents.d.ts.map +1 -0
  27. package/dist/overrides/defaultComponents.js +39 -0
  28. package/dist/overrides/defaultComponents.js.map +1 -0
  29. package/dist/overrides/defaultComponents.mjs +12 -0
  30. package/dist/overrides/defaultComponents.mjs.map +1 -0
  31. package/dist/overrides/types.d.ts +16 -0
  32. package/dist/overrides/types.d.ts.map +1 -0
  33. package/dist/overrides/types.js +17 -0
  34. package/dist/overrides/types.js.map +1 -0
  35. package/dist/overrides/types.mjs +1 -0
  36. package/dist/overrides/types.mjs.map +1 -0
  37. package/dist/overrides/withDefaults.d.ts +4 -0
  38. package/dist/overrides/withDefaults.d.ts.map +1 -0
  39. package/dist/overrides/withDefaults.js +49 -0
  40. package/dist/overrides/withDefaults.js.map +1 -0
  41. package/dist/overrides/withDefaults.mjs +15 -0
  42. package/dist/overrides/withDefaults.mjs.map +1 -0
  43. package/dist/primitives/MarkdownText.d.ts +22 -0
  44. package/dist/primitives/MarkdownText.d.ts.map +1 -0
  45. package/dist/primitives/MarkdownText.js +96 -0
  46. package/dist/primitives/MarkdownText.js.map +1 -0
  47. package/dist/primitives/MarkdownText.mjs +69 -0
  48. package/dist/primitives/MarkdownText.mjs.map +1 -0
  49. package/dist/styles/markdown.css +1 -0
  50. package/dist/styles/markdown.css.map +1 -0
  51. package/dist/tailwindcss/index.d.ts +4 -6
  52. package/dist/tailwindcss/index.d.ts.map +1 -0
  53. package/dist/tailwindcss/index.js +3 -76
  54. package/dist/tailwindcss/index.js.map +1 -1
  55. package/dist/tailwindcss/index.mjs +3 -75
  56. package/dist/tailwindcss/index.mjs.map +1 -1
  57. package/dist/ui/code-header.d.ts +4 -0
  58. package/dist/ui/code-header.d.ts.map +1 -0
  59. package/dist/ui/code-header.js +52 -0
  60. package/dist/ui/code-header.js.map +1 -0
  61. package/dist/ui/code-header.mjs +28 -0
  62. package/dist/ui/code-header.mjs.map +1 -0
  63. package/dist/ui/markdown-text.d.ts +4 -0
  64. package/dist/ui/markdown-text.d.ts.map +1 -0
  65. package/dist/ui/markdown-text.js +112 -0
  66. package/dist/ui/markdown-text.js.map +1 -0
  67. package/dist/ui/markdown-text.mjs +80 -0
  68. package/dist/ui/markdown-text.mjs.map +1 -0
  69. package/dist/ui/useCopyToClipboard.d.ts +7 -0
  70. package/dist/ui/useCopyToClipboard.d.ts.map +1 -0
  71. package/dist/ui/useCopyToClipboard.js +42 -0
  72. package/dist/ui/useCopyToClipboard.js.map +1 -0
  73. package/dist/ui/useCopyToClipboard.mjs +18 -0
  74. package/dist/ui/useCopyToClipboard.mjs.map +1 -0
  75. package/package.json +15 -21
  76. package/src/index.ts +18 -0
  77. package/src/overrides/CodeBlock.tsx +41 -0
  78. package/src/overrides/CodeOverride.tsx +91 -0
  79. package/src/overrides/PreOverride.tsx +15 -0
  80. package/src/overrides/defaultComponents.tsx +21 -0
  81. package/src/overrides/types.ts +22 -0
  82. package/src/overrides/withDefaults.tsx +14 -0
  83. package/src/primitives/MarkdownText.tsx +110 -0
  84. package/src/styles/tailwindcss/markdown.css +106 -0
  85. package/src/tailwindcss/index.ts +8 -0
  86. package/src/ui/code-header.tsx +32 -0
  87. package/src/ui/markdown-text.tsx +114 -0
  88. package/src/ui/useCopyToClipboard.tsx +21 -0
  89. package/tailwindcss/README.md +1 -0
  90. package/tailwindcss/package.json +5 -0
  91. package/dist/index.d.mts +0 -45
  92. package/dist/tailwindcss/index.d.mts +0 -11
package/dist/index.mjs CHANGED
@@ -1,297 +1,11 @@
1
- "use client";
2
-
3
- // src/primitives/MarkdownText.tsx
4
- import { INTERNAL, useContentPartText } from "@assistant-ui/react";
5
1
  import {
6
- forwardRef
7
- } from "react";
8
- import ReactMarkdown from "react-markdown";
9
-
10
- // src/overrides/PreOverride.tsx
11
- import { createContext, useContext } from "react";
12
- import { jsx } from "react/jsx-runtime";
13
- var PreContext = createContext(null);
14
- var useIsMarkdownCodeBlock = () => {
15
- return useContext(PreContext) !== null;
16
- };
17
- var PreOverride = ({ children, ...rest }) => {
18
- return /* @__PURE__ */ jsx(PreContext.Provider, { value: rest, children });
19
- };
20
-
21
- // src/overrides/defaultComponents.tsx
22
- import { jsx as jsx2 } from "react/jsx-runtime";
23
- var DefaultPre = ({ node, ...rest }) => /* @__PURE__ */ jsx2("pre", { ...rest });
24
- var DefaultCode = ({ node, ...rest }) => /* @__PURE__ */ jsx2("code", { ...rest });
25
- var DefaultCodeBlockContent = ({ components: { Pre, Code }, code }) => /* @__PURE__ */ jsx2(Pre, { children: /* @__PURE__ */ jsx2(Code, { children: code }) });
26
- var DefaultCodeHeader = () => null;
27
-
28
- // src/primitives/MarkdownText.tsx
29
- import { useCallbackRef as useCallbackRef2 } from "@radix-ui/react-use-callback-ref";
30
-
31
- // src/overrides/CodeOverride.tsx
32
- import { useContext as useContext2 } from "react";
33
-
34
- // src/overrides/CodeBlock.tsx
35
- import { useMemo } from "react";
36
- import { Fragment, jsx as jsx3, jsxs } from "react/jsx-runtime";
37
- var DefaultCodeBlock = ({
38
- components: { Pre, Code, SyntaxHighlighter, CodeHeader: CodeHeader2 },
39
- language,
40
- code
41
- }) => {
42
- const components = useMemo(() => ({ Pre, Code }), [Pre, Code]);
43
- const SH = !!language ? SyntaxHighlighter : DefaultCodeBlockContent;
44
- return /* @__PURE__ */ jsxs(Fragment, { children: [
45
- /* @__PURE__ */ jsx3(CodeHeader2, { language, code }),
46
- /* @__PURE__ */ jsx3(
47
- SH,
48
- {
49
- components,
50
- language: language ?? "unknown",
51
- code
52
- }
53
- )
54
- ] });
55
- };
56
-
57
- // src/overrides/CodeOverride.tsx
58
- import { useCallbackRef } from "@radix-ui/react-use-callback-ref";
59
-
60
- // src/overrides/withDefaults.tsx
61
- import classNames from "classnames";
62
- var withDefaultProps = ({
63
- className,
64
- ...defaultProps
65
- }) => ({ className: classNameProp, ...props }) => {
66
- return {
67
- className: classNames(className, classNameProp),
68
- ...defaultProps,
69
- ...props
70
- };
71
- };
72
-
73
- // src/overrides/CodeOverride.tsx
74
- import { jsx as jsx4 } from "react/jsx-runtime";
75
- var CodeBlockOverride = ({
76
- components: {
77
- Pre,
78
- Code,
79
- SyntaxHighlighter: FallbackSyntaxHighlighter,
80
- CodeHeader: FallbackCodeHeader,
81
- by_language = {}
82
- },
83
- children,
84
- ...codeProps
85
- }) => {
86
- const preProps = useContext2(PreContext);
87
- const getPreProps = withDefaultProps(preProps);
88
- const WrappedPre = useCallbackRef((props) => /* @__PURE__ */ jsx4(Pre, { ...getPreProps(props) }));
89
- const getCodeProps = withDefaultProps(codeProps);
90
- const WrappedCode = useCallbackRef((props) => /* @__PURE__ */ jsx4(Code, { ...getCodeProps(props) }));
91
- const language = /language-(\w+)/.exec(codeProps.className || "")?.[1] ?? "";
92
- if (typeof children !== "string") {
93
- return /* @__PURE__ */ jsx4(
94
- DefaultCodeBlockContent,
95
- {
96
- components: { Pre: WrappedPre, Code: WrappedCode },
97
- code: children
98
- }
99
- );
100
- }
101
- const SyntaxHighlighter = by_language[language]?.SyntaxHighlighter ?? FallbackSyntaxHighlighter;
102
- const CodeHeader2 = by_language[language]?.CodeHeader ?? FallbackCodeHeader;
103
- return /* @__PURE__ */ jsx4(
104
- DefaultCodeBlock,
105
- {
106
- components: {
107
- Pre: WrappedPre,
108
- Code: WrappedCode,
109
- SyntaxHighlighter,
110
- CodeHeader: CodeHeader2
111
- },
112
- language: language || "unknown",
113
- code: children
114
- }
115
- );
116
- };
117
- var CodeOverride = ({
118
- components,
119
- ...props
120
- }) => {
121
- const preProps = useContext2(PreContext);
122
- if (!preProps) return /* @__PURE__ */ jsx4(components.Code, { ...props });
123
- return /* @__PURE__ */ jsx4(CodeBlockOverride, { components, ...props });
124
- };
125
-
126
- // src/primitives/MarkdownText.tsx
127
- import classNames2 from "classnames";
128
- import { jsx as jsx5 } from "react/jsx-runtime";
129
- var { useSmooth } = INTERNAL;
130
- var MarkdownTextPrimitive = forwardRef(
131
- ({
132
- components: userComponents,
133
- className,
134
- containerProps,
135
- containerComponent: Container = "div",
136
- ...rest
137
- }, forwardedRef, smooth = true) => {
138
- const { text, status } = useSmooth(useContentPartText(), smooth);
139
- const {
140
- pre = DefaultPre,
141
- code = DefaultCode,
142
- SyntaxHighlighter = DefaultCodeBlockContent,
143
- CodeHeader: CodeHeader2 = DefaultCodeHeader,
144
- by_language,
145
- ...componentsRest
146
- } = userComponents ?? {};
147
- const components = {
148
- ...componentsRest,
149
- pre: PreOverride,
150
- code: useCallbackRef2((props) => /* @__PURE__ */ jsx5(
151
- CodeOverride,
152
- {
153
- components: {
154
- Pre: pre,
155
- Code: code,
156
- SyntaxHighlighter,
157
- CodeHeader: CodeHeader2,
158
- by_language
159
- },
160
- ...props
161
- }
162
- ))
163
- };
164
- return /* @__PURE__ */ jsx5(
165
- Container,
166
- {
167
- "data-status": status.type,
168
- ...containerProps,
169
- className: classNames2(className, containerProps?.className),
170
- ref: forwardedRef,
171
- children: /* @__PURE__ */ jsx5(ReactMarkdown, { components, ...rest, children: text })
172
- }
173
- );
174
- }
175
- );
176
- MarkdownTextPrimitive.displayName = "MarkdownTextPrimitive";
177
-
178
- // src/ui/markdown-text.tsx
179
- import { memo } from "react";
180
-
181
- // src/ui/code-header.tsx
182
- import { CheckIcon, CopyIcon } from "lucide-react";
183
- import { INTERNAL as INTERNAL2, useThreadConfig } from "@assistant-ui/react";
184
-
185
- // src/ui/useCopyToClipboard.tsx
186
- import { useState } from "react";
187
- var useCopyToClipboard = ({
188
- copiedDuration = 3e3
189
- } = {}) => {
190
- const [isCopied, setIsCopied] = useState(false);
191
- const copyToClipboard = (value) => {
192
- if (!value) return;
193
- navigator.clipboard.writeText(value).then(() => {
194
- setIsCopied(true);
195
- setTimeout(() => setIsCopied(false), copiedDuration);
196
- });
197
- };
198
- return { isCopied, copyToClipboard };
199
- };
200
-
201
- // src/ui/code-header.tsx
202
- import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
203
- var { TooltipIconButton } = INTERNAL2;
204
- var CodeHeader = ({ language, code }) => {
205
- const {
206
- strings: {
207
- code: { header: { copy: { tooltip = "Copy" } = {} } = {} } = {}
208
- } = {}
209
- } = useThreadConfig();
210
- const { isCopied, copyToClipboard } = useCopyToClipboard();
211
- const onCopy = () => {
212
- if (!code || isCopied) return;
213
- copyToClipboard(code);
214
- };
215
- return /* @__PURE__ */ jsxs2("div", { className: "aui-code-header-root", children: [
216
- /* @__PURE__ */ jsx6("span", { className: "aui-code-header-language", children: language }),
217
- /* @__PURE__ */ jsxs2(TooltipIconButton, { tooltip, onClick: onCopy, children: [
218
- !isCopied && /* @__PURE__ */ jsx6(CopyIcon, {}),
219
- isCopied && /* @__PURE__ */ jsx6(CheckIcon, {})
220
- ] })
221
- ] });
222
- };
223
-
224
- // src/ui/markdown-text.tsx
225
- import classNames3 from "classnames";
226
- import { INTERNAL as INTERNAL3 } from "@assistant-ui/react";
227
- import { jsx as jsx7 } from "react/jsx-runtime";
228
- var { withSmoothContextProvider, useSmoothStatus } = INTERNAL3;
229
- var defaultComponents = {
230
- h1: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("h1", { className: classNames3("aui-md-h1", className), ...props }),
231
- h2: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("h2", { className: classNames3("aui-md-h2", className), ...props }),
232
- h3: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("h3", { className: classNames3("aui-md-h3", className), ...props }),
233
- h4: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("h4", { className: classNames3("aui-md-h4", className), ...props }),
234
- h5: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("h5", { className: classNames3("aui-md-h5", className), ...props }),
235
- h6: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("h6", { className: classNames3("aui-md-h6", className), ...props }),
236
- p: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("p", { className: classNames3("aui-md-p", className), ...props }),
237
- a: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("a", { className: classNames3("aui-md-a", className), ...props }),
238
- blockquote: ({ node, className, ...props }) => /* @__PURE__ */ jsx7(
239
- "blockquote",
240
- {
241
- className: classNames3("aui-md-blockquote", className),
242
- ...props
243
- }
244
- ),
245
- ul: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("ul", { className: classNames3("aui-md-ul", className), ...props }),
246
- ol: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("ol", { className: classNames3("aui-md-ol", className), ...props }),
247
- hr: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("hr", { className: classNames3("aui-md-hr", className), ...props }),
248
- table: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("table", { className: classNames3("aui-md-table", className), ...props }),
249
- th: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("th", { className: classNames3("aui-md-th", className), ...props }),
250
- td: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("td", { className: classNames3("aui-md-td", className), ...props }),
251
- tr: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("tr", { className: classNames3("aui-md-tr", className), ...props }),
252
- sup: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("sup", { className: classNames3("aui-md-sup", className), ...props }),
253
- pre: ({ node, className, ...props }) => /* @__PURE__ */ jsx7("pre", { className: classNames3("aui-md-pre", className), ...props }),
254
- code: ({ node, className, ...props }) => {
255
- const isCodeBlock = useIsMarkdownCodeBlock();
256
- return /* @__PURE__ */ jsx7(
257
- "code",
258
- {
259
- className: classNames3(!isCodeBlock && "aui-md-inline-code", className),
260
- ...props
261
- }
262
- );
263
- },
264
- CodeHeader
265
- };
266
- var makeMarkdownText = ({
267
- className,
268
- components: userComponents,
269
- ...rest
270
- } = {}) => {
271
- const components = {
272
- ...defaultComponents,
273
- ...Object.fromEntries(
274
- // ignore undefined values, so undefined values do not override default components
275
- Object.entries(userComponents ?? {}).filter(([_, v]) => v !== void 0)
276
- )
277
- };
278
- const MarkdownTextImpl = () => {
279
- const status = useSmoothStatus();
280
- return /* @__PURE__ */ jsx7(
281
- MarkdownTextPrimitive,
282
- {
283
- components,
284
- ...rest,
285
- className: classNames3(
286
- status.type === "running" && "aui-md-running",
287
- className
288
- )
289
- }
290
- );
291
- };
292
- MarkdownTextImpl.displayName = "MarkdownText";
293
- return memo(withSmoothContextProvider(MarkdownTextImpl), () => true);
294
- };
2
+ MarkdownTextPrimitive
3
+ } from "./primitives/MarkdownText";
4
+ import { useIsMarkdownCodeBlock } from "./overrides/PreOverride";
5
+ import {
6
+ makeMarkdownText
7
+ } from "./ui/markdown-text";
8
+ import { CodeHeader } from "./ui/code-header";
295
9
  export {
296
10
  CodeHeader,
297
11
  MarkdownTextPrimitive,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/primitives/MarkdownText.tsx","../src/overrides/PreOverride.tsx","../src/overrides/defaultComponents.tsx","../src/overrides/CodeOverride.tsx","../src/overrides/CodeBlock.tsx","../src/overrides/withDefaults.tsx","../src/ui/markdown-text.tsx","../src/ui/code-header.tsx","../src/ui/useCopyToClipboard.tsx"],"sourcesContent":["\"use client\";\n\nimport { INTERNAL, useContentPartText } from \"@assistant-ui/react\";\nimport {\n ElementRef,\n ElementType,\n forwardRef,\n ForwardRefExoticComponent,\n RefAttributes,\n type ComponentPropsWithoutRef,\n type ComponentType,\n} from \"react\";\nimport ReactMarkdown, { type Options } from \"react-markdown\";\nimport { SyntaxHighlighterProps, CodeHeaderProps } from \"../overrides/types\";\nimport { PreOverride } from \"../overrides/PreOverride\";\nimport {\n DefaultPre,\n DefaultCode,\n DefaultCodeBlockContent,\n DefaultCodeHeader,\n} from \"../overrides/defaultComponents\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { CodeOverride } from \"../overrides/CodeOverride\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport classNames from \"classnames\";\n\nconst { useSmooth } = INTERNAL;\n\ntype MarkdownTextPrimitiveElement = ElementRef<typeof Primitive.div>;\ntype PrimitiveDivProps = ComponentPropsWithoutRef<typeof Primitive.div>;\n\nexport type MarkdownTextPrimitiveProps = Omit<\n Options,\n \"components\" | \"children\"\n> & {\n containerProps?: Omit<PrimitiveDivProps, \"children\" | \"asChild\">;\n containerComponent?: ElementType;\n components?: NonNullable<Options[\"components\"]> & {\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps>;\n CodeHeader?: ComponentType<CodeHeaderProps>;\n by_language?: Record<\n string,\n {\n CodeHeader?: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps>;\n }\n >;\n };\n smooth?: boolean;\n};\n\nexport const MarkdownTextPrimitive: ForwardRefExoticComponent<MarkdownTextPrimitiveProps> &\n RefAttributes<MarkdownTextPrimitiveElement> = forwardRef<\n MarkdownTextPrimitiveElement,\n MarkdownTextPrimitiveProps\n>(\n (\n {\n components: userComponents,\n className,\n containerProps,\n containerComponent: Container = \"div\",\n ...rest\n },\n forwardedRef,\n smooth = true,\n ) => {\n const { text, status } = useSmooth(useContentPartText(), smooth);\n\n const {\n pre = DefaultPre,\n code = DefaultCode,\n SyntaxHighlighter = DefaultCodeBlockContent,\n CodeHeader = DefaultCodeHeader,\n by_language,\n ...componentsRest\n } = userComponents ?? {};\n const components: typeof userComponents = {\n ...componentsRest,\n pre: PreOverride,\n code: useCallbackRef((props) => (\n <CodeOverride\n components={{\n Pre: pre,\n Code: code,\n SyntaxHighlighter,\n CodeHeader,\n by_language,\n }}\n {...props}\n />\n )),\n };\n\n return (\n <Container\n data-status={status.type}\n {...containerProps}\n className={classNames(className, containerProps?.className)}\n ref={forwardedRef}\n >\n <ReactMarkdown components={components} {...rest}>\n {text}\n </ReactMarkdown>\n </Container>\n );\n },\n);\n\nMarkdownTextPrimitive.displayName = \"MarkdownTextPrimitive\";\n","import { createContext, ComponentPropsWithoutRef, useContext } from \"react\";\nimport { PreComponent } from \"./types\";\n\nexport const PreContext = createContext<Omit<\n ComponentPropsWithoutRef<PreComponent>,\n \"children\"\n> | null>(null);\n\nexport const useIsMarkdownCodeBlock = () => {\n return useContext(PreContext) !== null;\n};\n\nexport const PreOverride: PreComponent = ({ children, ...rest }) => {\n return <PreContext.Provider value={rest}>{children}</PreContext.Provider>;\n};\n","import type { ComponentType, ReactNode } from \"react\";\nimport { PreComponent, CodeComponent, CodeHeaderProps } from \"./types\";\n\nexport const DefaultPre: PreComponent = ({ node, ...rest }) => (\n <pre {...rest} />\n);\n\nexport const DefaultCode: CodeComponent = ({ node, ...rest }) => (\n <code {...rest} />\n);\n\nexport const DefaultCodeBlockContent: ComponentType<{\n components: { Pre: PreComponent; Code: CodeComponent };\n code: string | ReactNode | undefined;\n}> = ({ components: { Pre, Code }, code }) => (\n <Pre>\n <Code>{code}</Code>\n </Pre>\n);\n\nexport const DefaultCodeHeader: ComponentType<CodeHeaderProps> = () => null;\n","import { ComponentPropsWithoutRef, ComponentType, FC, useContext } from \"react\";\nimport { PreContext } from \"./PreOverride\";\nimport {\n CodeComponent,\n CodeHeaderProps,\n PreComponent,\n SyntaxHighlighterProps,\n} from \"./types\";\nimport { DefaultCodeBlock } from \"./CodeBlock\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { withDefaultProps } from \"./withDefaults\";\nimport { DefaultCodeBlockContent } from \"./defaultComponents\";\n\nconst CodeBlockOverride: FC<CodeOverrideProps> = ({\n components: {\n Pre,\n Code,\n SyntaxHighlighter: FallbackSyntaxHighlighter,\n CodeHeader: FallbackCodeHeader,\n by_language = {},\n },\n children,\n ...codeProps\n}) => {\n const preProps = useContext(PreContext)!;\n const getPreProps = withDefaultProps<any>(preProps);\n const WrappedPre: PreComponent = useCallbackRef((props) => (\n <Pre {...getPreProps(props)} />\n ));\n\n const getCodeProps = withDefaultProps<any>(codeProps);\n const WrappedCode: CodeComponent = useCallbackRef((props) => (\n <Code {...getCodeProps(props)} />\n ));\n\n const language = /language-(\\w+)/.exec(codeProps.className || \"\")?.[1] ?? \"\";\n\n // if the code content is not string (due to rehype plugins), return a default code block\n if (typeof children !== \"string\") {\n return (\n <DefaultCodeBlockContent\n components={{ Pre: WrappedPre, Code: WrappedCode }}\n code={children}\n />\n );\n }\n\n const SyntaxHighlighter: ComponentType<SyntaxHighlighterProps> =\n by_language[language]?.SyntaxHighlighter ?? FallbackSyntaxHighlighter;\n\n const CodeHeader: ComponentType<CodeHeaderProps> =\n by_language[language]?.CodeHeader ?? FallbackCodeHeader;\n\n return (\n <DefaultCodeBlock\n components={{\n Pre: WrappedPre,\n Code: WrappedCode,\n SyntaxHighlighter,\n CodeHeader,\n }}\n language={language || \"unknown\"}\n code={children}\n />\n );\n};\n\nexport type CodeOverrideProps = ComponentPropsWithoutRef<CodeComponent> & {\n components: {\n Pre: PreComponent;\n Code: CodeComponent;\n CodeHeader: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;\n by_language?: Record<\n string,\n {\n CodeHeader?: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps>;\n }\n >;\n };\n};\n\nexport const CodeOverride: FC<CodeOverrideProps> = ({\n components,\n ...props\n}) => {\n const preProps = useContext(PreContext);\n if (!preProps) return <components.Code {...(props as any)} />;\n return <CodeBlockOverride components={components} {...props} />;\n};\n","import { ComponentType, FC, useMemo } from \"react\";\n\nimport {\n CodeComponent,\n CodeHeaderProps,\n PreComponent,\n SyntaxHighlighterProps,\n} from \"./types\";\nimport { DefaultCodeBlockContent } from \"./defaultComponents\";\n\nexport type CodeBlockProps = {\n language: string;\n code: string;\n components: {\n Pre: PreComponent;\n Code: CodeComponent;\n CodeHeader: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;\n };\n};\n\nexport const DefaultCodeBlock: FC<CodeBlockProps> = ({\n components: { Pre, Code, SyntaxHighlighter, CodeHeader },\n language,\n code,\n}) => {\n const components = useMemo(() => ({ Pre, Code }), [Pre, Code]);\n\n const SH = !!language ? SyntaxHighlighter : DefaultCodeBlockContent;\n\n return (\n <>\n <CodeHeader language={language} code={code} />\n <SH\n components={components}\n language={language ?? \"unknown\"}\n code={code}\n />\n </>\n );\n};\n","import classNames from \"classnames\";\n\nexport const withDefaultProps =\n <TProps extends { className?: string | undefined }>({\n className,\n ...defaultProps\n }: Partial<TProps>) =>\n ({ className: classNameProp, ...props }: TProps) => {\n return {\n className: classNames(className, classNameProp),\n ...defaultProps,\n ...props,\n } as TProps;\n };\n","import { FC, memo } from \"react\";\nimport { CodeHeader } from \"./code-header\";\nimport classNames from \"classnames\";\nimport {\n MarkdownTextPrimitive,\n MarkdownTextPrimitiveProps,\n} from \"../primitives/MarkdownText\";\nimport { INTERNAL } from \"@assistant-ui/react\";\nimport { useIsMarkdownCodeBlock } from \"../overrides/PreOverride\";\n\nconst { withSmoothContextProvider, useSmoothStatus } = INTERNAL;\n\nexport type MakeMarkdownTextProps = MarkdownTextPrimitiveProps;\n\nconst defaultComponents: MakeMarkdownTextProps[\"components\"] = {\n h1: ({ node, className, ...props }) => (\n <h1 className={classNames(\"aui-md-h1\", className)} {...props} />\n ),\n h2: ({ node, className, ...props }) => (\n <h2 className={classNames(\"aui-md-h2\", className)} {...props} />\n ),\n h3: ({ node, className, ...props }) => (\n <h3 className={classNames(\"aui-md-h3\", className)} {...props} />\n ),\n h4: ({ node, className, ...props }) => (\n <h4 className={classNames(\"aui-md-h4\", className)} {...props} />\n ),\n h5: ({ node, className, ...props }) => (\n <h5 className={classNames(\"aui-md-h5\", className)} {...props} />\n ),\n h6: ({ node, className, ...props }) => (\n <h6 className={classNames(\"aui-md-h6\", className)} {...props} />\n ),\n p: ({ node, className, ...props }) => (\n <p className={classNames(\"aui-md-p\", className)} {...props} />\n ),\n a: ({ node, className, ...props }) => (\n <a className={classNames(\"aui-md-a\", className)} {...props} />\n ),\n blockquote: ({ node, className, ...props }) => (\n <blockquote\n className={classNames(\"aui-md-blockquote\", className)}\n {...props}\n />\n ),\n ul: ({ node, className, ...props }) => (\n <ul className={classNames(\"aui-md-ul\", className)} {...props} />\n ),\n ol: ({ node, className, ...props }) => (\n <ol className={classNames(\"aui-md-ol\", className)} {...props} />\n ),\n hr: ({ node, className, ...props }) => (\n <hr className={classNames(\"aui-md-hr\", className)} {...props} />\n ),\n table: ({ node, className, ...props }) => (\n <table className={classNames(\"aui-md-table\", className)} {...props} />\n ),\n th: ({ node, className, ...props }) => (\n <th className={classNames(\"aui-md-th\", className)} {...props} />\n ),\n td: ({ node, className, ...props }) => (\n <td className={classNames(\"aui-md-td\", className)} {...props} />\n ),\n tr: ({ node, className, ...props }) => (\n <tr className={classNames(\"aui-md-tr\", className)} {...props} />\n ),\n sup: ({ node, className, ...props }) => (\n <sup className={classNames(\"aui-md-sup\", className)} {...props} />\n ),\n pre: ({ node, className, ...props }) => (\n <pre className={classNames(\"aui-md-pre\", className)} {...props} />\n ),\n code: ({ node, className, ...props }) => {\n const isCodeBlock = useIsMarkdownCodeBlock();\n return (\n <code\n className={classNames(!isCodeBlock && \"aui-md-inline-code\", className)}\n {...props}\n />\n );\n },\n CodeHeader,\n};\n\nexport const makeMarkdownText = ({\n className,\n components: userComponents,\n ...rest\n}: MakeMarkdownTextProps = {}) => {\n const components = {\n ...defaultComponents,\n ...Object.fromEntries(\n // ignore undefined values, so undefined values do not override default components\n Object.entries(userComponents ?? {}).filter(([_, v]) => v !== undefined),\n ),\n };\n\n const MarkdownTextImpl: FC = () => {\n const status = useSmoothStatus();\n return (\n <MarkdownTextPrimitive\n components={components}\n {...rest}\n className={classNames(\n status.type === \"running\" && \"aui-md-running\",\n className,\n )}\n />\n );\n };\n MarkdownTextImpl.displayName = \"MarkdownText\";\n\n return memo(withSmoothContextProvider(MarkdownTextImpl), () => true);\n};\n","import { FC } from \"react\";\nimport { CheckIcon, CopyIcon } from \"lucide-react\";\nimport { INTERNAL, useThreadConfig } from \"@assistant-ui/react\";\n\nimport { CodeHeaderProps } from \"../overrides/types\";\nimport { useCopyToClipboard } from \"./useCopyToClipboard\";\n\nconst { TooltipIconButton } = INTERNAL;\n\nexport const CodeHeader: FC<CodeHeaderProps> = ({ language, code }) => {\n const {\n strings: {\n code: { header: { copy: { tooltip = \"Copy\" } = {} } = {} } = {},\n } = {},\n } = useThreadConfig();\n\n const { isCopied, copyToClipboard } = useCopyToClipboard();\n const onCopy = () => {\n if (!code || isCopied) return;\n copyToClipboard(code);\n };\n\n return (\n <div className=\"aui-code-header-root\">\n <span className=\"aui-code-header-language\">{language}</span>\n <TooltipIconButton tooltip={tooltip} onClick={onCopy}>\n {!isCopied && <CopyIcon />}\n {isCopied && <CheckIcon />}\n </TooltipIconButton>\n </div>\n );\n};\n","import { useState } from \"react\";\nimport { UseActionBarCopyProps } from \"@assistant-ui/react\";\n\nexport type useCopyToClipboardProps = UseActionBarCopyProps;\n\nexport const useCopyToClipboard = ({\n copiedDuration = 3000,\n}: useCopyToClipboardProps = {}) => {\n const [isCopied, setIsCopied] = useState<boolean>(false);\n\n const copyToClipboard = (value: string) => {\n if (!value) return;\n\n navigator.clipboard.writeText(value).then(() => {\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), copiedDuration);\n });\n };\n\n return { isCopied, copyToClipboard };\n};\n"],"mappings":"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","names":["jsx","useCallbackRef","useContext","jsx","CodeHeader","jsx","useContext","CodeHeader","classNames","jsx","CodeHeader","useCallbackRef","INTERNAL","jsx","jsxs","INTERNAL","classNames","INTERNAL","jsx","INTERNAL","classNames"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n MarkdownTextPrimitive,\n type MarkdownTextPrimitiveProps,\n} from \"./primitives/MarkdownText\";\n\nexport type {\n CodeHeaderProps,\n SyntaxHighlighterProps,\n} from \"./overrides/types\";\n\nexport { useIsMarkdownCodeBlock } from \"./overrides/PreOverride\";\n\nexport {\n makeMarkdownText,\n type MakeMarkdownTextProps,\n} from \"./ui/markdown-text\";\n\nexport { CodeHeader } from \"./ui/code-header\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,OAEK;AAOP,SAAS,8BAA8B;AAEvC;AAAA,EACE;AAAA,OAEK;AAEP,SAAS,kBAAkB;","names":[]}
@@ -0,0 +1,14 @@
1
+ import { ComponentType, FC } from "react";
2
+ import { CodeComponent, CodeHeaderProps, PreComponent, SyntaxHighlighterProps } from "./types";
3
+ export type CodeBlockProps = {
4
+ language: string;
5
+ code: string;
6
+ components: {
7
+ Pre: PreComponent;
8
+ Code: CodeComponent;
9
+ CodeHeader: ComponentType<CodeHeaderProps>;
10
+ SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;
11
+ };
12
+ };
13
+ export declare const DefaultCodeBlock: FC<CodeBlockProps>;
14
+ //# sourceMappingURL=CodeBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/overrides/CodeBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AAEnD,OAAO,EACL,aAAa,EACb,eAAe,EACf,YAAY,EACZ,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE;QACV,GAAG,EAAE,YAAY,CAAC;QAClB,IAAI,EAAE,aAAa,CAAC;QACpB,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC3C,iBAAiB,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;KAC1D,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,cAAc,CAmB/C,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var CodeBlock_exports = {};
20
+ __export(CodeBlock_exports, {
21
+ DefaultCodeBlock: () => DefaultCodeBlock
22
+ });
23
+ module.exports = __toCommonJS(CodeBlock_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_react = require("react");
26
+ var import_defaultComponents = require("./defaultComponents");
27
+ const DefaultCodeBlock = ({
28
+ components: { Pre, Code, SyntaxHighlighter, CodeHeader },
29
+ language,
30
+ code
31
+ }) => {
32
+ const components = (0, import_react.useMemo)(() => ({ Pre, Code }), [Pre, Code]);
33
+ const SH = !!language ? SyntaxHighlighter : import_defaultComponents.DefaultCodeBlockContent;
34
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
35
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CodeHeader, { language, code }),
36
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
37
+ SH,
38
+ {
39
+ components,
40
+ language: language ?? "unknown",
41
+ code
42
+ }
43
+ )
44
+ ] });
45
+ };
46
+ // Annotate the CommonJS export names for ESM import in node:
47
+ 0 && (module.exports = {
48
+ DefaultCodeBlock
49
+ });
50
+ //# sourceMappingURL=CodeBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/overrides/CodeBlock.tsx"],"sourcesContent":["import { ComponentType, FC, useMemo } from \"react\";\n\nimport {\n CodeComponent,\n CodeHeaderProps,\n PreComponent,\n SyntaxHighlighterProps,\n} from \"./types\";\nimport { DefaultCodeBlockContent } from \"./defaultComponents\";\n\nexport type CodeBlockProps = {\n language: string;\n code: string;\n components: {\n Pre: PreComponent;\n Code: CodeComponent;\n CodeHeader: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;\n };\n};\n\nexport const DefaultCodeBlock: FC<CodeBlockProps> = ({\n components: { Pre, Code, SyntaxHighlighter, CodeHeader },\n language,\n code,\n}) => {\n const components = useMemo(() => ({ Pre, Code }), [Pre, Code]);\n\n const SH = !!language ? SyntaxHighlighter : DefaultCodeBlockContent;\n\n return (\n <>\n <CodeHeader language={language} code={code} />\n <SH\n components={components}\n language={language ?? \"unknown\"}\n code={code}\n />\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BI;AA/BJ,mBAA2C;AAQ3C,+BAAwC;AAajC,MAAM,mBAAuC,CAAC;AAAA,EACnD,YAAY,EAAE,KAAK,MAAM,mBAAmB,WAAW;AAAA,EACvD;AAAA,EACA;AACF,MAAM;AACJ,QAAM,iBAAa,sBAAQ,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAE7D,QAAM,KAAK,CAAC,CAAC,WAAW,oBAAoB;AAE5C,SACE,4EACE;AAAA,gDAAC,cAAW,UAAoB,MAAY;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,UAAU,YAAY;AAAA,QACtB;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,26 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { DefaultCodeBlockContent } from "./defaultComponents";
4
+ const DefaultCodeBlock = ({
5
+ components: { Pre, Code, SyntaxHighlighter, CodeHeader },
6
+ language,
7
+ code
8
+ }) => {
9
+ const components = useMemo(() => ({ Pre, Code }), [Pre, Code]);
10
+ const SH = !!language ? SyntaxHighlighter : DefaultCodeBlockContent;
11
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
12
+ /* @__PURE__ */ jsx(CodeHeader, { language, code }),
13
+ /* @__PURE__ */ jsx(
14
+ SH,
15
+ {
16
+ components,
17
+ language: language ?? "unknown",
18
+ code
19
+ }
20
+ )
21
+ ] });
22
+ };
23
+ export {
24
+ DefaultCodeBlock
25
+ };
26
+ //# sourceMappingURL=CodeBlock.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/overrides/CodeBlock.tsx"],"sourcesContent":["import { ComponentType, FC, useMemo } from \"react\";\n\nimport {\n CodeComponent,\n CodeHeaderProps,\n PreComponent,\n SyntaxHighlighterProps,\n} from \"./types\";\nimport { DefaultCodeBlockContent } from \"./defaultComponents\";\n\nexport type CodeBlockProps = {\n language: string;\n code: string;\n components: {\n Pre: PreComponent;\n Code: CodeComponent;\n CodeHeader: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;\n };\n};\n\nexport const DefaultCodeBlock: FC<CodeBlockProps> = ({\n components: { Pre, Code, SyntaxHighlighter, CodeHeader },\n language,\n code,\n}) => {\n const components = useMemo(() => ({ Pre, Code }), [Pre, Code]);\n\n const SH = !!language ? SyntaxHighlighter : DefaultCodeBlockContent;\n\n return (\n <>\n <CodeHeader language={language} code={code} />\n <SH\n components={components}\n language={language ?? \"unknown\"}\n code={code}\n />\n </>\n );\n};\n"],"mappings":"AA+BI,mBACE,KADF;AA/BJ,SAA4B,eAAe;AAQ3C,SAAS,+BAA+B;AAajC,MAAM,mBAAuC,CAAC;AAAA,EACnD,YAAY,EAAE,KAAK,MAAM,mBAAmB,WAAW;AAAA,EACvD;AAAA,EACA;AACF,MAAM;AACJ,QAAM,aAAa,QAAQ,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAE7D,QAAM,KAAK,CAAC,CAAC,WAAW,oBAAoB;AAE5C,SACE,iCACE;AAAA,wBAAC,cAAW,UAAoB,MAAY;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,UAAU,YAAY;AAAA,QACtB;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,16 @@
1
+ import { ComponentPropsWithoutRef, ComponentType, FC } from "react";
2
+ import { CodeComponent, CodeHeaderProps, PreComponent, SyntaxHighlighterProps } from "./types";
3
+ export type CodeOverrideProps = ComponentPropsWithoutRef<CodeComponent> & {
4
+ components: {
5
+ Pre: PreComponent;
6
+ Code: CodeComponent;
7
+ CodeHeader: ComponentType<CodeHeaderProps>;
8
+ SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;
9
+ by_language?: Record<string, {
10
+ CodeHeader?: ComponentType<CodeHeaderProps>;
11
+ SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps>;
12
+ }>;
13
+ };
14
+ };
15
+ export declare const CodeOverride: FC<CodeOverrideProps>;
16
+ //# sourceMappingURL=CodeOverride.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeOverride.d.ts","sourceRoot":"","sources":["../../src/overrides/CodeOverride.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,EAAE,EAAc,MAAM,OAAO,CAAC;AAEhF,OAAO,EACL,aAAa,EACb,eAAe,EACf,YAAY,EACZ,sBAAsB,EACvB,MAAM,SAAS,CAAC;AA4DjB,MAAM,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,aAAa,CAAC,GAAG;IACxE,UAAU,EAAE;QACV,GAAG,EAAE,YAAY,CAAC;QAClB,IAAI,EAAE,aAAa,CAAC;QACpB,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC3C,iBAAiB,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;QACzD,WAAW,CAAC,EAAE,MAAM,CAClB,MAAM,EACN;YACE,UAAU,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;YAC5C,iBAAiB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;SAC3D,CACF,CAAC;KACH,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAO9C,CAAC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var CodeOverride_exports = {};
20
+ __export(CodeOverride_exports, {
21
+ CodeOverride: () => CodeOverride
22
+ });
23
+ module.exports = __toCommonJS(CodeOverride_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_react = require("react");
26
+ var import_PreOverride = require("./PreOverride");
27
+ var import_CodeBlock = require("./CodeBlock");
28
+ var import_react_use_callback_ref = require("@radix-ui/react-use-callback-ref");
29
+ var import_withDefaults = require("./withDefaults");
30
+ var import_defaultComponents = require("./defaultComponents");
31
+ const CodeBlockOverride = ({
32
+ components: {
33
+ Pre,
34
+ Code,
35
+ SyntaxHighlighter: FallbackSyntaxHighlighter,
36
+ CodeHeader: FallbackCodeHeader,
37
+ by_language = {}
38
+ },
39
+ children,
40
+ ...codeProps
41
+ }) => {
42
+ const preProps = (0, import_react.useContext)(import_PreOverride.PreContext);
43
+ const getPreProps = (0, import_withDefaults.withDefaultProps)(preProps);
44
+ const WrappedPre = (0, import_react_use_callback_ref.useCallbackRef)((props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Pre, { ...getPreProps(props) }));
45
+ const getCodeProps = (0, import_withDefaults.withDefaultProps)(codeProps);
46
+ const WrappedCode = (0, import_react_use_callback_ref.useCallbackRef)((props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Code, { ...getCodeProps(props) }));
47
+ const language = /language-(\w+)/.exec(codeProps.className || "")?.[1] ?? "";
48
+ if (typeof children !== "string") {
49
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
50
+ import_defaultComponents.DefaultCodeBlockContent,
51
+ {
52
+ components: { Pre: WrappedPre, Code: WrappedCode },
53
+ code: children
54
+ }
55
+ );
56
+ }
57
+ const SyntaxHighlighter = by_language[language]?.SyntaxHighlighter ?? FallbackSyntaxHighlighter;
58
+ const CodeHeader = by_language[language]?.CodeHeader ?? FallbackCodeHeader;
59
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
60
+ import_CodeBlock.DefaultCodeBlock,
61
+ {
62
+ components: {
63
+ Pre: WrappedPre,
64
+ Code: WrappedCode,
65
+ SyntaxHighlighter,
66
+ CodeHeader
67
+ },
68
+ language: language || "unknown",
69
+ code: children
70
+ }
71
+ );
72
+ };
73
+ const CodeOverride = ({
74
+ components,
75
+ ...props
76
+ }) => {
77
+ const preProps = (0, import_react.useContext)(import_PreOverride.PreContext);
78
+ if (!preProps) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(components.Code, { ...props });
79
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CodeBlockOverride, { components, ...props });
80
+ };
81
+ // Annotate the CommonJS export names for ESM import in node:
82
+ 0 && (module.exports = {
83
+ CodeOverride
84
+ });
85
+ //# sourceMappingURL=CodeOverride.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/overrides/CodeOverride.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, ComponentType, FC, useContext } from \"react\";\nimport { PreContext } from \"./PreOverride\";\nimport {\n CodeComponent,\n CodeHeaderProps,\n PreComponent,\n SyntaxHighlighterProps,\n} from \"./types\";\nimport { DefaultCodeBlock } from \"./CodeBlock\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { withDefaultProps } from \"./withDefaults\";\nimport { DefaultCodeBlockContent } from \"./defaultComponents\";\n\nconst CodeBlockOverride: FC<CodeOverrideProps> = ({\n components: {\n Pre,\n Code,\n SyntaxHighlighter: FallbackSyntaxHighlighter,\n CodeHeader: FallbackCodeHeader,\n by_language = {},\n },\n children,\n ...codeProps\n}) => {\n const preProps = useContext(PreContext)!;\n const getPreProps = withDefaultProps<any>(preProps);\n const WrappedPre: PreComponent = useCallbackRef((props) => (\n <Pre {...getPreProps(props)} />\n ));\n\n const getCodeProps = withDefaultProps<any>(codeProps);\n const WrappedCode: CodeComponent = useCallbackRef((props) => (\n <Code {...getCodeProps(props)} />\n ));\n\n const language = /language-(\\w+)/.exec(codeProps.className || \"\")?.[1] ?? \"\";\n\n // if the code content is not string (due to rehype plugins), return a default code block\n if (typeof children !== \"string\") {\n return (\n <DefaultCodeBlockContent\n components={{ Pre: WrappedPre, Code: WrappedCode }}\n code={children}\n />\n );\n }\n\n const SyntaxHighlighter: ComponentType<SyntaxHighlighterProps> =\n by_language[language]?.SyntaxHighlighter ?? FallbackSyntaxHighlighter;\n\n const CodeHeader: ComponentType<CodeHeaderProps> =\n by_language[language]?.CodeHeader ?? FallbackCodeHeader;\n\n return (\n <DefaultCodeBlock\n components={{\n Pre: WrappedPre,\n Code: WrappedCode,\n SyntaxHighlighter,\n CodeHeader,\n }}\n language={language || \"unknown\"}\n code={children}\n />\n );\n};\n\nexport type CodeOverrideProps = ComponentPropsWithoutRef<CodeComponent> & {\n components: {\n Pre: PreComponent;\n Code: CodeComponent;\n CodeHeader: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter: ComponentType<SyntaxHighlighterProps>;\n by_language?: Record<\n string,\n {\n CodeHeader?: ComponentType<CodeHeaderProps>;\n SyntaxHighlighter?: ComponentType<SyntaxHighlighterProps>;\n }\n >;\n };\n};\n\nexport const CodeOverride: FC<CodeOverrideProps> = ({\n components,\n ...props\n}) => {\n const preProps = useContext(PreContext);\n if (!preProps) return <components.Code {...(props as any)} />;\n return <CodeBlockOverride components={components} {...props} />;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BI;AA3BJ,mBAAwE;AACxE,yBAA2B;AAO3B,uBAAiC;AACjC,oCAA+B;AAC/B,0BAAiC;AACjC,+BAAwC;AAExC,MAAM,oBAA2C,CAAC;AAAA,EAChD,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB,YAAY;AAAA,IACZ,cAAc,CAAC;AAAA,EACjB;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,eAAW,yBAAW,6BAAU;AACtC,QAAM,kBAAc,sCAAsB,QAAQ;AAClD,QAAM,iBAA2B,8CAAe,CAAC,UAC/C,4CAAC,OAAK,GAAG,YAAY,KAAK,GAAG,CAC9B;AAED,QAAM,mBAAe,sCAAsB,SAAS;AACpD,QAAM,kBAA6B,8CAAe,CAAC,UACjD,4CAAC,QAAM,GAAG,aAAa,KAAK,GAAG,CAChC;AAED,QAAM,WAAW,iBAAiB,KAAK,UAAU,aAAa,EAAE,IAAI,CAAC,KAAK;AAG1E,MAAI,OAAO,aAAa,UAAU;AAChC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,YAAY,EAAE,KAAK,YAAY,MAAM,YAAY;AAAA,QACjD,MAAM;AAAA;AAAA,IACR;AAAA,EAEJ;AAEA,QAAM,oBACJ,YAAY,QAAQ,GAAG,qBAAqB;AAE9C,QAAM,aACJ,YAAY,QAAQ,GAAG,cAAc;AAEvC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAY;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAU,YAAY;AAAA,MACtB,MAAM;AAAA;AAAA,EACR;AAEJ;AAkBO,MAAM,eAAsC,CAAC;AAAA,EAClD;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,eAAW,yBAAW,6BAAU;AACtC,MAAI,CAAC,SAAU,QAAO,4CAAC,WAAW,MAAX,EAAiB,GAAI,OAAe;AAC3D,SAAO,4CAAC,qBAAkB,YAAyB,GAAG,OAAO;AAC/D;","names":[]}
@@ -0,0 +1,61 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useContext } from "react";
3
+ import { PreContext } from "./PreOverride";
4
+ import { DefaultCodeBlock } from "./CodeBlock";
5
+ import { useCallbackRef } from "@radix-ui/react-use-callback-ref";
6
+ import { withDefaultProps } from "./withDefaults";
7
+ import { DefaultCodeBlockContent } from "./defaultComponents";
8
+ const CodeBlockOverride = ({
9
+ components: {
10
+ Pre,
11
+ Code,
12
+ SyntaxHighlighter: FallbackSyntaxHighlighter,
13
+ CodeHeader: FallbackCodeHeader,
14
+ by_language = {}
15
+ },
16
+ children,
17
+ ...codeProps
18
+ }) => {
19
+ const preProps = useContext(PreContext);
20
+ const getPreProps = withDefaultProps(preProps);
21
+ const WrappedPre = useCallbackRef((props) => /* @__PURE__ */ jsx(Pre, { ...getPreProps(props) }));
22
+ const getCodeProps = withDefaultProps(codeProps);
23
+ const WrappedCode = useCallbackRef((props) => /* @__PURE__ */ jsx(Code, { ...getCodeProps(props) }));
24
+ const language = /language-(\w+)/.exec(codeProps.className || "")?.[1] ?? "";
25
+ if (typeof children !== "string") {
26
+ return /* @__PURE__ */ jsx(
27
+ DefaultCodeBlockContent,
28
+ {
29
+ components: { Pre: WrappedPre, Code: WrappedCode },
30
+ code: children
31
+ }
32
+ );
33
+ }
34
+ const SyntaxHighlighter = by_language[language]?.SyntaxHighlighter ?? FallbackSyntaxHighlighter;
35
+ const CodeHeader = by_language[language]?.CodeHeader ?? FallbackCodeHeader;
36
+ return /* @__PURE__ */ jsx(
37
+ DefaultCodeBlock,
38
+ {
39
+ components: {
40
+ Pre: WrappedPre,
41
+ Code: WrappedCode,
42
+ SyntaxHighlighter,
43
+ CodeHeader
44
+ },
45
+ language: language || "unknown",
46
+ code: children
47
+ }
48
+ );
49
+ };
50
+ const CodeOverride = ({
51
+ components,
52
+ ...props
53
+ }) => {
54
+ const preProps = useContext(PreContext);
55
+ if (!preProps) return /* @__PURE__ */ jsx(components.Code, { ...props });
56
+ return /* @__PURE__ */ jsx(CodeBlockOverride, { components, ...props });
57
+ };
58
+ export {
59
+ CodeOverride
60
+ };
61
+ //# sourceMappingURL=CodeOverride.mjs.map