@tangle-network/ui 11.8.0 → 11.9.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/CHANGELOG.md +6 -0
- package/dist/chat.js +4 -4
- package/dist/{chunk-3M7BPSSW.js → chunk-3TI5DEHV.js} +1 -1
- package/dist/{chunk-X53RZSX6.js → chunk-7YOCS6IF.js} +3 -3
- package/dist/{chunk-P5F43A65.js → chunk-EOAX2ENE.js} +2 -1
- package/dist/{chunk-OXZRCXJK.js → chunk-TN4FUEWY.js} +2 -2
- package/dist/{chunk-BWOUSEHM.js → chunk-VPWY4I5O.js} +1 -1
- package/dist/{chunk-Q7ZR6LSD.js → chunk-XYAIX4SU.js} +1 -1
- package/dist/{chunk-XGOWUDDW.js → chunk-YJ6RE5WV.js} +2 -2
- package/dist/{chunk-QGTIBEPX.js → chunk-ZKCEAIIZ.js} +1 -1
- package/dist/{document-editor-pane-A3JURPW5.js → document-editor-pane-EX25CEYW.js} +2 -2
- package/dist/editor.js +2 -2
- package/dist/files.js +2 -2
- package/dist/hooks.js +3 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.js +7 -7
- package/dist/markdown.d.ts +4 -1
- package/dist/markdown.js +1 -1
- package/dist/openui.js +2 -2
- package/dist/run.js +4 -4
- package/dist/sdk-hooks.js +3 -3
- package/package.json +3 -3
- package/src/markdown/markdown.test.tsx +26 -2
- package/src/markdown/markdown.tsx +5 -2
package/CHANGELOG.md
CHANGED
package/dist/chat.js
CHANGED
|
@@ -5,19 +5,19 @@ import {
|
|
|
5
5
|
MessageList,
|
|
6
6
|
ThinkingIndicator,
|
|
7
7
|
UserMessage
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-7YOCS6IF.js";
|
|
9
9
|
import "./chunk-565EATZZ.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-TN4FUEWY.js";
|
|
11
11
|
import "./chunk-KNYSKNZX.js";
|
|
12
12
|
import "./chunk-ND3ZFXQK.js";
|
|
13
13
|
import "./chunk-NWECTSOH.js";
|
|
14
14
|
import "./chunk-L57WRIND.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-3TI5DEHV.js";
|
|
16
16
|
import "./chunk-GYPQXTJU.js";
|
|
17
17
|
import "./chunk-4CLN43XT.js";
|
|
18
18
|
import "./chunk-XU3HB5QL.js";
|
|
19
19
|
import "./chunk-MKTSMWVD.js";
|
|
20
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-EOAX2ENE.js";
|
|
21
21
|
import "./chunk-WUQDUBJG.js";
|
|
22
22
|
import "./chunk-RQHJBTEU.js";
|
|
23
23
|
export {
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
InlineThinkingItem,
|
|
8
8
|
RunGroup
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-TN4FUEWY.js";
|
|
10
10
|
import {
|
|
11
11
|
ToolCallGroup,
|
|
12
12
|
ToolCallStep
|
|
@@ -16,10 +16,10 @@ import {
|
|
|
16
16
|
} from "./chunk-ND3ZFXQK.js";
|
|
17
17
|
import {
|
|
18
18
|
OpenUIArtifactRenderer
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-3TI5DEHV.js";
|
|
20
20
|
import {
|
|
21
21
|
Markdown
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-EOAX2ENE.js";
|
|
23
23
|
import {
|
|
24
24
|
cn
|
|
25
25
|
} from "./chunk-RQHJBTEU.js";
|
|
@@ -12,7 +12,7 @@ import ReactMarkdown from "react-markdown";
|
|
|
12
12
|
import remarkGfm from "remark-gfm";
|
|
13
13
|
import rehypeSanitize from "rehype-sanitize";
|
|
14
14
|
import { Fragment, jsx } from "react/jsx-runtime";
|
|
15
|
-
var Markdown = memo(({ children, className }) => {
|
|
15
|
+
var Markdown = memo(({ children, className, urlTransform }) => {
|
|
16
16
|
return /* @__PURE__ */ jsx(
|
|
17
17
|
"div",
|
|
18
18
|
{
|
|
@@ -22,6 +22,7 @@ var Markdown = memo(({ children, className }) => {
|
|
|
22
22
|
{
|
|
23
23
|
remarkPlugins: [remarkGfm],
|
|
24
24
|
rehypePlugins: [rehypeSanitize],
|
|
25
|
+
urlTransform,
|
|
25
26
|
components: {
|
|
26
27
|
pre({ children: preChildren }) {
|
|
27
28
|
return /* @__PURE__ */ jsx(Fragment, { children: preChildren });
|
|
@@ -8,14 +8,14 @@ import {
|
|
|
8
8
|
} from "./chunk-L57WRIND.js";
|
|
9
9
|
import {
|
|
10
10
|
OpenUIArtifactRenderer
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-3TI5DEHV.js";
|
|
12
12
|
import {
|
|
13
13
|
formatDuration,
|
|
14
14
|
truncateText
|
|
15
15
|
} from "./chunk-4CLN43XT.js";
|
|
16
16
|
import {
|
|
17
17
|
Markdown
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-EOAX2ENE.js";
|
|
19
19
|
import {
|
|
20
20
|
cn
|
|
21
21
|
} from "./chunk-RQHJBTEU.js";
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
} from "./chunk-LTEKI7YJ.js";
|
|
17
17
|
import {
|
|
18
18
|
Markdown
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-EOAX2ENE.js";
|
|
20
20
|
import {
|
|
21
21
|
CodeBlock,
|
|
22
22
|
CopyButton
|
|
@@ -719,7 +719,7 @@ import { lazy, Suspense } from "react";
|
|
|
719
719
|
import { Download as Download2, X as X3 } from "lucide-react";
|
|
720
720
|
import { Fragment, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
721
721
|
var LazyDocumentEditorPane = lazy(async () => {
|
|
722
|
-
const module = await import("./document-editor-pane-
|
|
722
|
+
const module = await import("./document-editor-pane-EX25CEYW.js");
|
|
723
723
|
return { default: module.DocumentEditorPane };
|
|
724
724
|
});
|
|
725
725
|
function FileArtifactPane({
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
DocumentEditorPane
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ZKCEAIIZ.js";
|
|
5
5
|
import "./chunk-Q56BYXQF.js";
|
|
6
6
|
import "./chunk-LTEKI7YJ.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-EOAX2ENE.js";
|
|
8
8
|
import "./chunk-WUQDUBJG.js";
|
|
9
9
|
import "./chunk-RQHJBTEU.js";
|
|
10
10
|
export {
|
package/dist/editor.js
CHANGED
|
@@ -11,10 +11,10 @@ import {
|
|
|
11
11
|
useEditorConnection,
|
|
12
12
|
useEditorContext,
|
|
13
13
|
useYjsState
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-ZKCEAIIZ.js";
|
|
15
15
|
import "./chunk-Q56BYXQF.js";
|
|
16
16
|
import "./chunk-LTEKI7YJ.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-EOAX2ENE.js";
|
|
18
18
|
import "./chunk-WUQDUBJG.js";
|
|
19
19
|
import "./chunk-RQHJBTEU.js";
|
|
20
20
|
export {
|
package/dist/files.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
RichFileTree,
|
|
8
8
|
filterFileTree,
|
|
9
9
|
parseCsv
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-YJ6RE5WV.js";
|
|
11
11
|
import "./chunk-4CLN43XT.js";
|
|
12
12
|
import {
|
|
13
13
|
detectFileFormat,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from "./chunk-XU3HB5QL.js";
|
|
20
20
|
import "./chunk-MKTSMWVD.js";
|
|
21
21
|
import "./chunk-LTEKI7YJ.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-EOAX2ENE.js";
|
|
23
23
|
import "./chunk-WUQDUBJG.js";
|
|
24
24
|
import "./chunk-RQHJBTEU.js";
|
|
25
25
|
export {
|
package/dist/hooks.js
CHANGED
|
@@ -11,21 +11,21 @@ import {
|
|
|
11
11
|
useSSEStream,
|
|
12
12
|
useSdkSession,
|
|
13
13
|
useToolCallStream
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-VPWY4I5O.js";
|
|
15
15
|
import "./chunk-OEX7NZE3.js";
|
|
16
16
|
import {
|
|
17
17
|
useAutoScroll,
|
|
18
18
|
useRunCollapseState,
|
|
19
19
|
useRunGroups
|
|
20
20
|
} from "./chunk-565EATZZ.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-XYAIX4SU.js";
|
|
22
22
|
import "./chunk-KNYSKNZX.js";
|
|
23
23
|
import "./chunk-ND3ZFXQK.js";
|
|
24
24
|
import "./chunk-NWECTSOH.js";
|
|
25
25
|
import "./chunk-L57WRIND.js";
|
|
26
26
|
import "./chunk-4CLN43XT.js";
|
|
27
27
|
import "./chunk-XU3HB5QL.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-EOAX2ENE.js";
|
|
29
29
|
import "./chunk-WUQDUBJG.js";
|
|
30
30
|
import "./chunk-RQHJBTEU.js";
|
|
31
31
|
export {
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
useSSEStream,
|
|
21
21
|
useSdkSession,
|
|
22
22
|
useToolCallStream
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-VPWY4I5O.js";
|
|
24
24
|
import {
|
|
25
25
|
addMessage,
|
|
26
26
|
addParts,
|
|
@@ -146,7 +146,7 @@ import {
|
|
|
146
146
|
MessageList,
|
|
147
147
|
ThinkingIndicator,
|
|
148
148
|
UserMessage
|
|
149
|
-
} from "./chunk-
|
|
149
|
+
} from "./chunk-7YOCS6IF.js";
|
|
150
150
|
import {
|
|
151
151
|
useAutoScroll,
|
|
152
152
|
useRunCollapseState,
|
|
@@ -158,11 +158,11 @@ import {
|
|
|
158
158
|
import {
|
|
159
159
|
ToolCallFeed,
|
|
160
160
|
parseToolEvent
|
|
161
|
-
} from "./chunk-
|
|
161
|
+
} from "./chunk-XYAIX4SU.js";
|
|
162
162
|
import {
|
|
163
163
|
InlineThinkingItem,
|
|
164
164
|
RunGroup
|
|
165
|
-
} from "./chunk-
|
|
165
|
+
} from "./chunk-TN4FUEWY.js";
|
|
166
166
|
import {
|
|
167
167
|
ExpandedToolDetail,
|
|
168
168
|
InlineToolItem,
|
|
@@ -190,7 +190,7 @@ import {
|
|
|
190
190
|
import "./chunk-RQGKSCEZ.js";
|
|
191
191
|
import {
|
|
192
192
|
OpenUIArtifactRenderer
|
|
193
|
-
} from "./chunk-
|
|
193
|
+
} from "./chunk-3TI5DEHV.js";
|
|
194
194
|
import {
|
|
195
195
|
Badge,
|
|
196
196
|
Card,
|
|
@@ -219,7 +219,7 @@ import {
|
|
|
219
219
|
RichFileTree,
|
|
220
220
|
filterFileTree,
|
|
221
221
|
parseCsv
|
|
222
|
-
} from "./chunk-
|
|
222
|
+
} from "./chunk-YJ6RE5WV.js";
|
|
223
223
|
import {
|
|
224
224
|
formatBytes,
|
|
225
225
|
formatDuration,
|
|
@@ -250,7 +250,7 @@ import {
|
|
|
250
250
|
import "./chunk-5Z5ZYMOJ.js";
|
|
251
251
|
import {
|
|
252
252
|
Markdown
|
|
253
|
-
} from "./chunk-
|
|
253
|
+
} from "./chunk-EOAX2ENE.js";
|
|
254
254
|
import {
|
|
255
255
|
CodeBlock,
|
|
256
256
|
CopyButton
|
package/dist/markdown.d.ts
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
|
+
import { UrlTransform } from 'react-markdown';
|
|
3
4
|
export { C as CodeBlock, a as CodeBlockProps, b as CopyButton } from './code-block-0kSpWMnf.js';
|
|
4
5
|
|
|
5
6
|
interface MarkdownProps {
|
|
6
7
|
children: string;
|
|
7
8
|
className?: string;
|
|
9
|
+
/** Transform parsed link and image URLs before sanitisation. */
|
|
10
|
+
urlTransform?: UrlTransform;
|
|
8
11
|
}
|
|
9
12
|
/**
|
|
10
13
|
* Renders Markdown content with GFM support, XSS sanitisation, and
|
|
11
14
|
* custom code block rendering via our CodeBlock component.
|
|
12
15
|
*/
|
|
13
|
-
declare const Markdown: React.MemoExoticComponent<({ children, className }: MarkdownProps) => react_jsx_runtime.JSX.Element>;
|
|
16
|
+
declare const Markdown: React.MemoExoticComponent<({ children, className, urlTransform }: MarkdownProps) => react_jsx_runtime.JSX.Element>;
|
|
14
17
|
|
|
15
18
|
export { Markdown, type MarkdownProps };
|
package/dist/markdown.js
CHANGED
package/dist/openui.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "./chunk-RQGKSCEZ.js";
|
|
2
2
|
import {
|
|
3
3
|
OpenUIArtifactRenderer
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-3TI5DEHV.js";
|
|
5
5
|
import "./chunk-GYPQXTJU.js";
|
|
6
6
|
import "./chunk-MKTSMWVD.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-EOAX2ENE.js";
|
|
8
8
|
import "./chunk-WUQDUBJG.js";
|
|
9
9
|
import "./chunk-RQHJBTEU.js";
|
|
10
10
|
export {
|
package/dist/run.js
CHANGED
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
ToolCallFeed,
|
|
6
6
|
parseToolEvent
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-XYAIX4SU.js";
|
|
8
8
|
import {
|
|
9
9
|
InlineThinkingItem,
|
|
10
10
|
RunGroup
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-TN4FUEWY.js";
|
|
12
12
|
import {
|
|
13
13
|
ExpandedToolDetail,
|
|
14
14
|
InlineToolItem,
|
|
@@ -18,12 +18,12 @@ import {
|
|
|
18
18
|
import "./chunk-ND3ZFXQK.js";
|
|
19
19
|
import "./chunk-NWECTSOH.js";
|
|
20
20
|
import "./chunk-L57WRIND.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-3TI5DEHV.js";
|
|
22
22
|
import "./chunk-GYPQXTJU.js";
|
|
23
23
|
import "./chunk-4CLN43XT.js";
|
|
24
24
|
import "./chunk-XU3HB5QL.js";
|
|
25
25
|
import "./chunk-MKTSMWVD.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-EOAX2ENE.js";
|
|
27
27
|
import "./chunk-WUQDUBJG.js";
|
|
28
28
|
import "./chunk-RQHJBTEU.js";
|
|
29
29
|
export {
|
package/dist/sdk-hooks.js
CHANGED
|
@@ -5,21 +5,21 @@ import {
|
|
|
5
5
|
useSSEStream,
|
|
6
6
|
useSdkSession,
|
|
7
7
|
useToolCallStream
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VPWY4I5O.js";
|
|
9
9
|
import "./chunk-OEX7NZE3.js";
|
|
10
10
|
import {
|
|
11
11
|
useAutoScroll,
|
|
12
12
|
useRunCollapseState,
|
|
13
13
|
useRunGroups
|
|
14
14
|
} from "./chunk-565EATZZ.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-XYAIX4SU.js";
|
|
16
16
|
import "./chunk-KNYSKNZX.js";
|
|
17
17
|
import "./chunk-ND3ZFXQK.js";
|
|
18
18
|
import "./chunk-NWECTSOH.js";
|
|
19
19
|
import "./chunk-L57WRIND.js";
|
|
20
20
|
import "./chunk-4CLN43XT.js";
|
|
21
21
|
import "./chunk-XU3HB5QL.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-EOAX2ENE.js";
|
|
23
23
|
import "./chunk-WUQDUBJG.js";
|
|
24
24
|
import "./chunk-RQHJBTEU.js";
|
|
25
25
|
export {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/ui",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.9.0",
|
|
4
4
|
"description": "Generic React UI components for Tangle products — primitives, chat, run, files, editor, markdown.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -134,6 +134,7 @@
|
|
|
134
134
|
"turndown": "^7.2.2"
|
|
135
135
|
},
|
|
136
136
|
"peerDependencies": {
|
|
137
|
+
"@tangle-network/brand": "^1.5.0",
|
|
137
138
|
"@hocuspocus/provider": ">=2.15.0 <5.0.0",
|
|
138
139
|
"@nanostores/react": ">=0.8.4 <2.0.0",
|
|
139
140
|
"@tiptap/core": ">=3.20.4 <4.0.0",
|
|
@@ -145,8 +146,7 @@
|
|
|
145
146
|
"react": "^18 || ^19",
|
|
146
147
|
"react-dom": "^18 || ^19",
|
|
147
148
|
"react-router": "^7 || ^8",
|
|
148
|
-
"yjs": "^13.6.0"
|
|
149
|
-
"@tangle-network/brand": "^1.5.0"
|
|
149
|
+
"yjs": "^13.6.0"
|
|
150
150
|
},
|
|
151
151
|
"peerDependenciesMeta": {
|
|
152
152
|
"@nanostores/react": {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { render } from "@testing-library/react";
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { render, screen } from "@testing-library/react";
|
|
3
3
|
import { Markdown } from "./markdown";
|
|
4
4
|
|
|
5
5
|
describe("Markdown", () => {
|
|
@@ -20,4 +20,28 @@ describe("Markdown", () => {
|
|
|
20
20
|
expect(inlineCode).toHaveClass("bg-card");
|
|
21
21
|
expect(inlineCode).toHaveClass("text-[var(--code-keyword)]");
|
|
22
22
|
});
|
|
23
|
+
|
|
24
|
+
it("passes parsed URLs through the typed transform hook", () => {
|
|
25
|
+
const urlTransform = vi.fn((url: string, key: string) => (
|
|
26
|
+
key === "href" && url === "system/brief.md"
|
|
27
|
+
? "/app/ws-1/vault?file=system%2Fbrief.md"
|
|
28
|
+
: url
|
|
29
|
+
));
|
|
30
|
+
|
|
31
|
+
render(
|
|
32
|
+
<Markdown urlTransform={urlTransform}>
|
|
33
|
+
{'[Brief](system/brief.md)'}
|
|
34
|
+
</Markdown>,
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
expect(screen.getByRole("link", { name: "Brief" })).toHaveAttribute(
|
|
38
|
+
"href",
|
|
39
|
+
"/app/ws-1/vault?file=system%2Fbrief.md",
|
|
40
|
+
);
|
|
41
|
+
expect(urlTransform).toHaveBeenCalledWith(
|
|
42
|
+
"system/brief.md",
|
|
43
|
+
"href",
|
|
44
|
+
expect.objectContaining({ tagName: "a" }),
|
|
45
|
+
);
|
|
46
|
+
});
|
|
23
47
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { memo } from "react";
|
|
2
|
-
import ReactMarkdown from "react-markdown";
|
|
2
|
+
import ReactMarkdown, { type UrlTransform } from "react-markdown";
|
|
3
3
|
import remarkGfm from "remark-gfm";
|
|
4
4
|
import rehypeSanitize from "rehype-sanitize";
|
|
5
5
|
import { CodeBlock, CopyButton } from "./code-block";
|
|
@@ -8,13 +8,15 @@ import { cn } from "../lib/utils";
|
|
|
8
8
|
export interface MarkdownProps {
|
|
9
9
|
children: string;
|
|
10
10
|
className?: string;
|
|
11
|
+
/** Transform parsed link and image URLs before sanitisation. */
|
|
12
|
+
urlTransform?: UrlTransform;
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
* Renders Markdown content with GFM support, XSS sanitisation, and
|
|
15
17
|
* custom code block rendering via our CodeBlock component.
|
|
16
18
|
*/
|
|
17
|
-
export const Markdown = memo(({ children, className }: MarkdownProps) => {
|
|
19
|
+
export const Markdown = memo(({ children, className, urlTransform }: MarkdownProps) => {
|
|
18
20
|
return (
|
|
19
21
|
<div
|
|
20
22
|
className={cn("tangle-prose max-w-none text-sm", className)}
|
|
@@ -22,6 +24,7 @@ export const Markdown = memo(({ children, className }: MarkdownProps) => {
|
|
|
22
24
|
<ReactMarkdown
|
|
23
25
|
remarkPlugins={[remarkGfm]}
|
|
24
26
|
rehypePlugins={[rehypeSanitize]}
|
|
27
|
+
urlTransform={urlTransform}
|
|
25
28
|
components={{
|
|
26
29
|
pre({ children: preChildren }) {
|
|
27
30
|
return <>{preChildren}</>;
|