@ai-react-markdown/mantine 1.0.2
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.cjs +383 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +195 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.cts +29 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +342 -0
- package/dist/index.js.map +1 -0
- package/package.json +55 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/index.tsx
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
MantineAIMDefaultExtraStyles: () => DefaultExtraStyles_default,
|
|
34
|
+
MantineAIMarkdownTypography: () => MantineTypography_default,
|
|
35
|
+
default: () => MantineAIMarkdown_default,
|
|
36
|
+
defaultMantineAIMarkdownRenderConfig: () => defaultMantineAIMarkdownRenderConfig,
|
|
37
|
+
useMantineAIMarkdownMetadata: () => useMantineAIMarkdownMetadata,
|
|
38
|
+
useMantineAIMarkdownRenderState: () => useMantineAIMarkdownRenderState
|
|
39
|
+
});
|
|
40
|
+
module.exports = __toCommonJS(index_exports);
|
|
41
|
+
|
|
42
|
+
// src/MantineAIMarkdown.tsx
|
|
43
|
+
var import_react4 = require("react");
|
|
44
|
+
var import_core5 = __toESM(require("@ai-react-markdown/core"), 1);
|
|
45
|
+
var import_core6 = require("@ai-react-markdown/core");
|
|
46
|
+
|
|
47
|
+
// src/components/typography/MantineTypography.tsx
|
|
48
|
+
var import_react = require("react");
|
|
49
|
+
var import_core = require("@mantine/core");
|
|
50
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
51
|
+
var MantineAIMarkdownTypography = (0, import_react.memo)(({ children, fontSize }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.Typography, { w: "100%", fz: fontSize, children }));
|
|
52
|
+
MantineAIMarkdownTypography.displayName = "MantineAIMarkdownTypography";
|
|
53
|
+
var MantineTypography_default = MantineAIMarkdownTypography;
|
|
54
|
+
|
|
55
|
+
// src/hooks/useMantineAIMarkdownRenderState.ts
|
|
56
|
+
var import_core2 = require("@ai-react-markdown/core");
|
|
57
|
+
var useMantineAIMarkdownRenderState = () => {
|
|
58
|
+
return (0, import_core2.useAIMarkdownRenderState)();
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// src/components/extra-styles/DefaultExtraStyles/index.tsx
|
|
62
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
63
|
+
var MantineAIMDefaultExtraStyles = ({ children }) => {
|
|
64
|
+
const renderState = useMantineAIMarkdownRenderState();
|
|
65
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: `aim-mantine-extra-styles${renderState.config.forceSameFontSize ? " same-font-size" : ""}`, children });
|
|
66
|
+
};
|
|
67
|
+
var DefaultExtraStyles_default = MantineAIMDefaultExtraStyles;
|
|
68
|
+
|
|
69
|
+
// src/defs.tsx
|
|
70
|
+
var import_core3 = require("@ai-react-markdown/core");
|
|
71
|
+
var defaultMantineAIMarkdownRenderConfig = Object.freeze({
|
|
72
|
+
...import_core3.defaultAIMarkdownRenderConfig,
|
|
73
|
+
forceSameFontSize: false,
|
|
74
|
+
codeBlock: Object.freeze({
|
|
75
|
+
defaultExpanded: true,
|
|
76
|
+
autoDetectUnknownLanguage: false
|
|
77
|
+
})
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
// src/components/customized/PreCode.tsx
|
|
81
|
+
var import_react3 = require("react");
|
|
82
|
+
var import_code_highlight2 = require("@mantine/code-highlight");
|
|
83
|
+
var import_deep_parse_json = require("deep-parse-json");
|
|
84
|
+
var import_highlight = __toESM(require("highlight.js"), 1);
|
|
85
|
+
|
|
86
|
+
// src/components/customized/MermaidCode/index.tsx
|
|
87
|
+
var import_react2 = require("react");
|
|
88
|
+
var import_code_highlight = require("@mantine/code-highlight");
|
|
89
|
+
var import_core4 = require("@mantine/core");
|
|
90
|
+
var import_debounce = __toESM(require("lodash-es/debounce"), 1);
|
|
91
|
+
var import_mermaid = __toESM(require("mermaid"), 1);
|
|
92
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
93
|
+
var generateMermaidUUID = () => {
|
|
94
|
+
return `mermaid-${(/* @__PURE__ */ new Date()).getTime()}-${Math.random().toString(36).slice(2, 10)}`;
|
|
95
|
+
};
|
|
96
|
+
var handleViewSVGInNewWindow = (svgElement, isDark) => {
|
|
97
|
+
if (!svgElement) return;
|
|
98
|
+
const targetSvg = svgElement.cloneNode(true);
|
|
99
|
+
targetSvg.style.backgroundColor = isDark ? "#242424" : "white";
|
|
100
|
+
const text = new XMLSerializer().serializeToString(targetSvg);
|
|
101
|
+
const blob = new Blob([text], { type: "image/svg+xml" });
|
|
102
|
+
const url = URL.createObjectURL(blob);
|
|
103
|
+
const win = window.open(url);
|
|
104
|
+
if (win) {
|
|
105
|
+
setTimeout(() => URL.revokeObjectURL(url), 5e3);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
var MantineAIMMermaidCode = (0, import_react2.memo)((props) => {
|
|
109
|
+
const renderState = useMantineAIMarkdownRenderState();
|
|
110
|
+
const isDark = renderState.colorScheme === "dark";
|
|
111
|
+
const ref = (0, import_react2.useRef)(null);
|
|
112
|
+
const [showOriginalCode, setShowOriginalCode] = (0, import_react2.useState)(false);
|
|
113
|
+
const [renderError, setRenderError] = (0, import_react2.useState)(false);
|
|
114
|
+
const [chartType, setChartType] = (0, import_react2.useState)("unkown");
|
|
115
|
+
const debouncedUpdateRenderError = (0, import_react2.useMemo)(
|
|
116
|
+
() => (0, import_debounce.default)((error) => {
|
|
117
|
+
setRenderError(error);
|
|
118
|
+
}, 200),
|
|
119
|
+
[]
|
|
120
|
+
);
|
|
121
|
+
(0, import_react2.useEffect)(() => {
|
|
122
|
+
if (props.code && ref.current) {
|
|
123
|
+
const renderMermaid = async () => {
|
|
124
|
+
try {
|
|
125
|
+
debouncedUpdateRenderError(false);
|
|
126
|
+
if (ref.current) {
|
|
127
|
+
import_mermaid.default.initialize({
|
|
128
|
+
startOnLoad: false,
|
|
129
|
+
securityLevel: "loose",
|
|
130
|
+
theme: isDark ? "dark" : "base",
|
|
131
|
+
darkMode: isDark
|
|
132
|
+
});
|
|
133
|
+
const parseResult = await import_mermaid.default.parse(props.code);
|
|
134
|
+
if (!parseResult) {
|
|
135
|
+
throw new Error("Failed to parse mermaid code");
|
|
136
|
+
}
|
|
137
|
+
const { svg, bindFunctions, diagramType } = await import_mermaid.default.render(
|
|
138
|
+
generateMermaidUUID(),
|
|
139
|
+
props.code,
|
|
140
|
+
ref.current
|
|
141
|
+
);
|
|
142
|
+
ref.current.innerHTML = svg;
|
|
143
|
+
bindFunctions?.(ref.current);
|
|
144
|
+
setChartType(diagramType);
|
|
145
|
+
}
|
|
146
|
+
} catch {
|
|
147
|
+
debouncedUpdateRenderError(true);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
renderMermaid();
|
|
151
|
+
}
|
|
152
|
+
}, [props.code, isDark, showOriginalCode]);
|
|
153
|
+
const viewSvgInNewWindow = (0, import_react2.useCallback)(() => {
|
|
154
|
+
handleViewSVGInNewWindow(ref.current?.querySelector("svg"), isDark);
|
|
155
|
+
}, []);
|
|
156
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
|
|
157
|
+
(showOriginalCode || renderError) && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
158
|
+
import_code_highlight.CodeHighlightTabs,
|
|
159
|
+
{
|
|
160
|
+
mb: 15,
|
|
161
|
+
w: "100%",
|
|
162
|
+
code: [
|
|
163
|
+
{
|
|
164
|
+
fileName: renderError ? "Mermaid Render Error" : "mermaid",
|
|
165
|
+
code: props.code,
|
|
166
|
+
language: "mermaid"
|
|
167
|
+
}
|
|
168
|
+
],
|
|
169
|
+
defaultExpanded: renderState.config.codeBlock.defaultExpanded,
|
|
170
|
+
maxCollapsedHeight: "320px",
|
|
171
|
+
styles: {
|
|
172
|
+
filesScrollarea: {
|
|
173
|
+
right: "90px"
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
controls: renderError ? [] : [
|
|
177
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
178
|
+
import_code_highlight.CodeHighlightControl,
|
|
179
|
+
{
|
|
180
|
+
tooltipLabel: "Render Mermaid",
|
|
181
|
+
onClick: () => {
|
|
182
|
+
setShowOriginalCode(false);
|
|
183
|
+
},
|
|
184
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_core4.Flex, { align: "center", justify: "center", w: 18, h: 18, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "icon-[gravity-ui--logo-mermaid] relative bottom-[1px] text-[16px]" }) })
|
|
185
|
+
},
|
|
186
|
+
"gpt"
|
|
187
|
+
)
|
|
188
|
+
],
|
|
189
|
+
withBorder: true,
|
|
190
|
+
withExpandButton: true
|
|
191
|
+
}
|
|
192
|
+
),
|
|
193
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
194
|
+
"div",
|
|
195
|
+
{
|
|
196
|
+
className: `aim-mantine-mermaid-code ${isDark ? "dark" : ""}`,
|
|
197
|
+
style: showOriginalCode || renderError ? {
|
|
198
|
+
display: "none"
|
|
199
|
+
} : {},
|
|
200
|
+
children: [
|
|
201
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "chart-header", children: [
|
|
202
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "chart-type-tag", children: chartType }),
|
|
203
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_core4.Flex, { align: "center", justify: "flex-end", gap: 0, children: [
|
|
204
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_core4.Tooltip, { label: "Show Mermaid Code", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
205
|
+
import_core4.ActionIcon,
|
|
206
|
+
{
|
|
207
|
+
size: 28,
|
|
208
|
+
className: "action-icon",
|
|
209
|
+
variant: "transparent",
|
|
210
|
+
onClick: () => {
|
|
211
|
+
setShowOriginalCode(true);
|
|
212
|
+
},
|
|
213
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_core4.Flex, { align: "center", justify: "center", w: 18, h: 18, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "icon-[entypo--code] relative bottom-[0.25px] text-[16px]" }) })
|
|
214
|
+
}
|
|
215
|
+
) }),
|
|
216
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_core4.CopyButton, { value: props.code, children: ({ copied, copy }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_core4.Tooltip, { label: copied ? "Copied" : "Copy", withArrow: true, position: "right", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_core4.ActionIcon, { variant: "transparent", size: 28, className: "action-icon", onClick: copy, children: copied ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "icon-origin-[lucide--check] text-[18px]" }) : /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
217
|
+
"svg",
|
|
218
|
+
{
|
|
219
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
220
|
+
viewBox: "0 0 24 24",
|
|
221
|
+
strokeWidth: "2",
|
|
222
|
+
stroke: "currentColor",
|
|
223
|
+
fill: "none",
|
|
224
|
+
strokeLinecap: "round",
|
|
225
|
+
strokeLinejoin: "round",
|
|
226
|
+
width: "18px",
|
|
227
|
+
height: "18px",
|
|
228
|
+
children: [
|
|
229
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }),
|
|
230
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z" }),
|
|
231
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2" })
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
) }) }) })
|
|
235
|
+
] })
|
|
236
|
+
] }),
|
|
237
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
238
|
+
"pre",
|
|
239
|
+
{
|
|
240
|
+
ref,
|
|
241
|
+
style: { cursor: "pointer", overflow: "auto", width: "100%", padding: "0.5rem" },
|
|
242
|
+
onClick: () => viewSvgInNewWindow()
|
|
243
|
+
}
|
|
244
|
+
)
|
|
245
|
+
]
|
|
246
|
+
}
|
|
247
|
+
)
|
|
248
|
+
] });
|
|
249
|
+
});
|
|
250
|
+
MantineAIMMermaidCode.displayName = "MantineAIMMermaidCode";
|
|
251
|
+
var MermaidCode_default = MantineAIMMermaidCode;
|
|
252
|
+
|
|
253
|
+
// src/components/customized/PreCode.tsx
|
|
254
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
255
|
+
var MantineAIMPreCode = (0, import_react3.memo)(
|
|
256
|
+
(props) => {
|
|
257
|
+
const renderState = useMantineAIMarkdownRenderState();
|
|
258
|
+
const [codeLanguage, setCodeLanguage] = (0, import_react3.useState)(props.existLanguage || "");
|
|
259
|
+
(0, import_react3.useEffect)(() => {
|
|
260
|
+
if (props.existLanguage) {
|
|
261
|
+
setCodeLanguage(props.existLanguage);
|
|
262
|
+
} else if (renderState.config.codeBlock.autoDetectUnknownLanguage) {
|
|
263
|
+
const result = import_highlight.default.highlightAuto(props.codeText);
|
|
264
|
+
setCodeLanguage(result.language || "");
|
|
265
|
+
} else {
|
|
266
|
+
setCodeLanguage("");
|
|
267
|
+
}
|
|
268
|
+
}, [props.existLanguage, props.codeText, renderState.config.codeBlock.autoDetectUnknownLanguage]);
|
|
269
|
+
const [usedCodeLanguage, usedFileName] = (0, import_react3.useMemo)(() => {
|
|
270
|
+
if (!codeLanguage) return ["plaintext", "unknown"];
|
|
271
|
+
if (!import_highlight.default.getLanguage(codeLanguage)) {
|
|
272
|
+
return ["plaintext", codeLanguage];
|
|
273
|
+
}
|
|
274
|
+
return [codeLanguage, codeLanguage];
|
|
275
|
+
}, [codeLanguage]);
|
|
276
|
+
const isMermaidCodeBlock = codeLanguage === "mermaid";
|
|
277
|
+
const isSpecialCodeBlock = isMermaidCodeBlock;
|
|
278
|
+
const normalCodeBlockContent = (0, import_react3.useMemo)(() => {
|
|
279
|
+
let usedCodeStr = props.codeText;
|
|
280
|
+
if (usedCodeStr && usedCodeLanguage.toLowerCase() === "json") {
|
|
281
|
+
const deepParsedResult = (0, import_deep_parse_json.deepParseJson)(usedCodeStr);
|
|
282
|
+
usedCodeStr = typeof deepParsedResult === "string" ? deepParsedResult : JSON.stringify(deepParsedResult, null, 2);
|
|
283
|
+
}
|
|
284
|
+
return usedFileName === "unknown" ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
285
|
+
import_code_highlight2.CodeHighlight,
|
|
286
|
+
{
|
|
287
|
+
mb: 15,
|
|
288
|
+
w: "100%",
|
|
289
|
+
code: usedCodeStr,
|
|
290
|
+
withBorder: true,
|
|
291
|
+
withExpandButton: true,
|
|
292
|
+
defaultExpanded: renderState.config.codeBlock.defaultExpanded,
|
|
293
|
+
maxCollapsedHeight: "320px"
|
|
294
|
+
}
|
|
295
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
296
|
+
import_code_highlight2.CodeHighlightTabs,
|
|
297
|
+
{
|
|
298
|
+
mb: 15,
|
|
299
|
+
w: "100%",
|
|
300
|
+
code: [
|
|
301
|
+
{
|
|
302
|
+
fileName: usedFileName,
|
|
303
|
+
code: usedCodeStr,
|
|
304
|
+
language: usedCodeLanguage
|
|
305
|
+
}
|
|
306
|
+
],
|
|
307
|
+
withBorder: true,
|
|
308
|
+
withExpandButton: true,
|
|
309
|
+
defaultExpanded: renderState.config.codeBlock.defaultExpanded,
|
|
310
|
+
maxCollapsedHeight: "320px"
|
|
311
|
+
}
|
|
312
|
+
);
|
|
313
|
+
}, [props.codeText, usedCodeLanguage, usedFileName]);
|
|
314
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
|
|
315
|
+
isMermaidCodeBlock && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(MermaidCode_default, { code: props.codeText }),
|
|
316
|
+
!isSpecialCodeBlock && normalCodeBlockContent
|
|
317
|
+
] });
|
|
318
|
+
}
|
|
319
|
+
);
|
|
320
|
+
MantineAIMPreCode.displayName = "MantineAIMPreCode";
|
|
321
|
+
var PreCode_default = MantineAIMPreCode;
|
|
322
|
+
|
|
323
|
+
// src/MantineAIMarkdown.tsx
|
|
324
|
+
var import_core7 = require("@mantine/core");
|
|
325
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
326
|
+
var DefaultCustomComponents = {
|
|
327
|
+
pre: (0, import_react4.memo)(({ node, ...usefulProps }) => {
|
|
328
|
+
const code = node?.children[0];
|
|
329
|
+
const memoizedPreCode = (0, import_react4.useMemo)(() => {
|
|
330
|
+
if (!code || code.type !== "element" || code.tagName !== "code" || !code.position) {
|
|
331
|
+
return null;
|
|
332
|
+
}
|
|
333
|
+
const key = `pre-code-${node.position?.start?.offset || 0}`;
|
|
334
|
+
const detectedLanguage = code.properties?.className?.find((className) => className.startsWith("language-"))?.substring("language-".length);
|
|
335
|
+
const codeText = code.children.map((child) => "value" in child ? child.value : "").join("\n");
|
|
336
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(PreCode_default, { codeText, existLanguage: detectedLanguage }, key);
|
|
337
|
+
}, [code, node?.position?.start?.offset]);
|
|
338
|
+
return memoizedPreCode ?? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("pre", { ...usefulProps });
|
|
339
|
+
})
|
|
340
|
+
};
|
|
341
|
+
var MantineAIMarkdownComponent = ({
|
|
342
|
+
Typography: Typography2 = MantineTypography_default,
|
|
343
|
+
ExtraStyles = DefaultExtraStyles_default,
|
|
344
|
+
defaultConfig = defaultMantineAIMarkdownRenderConfig,
|
|
345
|
+
customComponents,
|
|
346
|
+
colorScheme,
|
|
347
|
+
...props
|
|
348
|
+
}) => {
|
|
349
|
+
const stableCustomComponents = (0, import_core6.useStableValue)(customComponents);
|
|
350
|
+
const usedComponents = (0, import_react4.useMemo)(() => {
|
|
351
|
+
return stableCustomComponents ? { ...DefaultCustomComponents, ...stableCustomComponents } : DefaultCustomComponents;
|
|
352
|
+
}, [stableCustomComponents]);
|
|
353
|
+
const computedColorScheme = (0, import_core7.useComputedColorScheme)("light");
|
|
354
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
355
|
+
import_core5.default,
|
|
356
|
+
{
|
|
357
|
+
Typography: Typography2,
|
|
358
|
+
ExtraStyles,
|
|
359
|
+
defaultConfig,
|
|
360
|
+
customComponents: usedComponents,
|
|
361
|
+
colorScheme: colorScheme ?? computedColorScheme,
|
|
362
|
+
...props
|
|
363
|
+
}
|
|
364
|
+
);
|
|
365
|
+
};
|
|
366
|
+
var MantineAIMarkdown = (0, import_react4.memo)(MantineAIMarkdownComponent);
|
|
367
|
+
MantineAIMarkdown.displayName = "MantineAIMarkdown";
|
|
368
|
+
var MantineAIMarkdown_default = MantineAIMarkdown;
|
|
369
|
+
|
|
370
|
+
// src/hooks/useMantineAIMarkdownMetadata.ts
|
|
371
|
+
var import_core8 = require("@ai-react-markdown/core");
|
|
372
|
+
var useMantineAIMarkdownMetadata = () => {
|
|
373
|
+
return (0, import_core8.useAIMarkdownMetadata)();
|
|
374
|
+
};
|
|
375
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
376
|
+
0 && (module.exports = {
|
|
377
|
+
MantineAIMDefaultExtraStyles,
|
|
378
|
+
MantineAIMarkdownTypography,
|
|
379
|
+
defaultMantineAIMarkdownRenderConfig,
|
|
380
|
+
useMantineAIMarkdownMetadata,
|
|
381
|
+
useMantineAIMarkdownRenderState
|
|
382
|
+
});
|
|
383
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx","../src/MantineAIMarkdown.tsx","../src/components/typography/MantineTypography.tsx","../src/hooks/useMantineAIMarkdownRenderState.ts","../src/components/extra-styles/DefaultExtraStyles/index.tsx","../src/defs.tsx","../src/components/customized/PreCode.tsx","../src/components/customized/MermaidCode/index.tsx","../src/hooks/useMantineAIMarkdownMetadata.ts"],"sourcesContent":["// Mantine-specific components\nexport type { MantineAIMarkdownProps } from './MantineAIMarkdown';\nexport { default } from './MantineAIMarkdown';\nexport { default as MantineAIMarkdownTypography } from './components/typography/MantineTypography';\nexport { default as MantineAIMDefaultExtraStyles } from './components/extra-styles/DefaultExtraStyles';\n\n// Mantine-specific types, config, and hooks\nexport type { MantineAIMarkdownRenderConfig, MantineAIMarkdownMetadata } from './defs';\nexport { defaultMantineAIMarkdownRenderConfig } from './defs';\nexport { useMantineAIMarkdownRenderState } from './hooks/useMantineAIMarkdownRenderState';\nexport { useMantineAIMarkdownMetadata } from './hooks/useMantineAIMarkdownMetadata';\n","import { memo, useMemo } from 'react';\nimport AIMarkdown from '@ai-react-markdown/core';\nimport { type AIMarkdownProps, type AIMarkdownCustomComponents, useStableValue } from '@ai-react-markdown/core';\nimport MantineAIMarkdownTypography from './components/typography/MantineTypography';\nimport MantineAIMDefaultExtraStyles from './components/extra-styles/DefaultExtraStyles';\nimport { MantineAIMarkdownRenderConfig, MantineAIMarkdownMetadata, defaultMantineAIMarkdownRenderConfig } from './defs';\nimport MantineAIMPreCode from './components/customized/PreCode';\nimport { useComputedColorScheme } from '@mantine/core';\n\nexport interface MantineAIMarkdownProps<\n TConfig extends MantineAIMarkdownRenderConfig = MantineAIMarkdownRenderConfig,\n TRenderData extends MantineAIMarkdownMetadata = MantineAIMarkdownMetadata,\n> extends AIMarkdownProps<TConfig, TRenderData> {}\n\nconst DefaultCustomComponents: AIMarkdownCustomComponents = {\n pre: memo(({ node, ...usefulProps }) => {\n const code = node?.children[0];\n const memoizedPreCode = useMemo(() => {\n if (!code || code.type !== 'element' || code.tagName !== 'code' || !code.position) {\n return null;\n }\n const key = `pre-code-${node.position?.start?.offset || 0}`;\n const detectedLanguage = (code.properties?.className as string[])\n ?.find((className: string) => className.startsWith('language-'))\n ?.substring('language-'.length);\n const codeText = code.children.map((child) => ('value' in child ? child.value : '')).join('\\n');\n return <MantineAIMPreCode key={key} codeText={codeText} existLanguage={detectedLanguage} />;\n }, [code, node?.position?.start?.offset]);\n return memoizedPreCode ?? <pre {...usefulProps} />;\n }),\n};\n\nconst MantineAIMarkdownComponent = <\n TConfig extends MantineAIMarkdownRenderConfig = MantineAIMarkdownRenderConfig,\n TRenderData extends MantineAIMarkdownMetadata = MantineAIMarkdownMetadata,\n>({\n Typography = MantineAIMarkdownTypography,\n ExtraStyles = MantineAIMDefaultExtraStyles,\n defaultConfig = defaultMantineAIMarkdownRenderConfig as TConfig,\n customComponents,\n colorScheme,\n ...props\n}: MantineAIMarkdownProps<TConfig, TRenderData>) => {\n const stableCustomComponents = useStableValue(customComponents);\n\n const usedComponents = useMemo(() => {\n return stableCustomComponents ? { ...DefaultCustomComponents, ...stableCustomComponents } : DefaultCustomComponents;\n }, [stableCustomComponents]);\n\n const computedColorScheme = useComputedColorScheme('light');\n\n return (\n <AIMarkdown<MantineAIMarkdownRenderConfig, MantineAIMarkdownMetadata>\n Typography={Typography}\n ExtraStyles={ExtraStyles}\n defaultConfig={defaultConfig}\n customComponents={usedComponents}\n colorScheme={colorScheme ?? computedColorScheme}\n {...props}\n />\n );\n};\n\nexport const MantineAIMarkdown = memo(MantineAIMarkdownComponent);\n\nMantineAIMarkdown.displayName = 'MantineAIMarkdown';\n\nexport default MantineAIMarkdown;\n","import { memo } from 'react';\nimport { Typography } from '@mantine/core';\nimport type { AIMarkdownTypographyProps } from '@ai-react-markdown/core';\n\nconst MantineAIMarkdownTypography = memo(({ children, fontSize }: AIMarkdownTypographyProps) => (\n <Typography w=\"100%\" fz={fontSize}>\n {children}\n </Typography>\n));\n\nMantineAIMarkdownTypography.displayName = 'MantineAIMarkdownTypography';\n\nexport default MantineAIMarkdownTypography;\n","import { useAIMarkdownRenderState } from '@ai-react-markdown/core';\nimport { MantineAIMarkdownRenderConfig } from '../defs';\n\nexport const useMantineAIMarkdownRenderState = () => {\n return useAIMarkdownRenderState<MantineAIMarkdownRenderConfig>();\n};\n","import { AIMarkdownExtraStylesComponent } from '@ai-react-markdown/core';\nimport { useMantineAIMarkdownRenderState } from '../../../hooks/useMantineAIMarkdownRenderState';\nimport './styles.scss';\n\nconst MantineAIMDefaultExtraStyles: AIMarkdownExtraStylesComponent = ({ children }) => {\n const renderState = useMantineAIMarkdownRenderState();\n return (\n <div className={`aim-mantine-extra-styles${renderState.config.forceSameFontSize ? ' same-font-size' : ''}`}>\n {children}\n </div>\n );\n};\n\nexport default MantineAIMDefaultExtraStyles;\n","import { AIMarkdownRenderConfig, AIMarkdownMetadata, defaultAIMarkdownRenderConfig } from '@ai-react-markdown/core';\n\nexport interface MantineAIMarkdownRenderConfig extends AIMarkdownRenderConfig {\n forceSameFontSize: boolean;\n codeBlock: {\n defaultExpanded: boolean;\n autoDetectUnknownLanguage: boolean;\n };\n}\n\nexport const defaultMantineAIMarkdownRenderConfig: MantineAIMarkdownRenderConfig = Object.freeze({\n ...defaultAIMarkdownRenderConfig,\n forceSameFontSize: false,\n codeBlock: Object.freeze({\n defaultExpanded: true,\n autoDetectUnknownLanguage: false,\n }),\n});\n\nexport interface MantineAIMarkdownMetadata extends AIMarkdownMetadata {}\n","'use client';\n\nimport { HTMLAttributes, memo, useEffect, useMemo, useState } from 'react';\nimport { CodeHighlight, CodeHighlightTabs } from '@mantine/code-highlight';\nimport { deepParseJson } from 'deep-parse-json';\nimport hljs from 'highlight.js';\nimport { useMantineAIMarkdownRenderState } from '../../hooks/useMantineAIMarkdownRenderState';\nimport MantineAIMMermaidCode from './MermaidCode';\n\nconst MantineAIMPreCode = memo(\n (\n props: HTMLAttributes<HTMLPreElement> & {\n codeText: string;\n existLanguage?: string;\n }\n ) => {\n const renderState = useMantineAIMarkdownRenderState();\n\n const [codeLanguage, setCodeLanguage] = useState(props.existLanguage || '');\n\n useEffect(() => {\n if (props.existLanguage) {\n setCodeLanguage(props.existLanguage);\n } else if (renderState.config.codeBlock.autoDetectUnknownLanguage) {\n const result = hljs.highlightAuto(props.codeText);\n setCodeLanguage(result.language || '');\n } else {\n setCodeLanguage('');\n }\n }, [props.existLanguage, props.codeText, renderState.config.codeBlock.autoDetectUnknownLanguage]);\n\n const [usedCodeLanguage, usedFileName] = useMemo(() => {\n if (!codeLanguage) return ['plaintext', 'unknown'];\n if (!hljs.getLanguage(codeLanguage)) {\n return ['plaintext', codeLanguage];\n }\n return [codeLanguage, codeLanguage];\n }, [codeLanguage]);\n\n const isMermaidCodeBlock = codeLanguage === 'mermaid';\n const isSpecialCodeBlock = isMermaidCodeBlock;\n\n const normalCodeBlockContent = useMemo(() => {\n let usedCodeStr = props.codeText;\n if (usedCodeStr && usedCodeLanguage.toLowerCase() === 'json') {\n const deepParsedResult = deepParseJson(usedCodeStr);\n usedCodeStr =\n typeof deepParsedResult === 'string' ? deepParsedResult : JSON.stringify(deepParsedResult, null, 2);\n }\n return usedFileName === 'unknown' ? (\n <CodeHighlight\n mb={15}\n w=\"100%\"\n code={usedCodeStr}\n withBorder\n withExpandButton\n defaultExpanded={renderState.config.codeBlock.defaultExpanded}\n maxCollapsedHeight=\"320px\"\n />\n ) : (\n <CodeHighlightTabs\n mb={15}\n w=\"100%\"\n code={[\n {\n fileName: usedFileName,\n code: usedCodeStr,\n language: usedCodeLanguage,\n },\n ]}\n withBorder\n withExpandButton\n defaultExpanded={renderState.config.codeBlock.defaultExpanded}\n maxCollapsedHeight=\"320px\"\n />\n );\n }, [props.codeText, usedCodeLanguage, usedFileName]);\n\n return (\n <>\n {isMermaidCodeBlock && <MantineAIMMermaidCode code={props.codeText} />}\n {!isSpecialCodeBlock && normalCodeBlockContent}\n </>\n );\n }\n);\n\nMantineAIMPreCode.displayName = 'MantineAIMPreCode';\n\nexport default MantineAIMPreCode;\n","'use client';\n\nimport React, { memo, useMemo, useEffect, useRef, useState, useCallback } from 'react';\nimport { CodeHighlightControl, CodeHighlightTabs } from '@mantine/code-highlight';\nimport { ActionIcon, CopyButton, Flex, Tooltip } from '@mantine/core';\nimport debounce from 'lodash-es/debounce';\nimport mermaid from 'mermaid';\nimport { useMantineAIMarkdownRenderState } from '../../../hooks/useMantineAIMarkdownRenderState';\nimport './styles.scss';\n\nconst generateMermaidUUID = () => {\n return `mermaid-${new Date().getTime()}-${Math.random().toString(36).slice(2, 10)}`;\n};\n\nconst handleViewSVGInNewWindow = (svgElement: SVGElement | null | undefined, isDark: boolean) => {\n if (!svgElement) return;\n const targetSvg = svgElement.cloneNode(true) as SVGElement;\n targetSvg.style.backgroundColor = isDark ? '#242424' : 'white';\n const text = new XMLSerializer().serializeToString(targetSvg);\n const blob = new Blob([text], { type: 'image/svg+xml' });\n const url = URL.createObjectURL(blob);\n const win = window.open(url);\n if (win) {\n setTimeout(() => URL.revokeObjectURL(url), 5000);\n }\n};\n\nconst MantineAIMMermaidCode = memo((props: { code: string }) => {\n const renderState = useMantineAIMarkdownRenderState();\n const isDark = renderState.colorScheme === 'dark';\n\n const ref = useRef<HTMLPreElement>(null);\n const [showOriginalCode, setShowOriginalCode] = useState(false);\n const [renderError, setRenderError] = useState(false);\n const [chartType, setChartType] = useState('unkown');\n\n const debouncedUpdateRenderError = useMemo(\n () =>\n debounce((error: boolean) => {\n setRenderError(error);\n }, 200),\n []\n );\n\n useEffect(() => {\n if (props.code && ref.current) {\n const renderMermaid = async () => {\n try {\n debouncedUpdateRenderError(false);\n if (ref.current) {\n mermaid.initialize({\n startOnLoad: false,\n securityLevel: 'loose',\n theme: isDark ? 'dark' : 'base',\n darkMode: isDark,\n });\n const parseResult = await mermaid.parse(props.code);\n if (!parseResult) {\n throw new Error('Failed to parse mermaid code');\n }\n const { svg, bindFunctions, diagramType } = await mermaid.render(\n generateMermaidUUID(),\n props.code,\n ref.current\n );\n ref.current.innerHTML = svg;\n bindFunctions?.(ref.current);\n setChartType(diagramType);\n }\n } catch {\n debouncedUpdateRenderError(true);\n }\n };\n\n renderMermaid();\n }\n }, [props.code, isDark, showOriginalCode]);\n\n const viewSvgInNewWindow = useCallback(() => {\n handleViewSVGInNewWindow(ref.current?.querySelector('svg'), isDark);\n }, []);\n\n return (\n <>\n {(showOriginalCode || renderError) && (\n <CodeHighlightTabs\n mb={15}\n w=\"100%\"\n code={[\n {\n fileName: renderError ? 'Mermaid Render Error' : 'mermaid',\n code: props.code,\n language: 'mermaid',\n },\n ]}\n defaultExpanded={renderState.config.codeBlock.defaultExpanded}\n maxCollapsedHeight=\"320px\"\n styles={{\n filesScrollarea: {\n right: '90px',\n },\n }}\n controls={\n renderError\n ? []\n : [\n <CodeHighlightControl\n tooltipLabel=\"Render Mermaid\"\n key=\"gpt\"\n onClick={() => {\n setShowOriginalCode(false);\n }}\n >\n <Flex align=\"center\" justify=\"center\" w={18} h={18}>\n <span className=\"icon-[gravity-ui--logo-mermaid] relative bottom-[1px] text-[16px]\"></span>\n </Flex>\n </CodeHighlightControl>,\n ]\n }\n withBorder\n withExpandButton\n />\n )}\n <div\n className={`aim-mantine-mermaid-code ${isDark ? 'dark' : ''}`}\n style={\n showOriginalCode || renderError\n ? {\n display: 'none',\n }\n : {}\n }\n >\n <div className=\"chart-header\">\n <div className=\"chart-type-tag\">{chartType}</div>\n <Flex align=\"center\" justify=\"flex-end\" gap={0}>\n <Tooltip label=\"Show Mermaid Code\">\n <ActionIcon\n size={28}\n className=\"action-icon\"\n variant=\"transparent\"\n onClick={() => {\n setShowOriginalCode(true);\n }}\n >\n <Flex align=\"center\" justify=\"center\" w={18} h={18}>\n <span className=\"icon-[entypo--code] relative bottom-[0.25px] text-[16px]\"></span>\n </Flex>\n </ActionIcon>\n </Tooltip>\n <CopyButton value={props.code}>\n {({ copied, copy }) => (\n <Tooltip label={copied ? 'Copied' : 'Copy'} withArrow position=\"right\">\n <ActionIcon variant=\"transparent\" size={28} className=\"action-icon\" onClick={copy}>\n {copied ? (\n <span className=\"icon-origin-[lucide--check] text-[18px]\"></span>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width=\"18px\"\n height=\"18px\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n <path d=\"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z\"></path>\n <path d=\"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\"></path>\n </svg>\n )}\n </ActionIcon>\n </Tooltip>\n )}\n </CopyButton>\n </Flex>\n </div>\n <pre\n ref={ref}\n style={{ cursor: 'pointer', overflow: 'auto', width: '100%', padding: '0.5rem' }}\n onClick={() => viewSvgInNewWindow()}\n />\n </div>\n </>\n );\n});\n\nMantineAIMMermaidCode.displayName = 'MantineAIMMermaidCode';\n\nexport default MantineAIMMermaidCode;\n","import { useAIMarkdownMetadata } from '@ai-react-markdown/core';\nimport { MantineAIMarkdownMetadata } from '../defs';\n\nexport const useMantineAIMarkdownMetadata = () => {\n return useAIMarkdownMetadata<MantineAIMarkdownMetadata>();\n};\n"],"mappings":"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","names":["import_react","import_core","import_core","import_jsx_runtime","import_core","import_react","import_code_highlight","import_react","import_core","import_jsx_runtime","debounce","mermaid","import_jsx_runtime","hljs","import_core","import_jsx_runtime","Typography","AIMarkdown","import_core"]}
|
package/dist/index.css
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/* src/components/extra-styles/DefaultExtraStyles/styles.scss */
|
|
2
|
+
.aim-mantine-extra-styles {
|
|
3
|
+
width: 100%;
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
justify-items: flex-start;
|
|
7
|
+
align-items: flex-start;
|
|
8
|
+
white-space: normal;
|
|
9
|
+
word-wrap: break-word;
|
|
10
|
+
overflow-wrap: break-word;
|
|
11
|
+
word-break: break-word;
|
|
12
|
+
text-rendering: optimizeLegibility;
|
|
13
|
+
--mantine-spacing-xs: calc(0.625em * var(--mantine-scale));
|
|
14
|
+
--mantine-spacing-sm: calc(0.75em * var(--mantine-scale));
|
|
15
|
+
--mantine-spacing-md: calc(1em * var(--mantine-scale));
|
|
16
|
+
--mantine-spacing-lg: calc(1.25em * var(--mantine-scale));
|
|
17
|
+
--mantine-spacing-xl: calc(2em * var(--mantine-scale));
|
|
18
|
+
--mantine-font-size-xs: calc(0.75em * var(--mantine-scale));
|
|
19
|
+
--mantine-font-size-sm: calc(0.875em * var(--mantine-scale));
|
|
20
|
+
--mantine-font-size-md: calc(1em * var(--mantine-scale));
|
|
21
|
+
--mantine-font-size-lg: calc(1.125em * var(--mantine-scale));
|
|
22
|
+
--mantine-font-size-xl: calc(1.25em * var(--mantine-scale));
|
|
23
|
+
}
|
|
24
|
+
.aim-mantine-extra-styles :first-child {
|
|
25
|
+
margin-top: 0;
|
|
26
|
+
}
|
|
27
|
+
.aim-mantine-extra-styles :last-child {
|
|
28
|
+
margin-bottom: 0;
|
|
29
|
+
}
|
|
30
|
+
.aim-mantine-extra-styles h1,
|
|
31
|
+
.aim-mantine-extra-styles h2,
|
|
32
|
+
.aim-mantine-extra-styles h3,
|
|
33
|
+
.aim-mantine-extra-styles h4,
|
|
34
|
+
.aim-mantine-extra-styles h5,
|
|
35
|
+
.aim-mantine-extra-styles h6 {
|
|
36
|
+
--mantine-h1-font-size: 2.125em;
|
|
37
|
+
--mantine-h2-font-size: 1.625em;
|
|
38
|
+
--mantine-h3-font-size: 1.375em;
|
|
39
|
+
--mantine-h4-font-size: 1.125em;
|
|
40
|
+
--mantine-h5-font-size: 1em;
|
|
41
|
+
--mantine-h6-font-size: 0.875em;
|
|
42
|
+
margin-top: 0;
|
|
43
|
+
}
|
|
44
|
+
.aim-mantine-extra-styles.same-font-size h1,
|
|
45
|
+
.aim-mantine-extra-styles.same-font-size h2,
|
|
46
|
+
.aim-mantine-extra-styles.same-font-size h3,
|
|
47
|
+
.aim-mantine-extra-styles.same-font-size h4,
|
|
48
|
+
.aim-mantine-extra-styles.same-font-size h5,
|
|
49
|
+
.aim-mantine-extra-styles.same-font-size h6 {
|
|
50
|
+
--mantine-h1-font-size: 1em;
|
|
51
|
+
--mantine-h2-font-size: 1em;
|
|
52
|
+
--mantine-h3-font-size: 1em;
|
|
53
|
+
--mantine-h4-font-size: 1em;
|
|
54
|
+
--mantine-h5-font-size: 1em;
|
|
55
|
+
--mantine-h6-font-size: 1em;
|
|
56
|
+
}
|
|
57
|
+
.aim-mantine-extra-styles ul,
|
|
58
|
+
.aim-mantine-extra-styles ol {
|
|
59
|
+
list-style-position: outside;
|
|
60
|
+
margin-bottom: 0.55em;
|
|
61
|
+
padding-inline-start: 1.5em;
|
|
62
|
+
}
|
|
63
|
+
.aim-mantine-extra-styles ul li,
|
|
64
|
+
.aim-mantine-extra-styles ol li {
|
|
65
|
+
margin-bottom: 0.275em;
|
|
66
|
+
}
|
|
67
|
+
.aim-mantine-extra-styles hr {
|
|
68
|
+
width: 100%;
|
|
69
|
+
height: 1px;
|
|
70
|
+
background-color: var(--mantine-color-text);
|
|
71
|
+
}
|
|
72
|
+
.aim-mantine-extra-styles ul {
|
|
73
|
+
list-style-type: disc;
|
|
74
|
+
}
|
|
75
|
+
.aim-mantine-extra-styles ul ul {
|
|
76
|
+
list-style-type: circle;
|
|
77
|
+
}
|
|
78
|
+
.aim-mantine-extra-styles ul ul ul {
|
|
79
|
+
list-style-type: square;
|
|
80
|
+
}
|
|
81
|
+
.aim-mantine-extra-styles ol {
|
|
82
|
+
list-style-type: decimal;
|
|
83
|
+
}
|
|
84
|
+
.aim-mantine-extra-styles p {
|
|
85
|
+
--mantine-scale: 0.875;
|
|
86
|
+
margin-bottom: 0.5em;
|
|
87
|
+
}
|
|
88
|
+
.aim-mantine-extra-styles p:last-child {
|
|
89
|
+
margin-bottom: 0;
|
|
90
|
+
}
|
|
91
|
+
.aim-mantine-extra-styles blockquote {
|
|
92
|
+
border-inline-start-width: 0.25rem;
|
|
93
|
+
border-inline-start-color: var(--mantine-color-text);
|
|
94
|
+
}
|
|
95
|
+
.aim-mantine-extra-styles pre {
|
|
96
|
+
font-size: var(--mantine-font-size-md);
|
|
97
|
+
}
|
|
98
|
+
.aim-mantine-extra-styles code {
|
|
99
|
+
font-size: var(--mantine-font-size-md);
|
|
100
|
+
}
|
|
101
|
+
.aim-mantine-extra-styles pre code {
|
|
102
|
+
white-space: pre-wrap;
|
|
103
|
+
word-wrap: break-word;
|
|
104
|
+
overflow-wrap: break-word;
|
|
105
|
+
word-break: break-word;
|
|
106
|
+
}
|
|
107
|
+
.aim-mantine-extra-styles dl {
|
|
108
|
+
display: flex;
|
|
109
|
+
flex-wrap: wrap;
|
|
110
|
+
width: 100%;
|
|
111
|
+
max-width: 670px;
|
|
112
|
+
}
|
|
113
|
+
.aim-mantine-extra-styles dl > * {
|
|
114
|
+
padding-top: 0.5em;
|
|
115
|
+
}
|
|
116
|
+
.aim-mantine-extra-styles dt {
|
|
117
|
+
width: 30%;
|
|
118
|
+
font-weight: bold;
|
|
119
|
+
text-align: right;
|
|
120
|
+
}
|
|
121
|
+
.aim-mantine-extra-styles dd {
|
|
122
|
+
width: 60%;
|
|
123
|
+
padding-left: 1em;
|
|
124
|
+
margin-left: 0px;
|
|
125
|
+
}
|
|
126
|
+
.aim-mantine-extra-styles dd + dd {
|
|
127
|
+
width: 100%;
|
|
128
|
+
padding-left: calc(30% + 1em);
|
|
129
|
+
}
|
|
130
|
+
.aim-mantine-extra-styles dt + dt {
|
|
131
|
+
padding-right: 60%;
|
|
132
|
+
}
|
|
133
|
+
.aim-mantine-extra-styles dt + dt + dd {
|
|
134
|
+
margin-top: -1.625em;
|
|
135
|
+
padding-left: calc(30% + 1em);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* src/components/customized/MermaidCode/styles.scss */
|
|
139
|
+
.aim-mantine-mermaid-code {
|
|
140
|
+
width: 100%;
|
|
141
|
+
margin-bottom: 15px;
|
|
142
|
+
background: var(--mantine-color-gray-0);
|
|
143
|
+
border: 1px solid var(--mantine-color-gray-2);
|
|
144
|
+
padding: calc(0.75rem * var(--mantine-scale)) calc(0.625rem * var(--mantine-scale));
|
|
145
|
+
display: flex;
|
|
146
|
+
flex-shrink: 0;
|
|
147
|
+
flex-direction: column;
|
|
148
|
+
justify-content: flex-start;
|
|
149
|
+
align-items: stretch;
|
|
150
|
+
}
|
|
151
|
+
.aim-mantine-mermaid-code .chart-header {
|
|
152
|
+
width: 100%;
|
|
153
|
+
display: flex;
|
|
154
|
+
flex-direction: row;
|
|
155
|
+
justify-content: space-between;
|
|
156
|
+
align-items: center;
|
|
157
|
+
flex-shrink: 0;
|
|
158
|
+
}
|
|
159
|
+
.aim-mantine-mermaid-code .chart-header .chart-type-tag {
|
|
160
|
+
padding: calc(0.2125rem * var(--mantine-scale)) calc(0.5625rem * var(--mantine-scale));
|
|
161
|
+
color: black;
|
|
162
|
+
border: 1px solid var(--mantine-color-gray-3);
|
|
163
|
+
background: white;
|
|
164
|
+
border-radius: var(--mantine-radius-default);
|
|
165
|
+
font-size: var(--mantine-font-size-xs);
|
|
166
|
+
font-weight: 700;
|
|
167
|
+
}
|
|
168
|
+
.aim-mantine-mermaid-code .chart-header .action-icon {
|
|
169
|
+
color: var(--mantine-color-text);
|
|
170
|
+
opacity: 0.5;
|
|
171
|
+
}
|
|
172
|
+
.aim-mantine-mermaid-code .chart-header .action-icon:hover {
|
|
173
|
+
color: var(--mantine-color-bright);
|
|
174
|
+
opacity: 1;
|
|
175
|
+
}
|
|
176
|
+
.aim-mantine-mermaid-code > pre {
|
|
177
|
+
flex-shrink: 0;
|
|
178
|
+
display: flex;
|
|
179
|
+
flex-direction: column;
|
|
180
|
+
justify-content: flex-start;
|
|
181
|
+
align-items: center;
|
|
182
|
+
}
|
|
183
|
+
.aim-mantine-mermaid-code.dark {
|
|
184
|
+
background: var(--mantine-color-dark-8);
|
|
185
|
+
border-color: var(--mantine-color-dark-6);
|
|
186
|
+
}
|
|
187
|
+
.aim-mantine-mermaid-code.dark .chart-header .chart-type-tag {
|
|
188
|
+
color: var(--mantine-color-dark-0);
|
|
189
|
+
border-color: var(--mantine-color-dark-6);
|
|
190
|
+
background: var(--mantine-color-dark-8);
|
|
191
|
+
}
|
|
192
|
+
.aim-mantine-mermaid-code.dark .chart-header .action-icon {
|
|
193
|
+
color: var(--mantine-color-text);
|
|
194
|
+
}
|
|
195
|
+
/*# sourceMappingURL=index.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/extra-styles/DefaultExtraStyles/styles.scss","../src/components/extra-styles/DefaultExtraStyles/%3Cinput css Ir_vd7%3E","../src/components/customized/MermaidCode/styles.scss","../src/components/customized/MermaidCode/%3Cinput css kcKckr%3E"],"sourcesContent":[".aim-mantine-extra-styles {\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-items: flex-start;\n align-items: flex-start;\n\n white-space: normal;\n word-wrap: break-word;\n overflow-wrap: break-word;\n word-break: break-word;\n\n text-rendering: optimizeLegibility;\n\n --mantine-spacing-xs: calc(0.625em * var(--mantine-scale));\n --mantine-spacing-sm: calc(0.75em * var(--mantine-scale));\n --mantine-spacing-md: calc(1em * var(--mantine-scale));\n --mantine-spacing-lg: calc(1.25em * var(--mantine-scale));\n --mantine-spacing-xl: calc(2em * var(--mantine-scale));\n --mantine-font-size-xs: calc(0.75em * var(--mantine-scale));\n --mantine-font-size-sm: calc(0.875em * var(--mantine-scale));\n --mantine-font-size-md: calc(1em * var(--mantine-scale));\n --mantine-font-size-lg: calc(1.125em * var(--mantine-scale));\n --mantine-font-size-xl: calc(1.25em * var(--mantine-scale));\n\n :first-child {\n margin-top: 0;\n }\n\n :last-child {\n margin-bottom: 0;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n --mantine-h1-font-size: 2.125em;\n --mantine-h2-font-size: 1.625em;\n --mantine-h3-font-size: 1.375em;\n --mantine-h4-font-size: 1.125em;\n --mantine-h5-font-size: 1em;\n --mantine-h6-font-size: 0.875em;\n margin-top: 0;\n }\n\n &.same-font-size h1,\n &.same-font-size h2,\n &.same-font-size h3,\n &.same-font-size h4,\n &.same-font-size h5,\n &.same-font-size h6 {\n --mantine-h1-font-size: 1em;\n --mantine-h2-font-size: 1em;\n --mantine-h3-font-size: 1em;\n --mantine-h4-font-size: 1em;\n --mantine-h5-font-size: 1em;\n --mantine-h6-font-size: 1em;\n }\n\n ul,\n ol {\n list-style-position: outside;\n\n margin-bottom: 0.55em;\n padding-inline-start: 1.5em;\n\n li {\n margin-bottom: 0.275em;\n }\n }\n\n hr {\n width: 100%;\n height: 1px;\n background-color: var(--mantine-color-text);\n }\n\n ul {\n list-style-type: disc;\n }\n\n ul ul {\n list-style-type: circle;\n }\n\n ul ul ul {\n list-style-type: square;\n }\n\n ol {\n list-style-type: decimal;\n }\n\n p {\n --mantine-scale: 0.875;\n margin-bottom: 0.5em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n blockquote {\n border-inline-start-width: 0.25rem;\n border-inline-start-color: var(--mantine-color-text);\n }\n\n pre {\n font-size: var(--mantine-font-size-md);\n }\n\n code {\n font-size: var(--mantine-font-size-md);\n }\n\n pre code {\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow-wrap: break-word;\n word-break: break-word;\n }\n\n dl {\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n max-width: 670px;\n }\n dl > * {\n padding-top: 0.5em;\n }\n dt {\n width: 30%;\n font-weight: bold;\n text-align: right;\n }\n dd {\n width: 60%;\n padding-left: 1em;\n margin-left: 0px;\n }\n dd + dd {\n width: 100%;\n padding-left: calc(30% + 1em);\n }\n dt + dt {\n padding-right: 60%;\n }\n dt + dt + dd {\n margin-top: -1.625em;\n padding-left: calc(30% + 1em);\n }\n}\n",".aim-mantine-extra-styles {\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-items: flex-start;\n align-items: flex-start;\n white-space: normal;\n word-wrap: break-word;\n overflow-wrap: break-word;\n word-break: break-word;\n text-rendering: optimizeLegibility;\n --mantine-spacing-xs: calc(0.625em * var(--mantine-scale));\n --mantine-spacing-sm: calc(0.75em * var(--mantine-scale));\n --mantine-spacing-md: calc(1em * var(--mantine-scale));\n --mantine-spacing-lg: calc(1.25em * var(--mantine-scale));\n --mantine-spacing-xl: calc(2em * var(--mantine-scale));\n --mantine-font-size-xs: calc(0.75em * var(--mantine-scale));\n --mantine-font-size-sm: calc(0.875em * var(--mantine-scale));\n --mantine-font-size-md: calc(1em * var(--mantine-scale));\n --mantine-font-size-lg: calc(1.125em * var(--mantine-scale));\n --mantine-font-size-xl: calc(1.25em * var(--mantine-scale));\n}\n.aim-mantine-extra-styles :first-child {\n margin-top: 0;\n}\n.aim-mantine-extra-styles :last-child {\n margin-bottom: 0;\n}\n.aim-mantine-extra-styles h1,\n.aim-mantine-extra-styles h2,\n.aim-mantine-extra-styles h3,\n.aim-mantine-extra-styles h4,\n.aim-mantine-extra-styles h5,\n.aim-mantine-extra-styles h6 {\n --mantine-h1-font-size: 2.125em;\n --mantine-h2-font-size: 1.625em;\n --mantine-h3-font-size: 1.375em;\n --mantine-h4-font-size: 1.125em;\n --mantine-h5-font-size: 1em;\n --mantine-h6-font-size: 0.875em;\n margin-top: 0;\n}\n.aim-mantine-extra-styles.same-font-size h1, .aim-mantine-extra-styles.same-font-size h2, .aim-mantine-extra-styles.same-font-size h3, .aim-mantine-extra-styles.same-font-size h4, .aim-mantine-extra-styles.same-font-size h5, .aim-mantine-extra-styles.same-font-size h6 {\n --mantine-h1-font-size: 1em;\n --mantine-h2-font-size: 1em;\n --mantine-h3-font-size: 1em;\n --mantine-h4-font-size: 1em;\n --mantine-h5-font-size: 1em;\n --mantine-h6-font-size: 1em;\n}\n.aim-mantine-extra-styles ul,\n.aim-mantine-extra-styles ol {\n list-style-position: outside;\n margin-bottom: 0.55em;\n padding-inline-start: 1.5em;\n}\n.aim-mantine-extra-styles ul li,\n.aim-mantine-extra-styles ol li {\n margin-bottom: 0.275em;\n}\n.aim-mantine-extra-styles hr {\n width: 100%;\n height: 1px;\n background-color: var(--mantine-color-text);\n}\n.aim-mantine-extra-styles ul {\n list-style-type: disc;\n}\n.aim-mantine-extra-styles ul ul {\n list-style-type: circle;\n}\n.aim-mantine-extra-styles ul ul ul {\n list-style-type: square;\n}\n.aim-mantine-extra-styles ol {\n list-style-type: decimal;\n}\n.aim-mantine-extra-styles p {\n --mantine-scale: 0.875;\n margin-bottom: 0.5em;\n}\n.aim-mantine-extra-styles p:last-child {\n margin-bottom: 0;\n}\n.aim-mantine-extra-styles blockquote {\n border-inline-start-width: 0.25rem;\n border-inline-start-color: var(--mantine-color-text);\n}\n.aim-mantine-extra-styles pre {\n font-size: var(--mantine-font-size-md);\n}\n.aim-mantine-extra-styles code {\n font-size: var(--mantine-font-size-md);\n}\n.aim-mantine-extra-styles pre code {\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow-wrap: break-word;\n word-break: break-word;\n}\n.aim-mantine-extra-styles dl {\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n max-width: 670px;\n}\n.aim-mantine-extra-styles dl > * {\n padding-top: 0.5em;\n}\n.aim-mantine-extra-styles dt {\n width: 30%;\n font-weight: bold;\n text-align: right;\n}\n.aim-mantine-extra-styles dd {\n width: 60%;\n padding-left: 1em;\n margin-left: 0px;\n}\n.aim-mantine-extra-styles dd + dd {\n width: 100%;\n padding-left: calc(30% + 1em);\n}\n.aim-mantine-extra-styles dt + dt {\n padding-right: 60%;\n}\n.aim-mantine-extra-styles dt + dt + dd {\n margin-top: -1.625em;\n padding-left: calc(30% + 1em);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0VBTUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFNRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7QUFBQTtFQUVFO0VBRUE7RUFDQTs7QUFFQTtBQUFBO0VBQ0U7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFJSjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7RUFDQTtFQUNBOztBQUVGO0VBQ0U7RUFDQTtFQUNBOztBQUVGO0VBQ0U7RUFDQTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7RUFDQSIsInNvdXJjZXNDb250ZW50IjpbIi5haW0tbWFudGluZS1leHRyYS1zdHlsZXMge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1pdGVtczogZmxleC1zdGFydDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuXG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG5cbiAgLS1tYW50aW5lLXNwYWNpbmcteHM6IGNhbGMoMC42MjVlbSAqIHZhcigtLW1hbnRpbmUtc2NhbGUpKTtcbiAgLS1tYW50aW5lLXNwYWNpbmctc206IGNhbGMoMC43NWVtICogdmFyKC0tbWFudGluZS1zY2FsZSkpO1xuICAtLW1hbnRpbmUtc3BhY2luZy1tZDogY2FsYygxZW0gKiB2YXIoLS1tYW50aW5lLXNjYWxlKSk7XG4gIC0tbWFudGluZS1zcGFjaW5nLWxnOiBjYWxjKDEuMjVlbSAqIHZhcigtLW1hbnRpbmUtc2NhbGUpKTtcbiAgLS1tYW50aW5lLXNwYWNpbmcteGw6IGNhbGMoMmVtICogdmFyKC0tbWFudGluZS1zY2FsZSkpO1xuICAtLW1hbnRpbmUtZm9udC1zaXplLXhzOiBjYWxjKDAuNzVlbSAqIHZhcigtLW1hbnRpbmUtc2NhbGUpKTtcbiAgLS1tYW50aW5lLWZvbnQtc2l6ZS1zbTogY2FsYygwLjg3NWVtICogdmFyKC0tbWFudGluZS1zY2FsZSkpO1xuICAtLW1hbnRpbmUtZm9udC1zaXplLW1kOiBjYWxjKDFlbSAqIHZhcigtLW1hbnRpbmUtc2NhbGUpKTtcbiAgLS1tYW50aW5lLWZvbnQtc2l6ZS1sZzogY2FsYygxLjEyNWVtICogdmFyKC0tbWFudGluZS1zY2FsZSkpO1xuICAtLW1hbnRpbmUtZm9udC1zaXplLXhsOiBjYWxjKDEuMjVlbSAqIHZhcigtLW1hbnRpbmUtc2NhbGUpKTtcblxuICA6Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cblxuICA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIC0tbWFudGluZS1oMS1mb250LXNpemU6IDIuMTI1ZW07XG4gICAgLS1tYW50aW5lLWgyLWZvbnQtc2l6ZTogMS42MjVlbTtcbiAgICAtLW1hbnRpbmUtaDMtZm9udC1zaXplOiAxLjM3NWVtO1xuICAgIC0tbWFudGluZS1oNC1mb250LXNpemU6IDEuMTI1ZW07XG4gICAgLS1tYW50aW5lLWg1LWZvbnQtc2l6ZTogMWVtO1xuICAgIC0tbWFudGluZS1oNi1mb250LXNpemU6IDAuODc1ZW07XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuXG4gICYuc2FtZS1mb250LXNpemUgaDEsXG4gICYuc2FtZS1mb250LXNpemUgaDIsXG4gICYuc2FtZS1mb250LXNpemUgaDMsXG4gICYuc2FtZS1mb250LXNpemUgaDQsXG4gICYuc2FtZS1mb250LXNpemUgaDUsXG4gICYuc2FtZS1mb250LXNpemUgaDYge1xuICAgIC0tbWFudGluZS1oMS1mb250LXNpemU6IDFlbTtcbiAgICAtLW1hbnRpbmUtaDItZm9udC1zaXplOiAxZW07XG4gICAgLS1tYW50aW5lLWgzLWZvbnQtc2l6ZTogMWVtO1xuICAgIC0tbWFudGluZS1oNC1mb250LXNpemU6IDFlbTtcbiAgICAtLW1hbnRpbmUtaDUtZm9udC1zaXplOiAxZW07XG4gICAgLS1tYW50aW5lLWg2LWZvbnQtc2l6ZTogMWVtO1xuICB9XG5cbiAgdWwsXG4gIG9sIHtcbiAgICBsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlO1xuXG4gICAgbWFyZ2luLWJvdHRvbTogMC41NWVtO1xuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAxLjVlbTtcblxuICAgIGxpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuMjc1ZW07XG4gICAgfVxuICB9XG5cbiAgaHIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMXB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1hbnRpbmUtY29sb3ItdGV4dCk7XG4gIH1cblxuICB1bCB7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xuICB9XG5cbiAgdWwgdWwge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogY2lyY2xlO1xuICB9XG5cbiAgdWwgdWwgdWwge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlO1xuICB9XG5cbiAgb2wge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogZGVjaW1hbDtcbiAgfVxuXG4gIHAge1xuICAgIC0tbWFudGluZS1zY2FsZTogMC44NzU7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gIH1cblxuICBibG9ja3F1b3RlIHtcbiAgICBib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOiAwLjI1cmVtO1xuICAgIGJvcmRlci1pbmxpbmUtc3RhcnQtY29sb3I6IHZhcigtLW1hbnRpbmUtY29sb3ItdGV4dCk7XG4gIH1cblxuICBwcmUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tbWFudGluZS1mb250LXNpemUtbWQpO1xuICB9XG5cbiAgY29kZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1tYW50aW5lLWZvbnQtc2l6ZS1tZCk7XG4gIH1cblxuICBwcmUgY29kZSB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIH1cblxuICBkbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiA2NzBweDtcbiAgfVxuICBkbCA+ICoge1xuICAgIHBhZGRpbmctdG9wOiAwLjVlbTtcbiAgfVxuICBkdCB7XG4gICAgd2lkdGg6IDMwJTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgfVxuICBkZCB7XG4gICAgd2lkdGg6IDYwJTtcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcbiAgICBtYXJnaW4tbGVmdDogMHB4O1xuICB9XG4gIGRkICsgZGQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmctbGVmdDogY2FsYygzMCUgKyAxZW0pO1xuICB9XG4gIGR0ICsgZHQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDYwJTtcbiAgfVxuICBkdCArIGR0ICsgZGQge1xuICAgIG1hcmdpbi10b3A6IC0xLjYyNWVtO1xuICAgIHBhZGRpbmctbGVmdDogY2FsYygzMCUgKyAxZW0pO1xuICB9XG59XG4iXX0= */",".aim-mantine-mermaid-code {\n width: 100%;\n margin-bottom: 15px;\n background: var(--mantine-color-gray-0);\n border: 1px solid var(--mantine-color-gray-2);\n padding: calc(0.75rem * var(--mantine-scale)) calc(0.625rem * var(--mantine-scale));\n display: flex;\n flex-shrink: 0;\n flex-direction: column;\n justify-content: flex-start;\n align-items: stretch;\n\n .chart-header {\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n\n .chart-type-tag {\n padding: calc(0.2125rem * var(--mantine-scale)) calc(0.5625rem * var(--mantine-scale));\n color: black;\n border: 1px solid var(--mantine-color-gray-3);\n background: white;\n border-radius: var(--mantine-radius-default);\n font-size: var(--mantine-font-size-xs);\n font-weight: 700;\n }\n\n .action-icon {\n color: var(--mantine-color-text);\n opacity: 0.5;\n\n &:hover {\n color: var(--mantine-color-bright);\n opacity: 1;\n }\n }\n }\n\n & > pre {\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n }\n}\n\n.aim-mantine-mermaid-code.dark {\n background: var(--mantine-color-dark-8);\n border-color: var(--mantine-color-dark-6);\n\n .chart-header {\n .chart-type-tag {\n color: var(--mantine-color-dark-0);\n border-color: var(--mantine-color-dark-6);\n background: var(--mantine-color-dark-8);\n }\n\n .action-icon {\n color: var(--mantine-color-text);\n }\n }\n}\n",".aim-mantine-mermaid-code {\n width: 100%;\n margin-bottom: 15px;\n background: var(--mantine-color-gray-0);\n border: 1px solid var(--mantine-color-gray-2);\n padding: calc(0.75rem * var(--mantine-scale)) calc(0.625rem * var(--mantine-scale));\n display: flex;\n flex-shrink: 0;\n flex-direction: column;\n justify-content: flex-start;\n align-items: stretch;\n}\n.aim-mantine-mermaid-code .chart-header {\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n}\n.aim-mantine-mermaid-code .chart-header .chart-type-tag {\n padding: calc(0.2125rem * var(--mantine-scale)) calc(0.5625rem * var(--mantine-scale));\n color: black;\n border: 1px solid var(--mantine-color-gray-3);\n background: white;\n border-radius: var(--mantine-radius-default);\n font-size: var(--mantine-font-size-xs);\n font-weight: 700;\n}\n.aim-mantine-mermaid-code .chart-header .action-icon {\n color: var(--mantine-color-text);\n opacity: 0.5;\n}\n.aim-mantine-mermaid-code .chart-header .action-icon:hover {\n color: var(--mantine-color-bright);\n opacity: 1;\n}\n.aim-mantine-mermaid-code > pre {\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n}\n\n.aim-mantine-mermaid-code.dark {\n background: var(--mantine-color-dark-8);\n border-color: var(--mantine-color-dark-6);\n}\n.aim-mantine-mermaid-code.dark .chart-header .chart-type-tag {\n color: var(--mantine-color-dark-0);\n border-color: var(--mantine-color-dark-6);\n background: var(--mantine-color-dark-8);\n}\n.aim-mantine-mermaid-code.dark .chart-header .action-icon {\n color: var(--mantine-color-text);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTtFQUNBOztBQUtOO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBSUo7RUFDRTtFQUNBOztBQUdFO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VBQ0UiLCJzb3VyY2VzQ29udGVudCI6WyIuYWltLW1hbnRpbmUtbWVybWFpZC1jb2RlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLW1hbnRpbmUtY29sb3ItZ3JheS0wKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWFudGluZS1jb2xvci1ncmF5LTIpO1xuICBwYWRkaW5nOiBjYWxjKDAuNzVyZW0gKiB2YXIoLS1tYW50aW5lLXNjYWxlKSkgY2FsYygwLjYyNXJlbSAqIHZhcigtLW1hbnRpbmUtc2NhbGUpKTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cbiAgLmNoYXJ0LWhlYWRlciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgLmNoYXJ0LXR5cGUtdGFnIHtcbiAgICAgIHBhZGRpbmc6IGNhbGMoMC4yMTI1cmVtICogdmFyKC0tbWFudGluZS1zY2FsZSkpIGNhbGMoMC41NjI1cmVtICogdmFyKC0tbWFudGluZS1zY2FsZSkpO1xuICAgICAgY29sb3I6IGJsYWNrO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWFudGluZS1jb2xvci1ncmF5LTMpO1xuICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1tYW50aW5lLXJhZGl1cy1kZWZhdWx0KTtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbWFudGluZS1mb250LXNpemUteHMpO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICB9XG5cbiAgICAuYWN0aW9uLWljb24ge1xuICAgICAgY29sb3I6IHZhcigtLW1hbnRpbmUtY29sb3ItdGV4dCk7XG4gICAgICBvcGFjaXR5OiAwLjU7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWFudGluZS1jb2xvci1icmlnaHQpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBwcmUge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxufVxuXG4uYWltLW1hbnRpbmUtbWVybWFpZC1jb2RlLmRhcmsge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1tYW50aW5lLWNvbG9yLWRhcmstOCk7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tbWFudGluZS1jb2xvci1kYXJrLTYpO1xuXG4gIC5jaGFydC1oZWFkZXIge1xuICAgIC5jaGFydC10eXBlLXRhZyB7XG4gICAgICBjb2xvcjogdmFyKC0tbWFudGluZS1jb2xvci1kYXJrLTApO1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1tYW50aW5lLWNvbG9yLWRhcmstNik7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tYW50aW5lLWNvbG9yLWRhcmstOCk7XG4gICAgfVxuXG4gICAgLmFjdGlvbi1pY29uIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1tYW50aW5lLWNvbG9yLXRleHQpO1xuICAgIH1cbiAgfVxufVxuIl19 */"],"mappings":"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","names":[]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
|
+
import * as _ai_react_markdown_core from '@ai-react-markdown/core';
|
|
4
|
+
import { AIMarkdownMetadata, AIMarkdownRenderConfig, AIMarkdownProps, AIMarkdownTypographyProps, AIMarkdownExtraStylesComponent } from '@ai-react-markdown/core';
|
|
5
|
+
|
|
6
|
+
interface MantineAIMarkdownRenderConfig extends AIMarkdownRenderConfig {
|
|
7
|
+
forceSameFontSize: boolean;
|
|
8
|
+
codeBlock: {
|
|
9
|
+
defaultExpanded: boolean;
|
|
10
|
+
autoDetectUnknownLanguage: boolean;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
declare const defaultMantineAIMarkdownRenderConfig: MantineAIMarkdownRenderConfig;
|
|
14
|
+
interface MantineAIMarkdownMetadata extends AIMarkdownMetadata {
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface MantineAIMarkdownProps<TConfig extends MantineAIMarkdownRenderConfig = MantineAIMarkdownRenderConfig, TRenderData extends MantineAIMarkdownMetadata = MantineAIMarkdownMetadata> extends AIMarkdownProps<TConfig, TRenderData> {
|
|
18
|
+
}
|
|
19
|
+
declare const MantineAIMarkdown: react.MemoExoticComponent<(<TConfig extends MantineAIMarkdownRenderConfig = MantineAIMarkdownRenderConfig, TRenderData extends MantineAIMarkdownMetadata = MantineAIMarkdownMetadata>({ Typography, ExtraStyles, defaultConfig, customComponents, colorScheme, ...props }: MantineAIMarkdownProps<TConfig, TRenderData>) => react_jsx_runtime.JSX.Element)>;
|
|
20
|
+
|
|
21
|
+
declare const MantineAIMarkdownTypography: react.MemoExoticComponent<({ children, fontSize }: AIMarkdownTypographyProps) => react_jsx_runtime.JSX.Element>;
|
|
22
|
+
|
|
23
|
+
declare const MantineAIMDefaultExtraStyles: AIMarkdownExtraStylesComponent;
|
|
24
|
+
|
|
25
|
+
declare const useMantineAIMarkdownRenderState: () => _ai_react_markdown_core.AIMarkdownRenderState<MantineAIMarkdownRenderConfig>;
|
|
26
|
+
|
|
27
|
+
declare const useMantineAIMarkdownMetadata: () => MantineAIMarkdownMetadata | undefined;
|
|
28
|
+
|
|
29
|
+
export { MantineAIMDefaultExtraStyles, type MantineAIMarkdownMetadata, type MantineAIMarkdownProps, type MantineAIMarkdownRenderConfig, MantineAIMarkdownTypography, MantineAIMarkdown as default, defaultMantineAIMarkdownRenderConfig, useMantineAIMarkdownMetadata, useMantineAIMarkdownRenderState };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
|
+
import * as _ai_react_markdown_core from '@ai-react-markdown/core';
|
|
4
|
+
import { AIMarkdownMetadata, AIMarkdownRenderConfig, AIMarkdownProps, AIMarkdownTypographyProps, AIMarkdownExtraStylesComponent } from '@ai-react-markdown/core';
|
|
5
|
+
|
|
6
|
+
interface MantineAIMarkdownRenderConfig extends AIMarkdownRenderConfig {
|
|
7
|
+
forceSameFontSize: boolean;
|
|
8
|
+
codeBlock: {
|
|
9
|
+
defaultExpanded: boolean;
|
|
10
|
+
autoDetectUnknownLanguage: boolean;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
declare const defaultMantineAIMarkdownRenderConfig: MantineAIMarkdownRenderConfig;
|
|
14
|
+
interface MantineAIMarkdownMetadata extends AIMarkdownMetadata {
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface MantineAIMarkdownProps<TConfig extends MantineAIMarkdownRenderConfig = MantineAIMarkdownRenderConfig, TRenderData extends MantineAIMarkdownMetadata = MantineAIMarkdownMetadata> extends AIMarkdownProps<TConfig, TRenderData> {
|
|
18
|
+
}
|
|
19
|
+
declare const MantineAIMarkdown: react.MemoExoticComponent<(<TConfig extends MantineAIMarkdownRenderConfig = MantineAIMarkdownRenderConfig, TRenderData extends MantineAIMarkdownMetadata = MantineAIMarkdownMetadata>({ Typography, ExtraStyles, defaultConfig, customComponents, colorScheme, ...props }: MantineAIMarkdownProps<TConfig, TRenderData>) => react_jsx_runtime.JSX.Element)>;
|
|
20
|
+
|
|
21
|
+
declare const MantineAIMarkdownTypography: react.MemoExoticComponent<({ children, fontSize }: AIMarkdownTypographyProps) => react_jsx_runtime.JSX.Element>;
|
|
22
|
+
|
|
23
|
+
declare const MantineAIMDefaultExtraStyles: AIMarkdownExtraStylesComponent;
|
|
24
|
+
|
|
25
|
+
declare const useMantineAIMarkdownRenderState: () => _ai_react_markdown_core.AIMarkdownRenderState<MantineAIMarkdownRenderConfig>;
|
|
26
|
+
|
|
27
|
+
declare const useMantineAIMarkdownMetadata: () => MantineAIMarkdownMetadata | undefined;
|
|
28
|
+
|
|
29
|
+
export { MantineAIMDefaultExtraStyles, type MantineAIMarkdownMetadata, type MantineAIMarkdownProps, type MantineAIMarkdownRenderConfig, MantineAIMarkdownTypography, MantineAIMarkdown as default, defaultMantineAIMarkdownRenderConfig, useMantineAIMarkdownMetadata, useMantineAIMarkdownRenderState };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
// src/MantineAIMarkdown.tsx
|
|
2
|
+
import { memo as memo4, useMemo as useMemo3 } from "react";
|
|
3
|
+
import AIMarkdown from "@ai-react-markdown/core";
|
|
4
|
+
import { useStableValue } from "@ai-react-markdown/core";
|
|
5
|
+
|
|
6
|
+
// src/components/typography/MantineTypography.tsx
|
|
7
|
+
import { memo } from "react";
|
|
8
|
+
import { Typography } from "@mantine/core";
|
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
var MantineAIMarkdownTypography = memo(({ children, fontSize }) => /* @__PURE__ */ jsx(Typography, { w: "100%", fz: fontSize, children }));
|
|
11
|
+
MantineAIMarkdownTypography.displayName = "MantineAIMarkdownTypography";
|
|
12
|
+
var MantineTypography_default = MantineAIMarkdownTypography;
|
|
13
|
+
|
|
14
|
+
// src/hooks/useMantineAIMarkdownRenderState.ts
|
|
15
|
+
import { useAIMarkdownRenderState } from "@ai-react-markdown/core";
|
|
16
|
+
var useMantineAIMarkdownRenderState = () => {
|
|
17
|
+
return useAIMarkdownRenderState();
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// src/components/extra-styles/DefaultExtraStyles/index.tsx
|
|
21
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
22
|
+
var MantineAIMDefaultExtraStyles = ({ children }) => {
|
|
23
|
+
const renderState = useMantineAIMarkdownRenderState();
|
|
24
|
+
return /* @__PURE__ */ jsx2("div", { className: `aim-mantine-extra-styles${renderState.config.forceSameFontSize ? " same-font-size" : ""}`, children });
|
|
25
|
+
};
|
|
26
|
+
var DefaultExtraStyles_default = MantineAIMDefaultExtraStyles;
|
|
27
|
+
|
|
28
|
+
// src/defs.tsx
|
|
29
|
+
import { defaultAIMarkdownRenderConfig } from "@ai-react-markdown/core";
|
|
30
|
+
var defaultMantineAIMarkdownRenderConfig = Object.freeze({
|
|
31
|
+
...defaultAIMarkdownRenderConfig,
|
|
32
|
+
forceSameFontSize: false,
|
|
33
|
+
codeBlock: Object.freeze({
|
|
34
|
+
defaultExpanded: true,
|
|
35
|
+
autoDetectUnknownLanguage: false
|
|
36
|
+
})
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
// src/components/customized/PreCode.tsx
|
|
40
|
+
import { memo as memo3, useEffect as useEffect2, useMemo as useMemo2, useState as useState2 } from "react";
|
|
41
|
+
import { CodeHighlight, CodeHighlightTabs as CodeHighlightTabs2 } from "@mantine/code-highlight";
|
|
42
|
+
import { deepParseJson } from "deep-parse-json";
|
|
43
|
+
import hljs from "highlight.js";
|
|
44
|
+
|
|
45
|
+
// src/components/customized/MermaidCode/index.tsx
|
|
46
|
+
import { memo as memo2, useMemo, useEffect, useRef, useState, useCallback } from "react";
|
|
47
|
+
import { CodeHighlightControl, CodeHighlightTabs } from "@mantine/code-highlight";
|
|
48
|
+
import { ActionIcon, CopyButton, Flex, Tooltip } from "@mantine/core";
|
|
49
|
+
import debounce from "lodash-es/debounce";
|
|
50
|
+
import mermaid from "mermaid";
|
|
51
|
+
import { Fragment, jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
52
|
+
var generateMermaidUUID = () => {
|
|
53
|
+
return `mermaid-${(/* @__PURE__ */ new Date()).getTime()}-${Math.random().toString(36).slice(2, 10)}`;
|
|
54
|
+
};
|
|
55
|
+
var handleViewSVGInNewWindow = (svgElement, isDark) => {
|
|
56
|
+
if (!svgElement) return;
|
|
57
|
+
const targetSvg = svgElement.cloneNode(true);
|
|
58
|
+
targetSvg.style.backgroundColor = isDark ? "#242424" : "white";
|
|
59
|
+
const text = new XMLSerializer().serializeToString(targetSvg);
|
|
60
|
+
const blob = new Blob([text], { type: "image/svg+xml" });
|
|
61
|
+
const url = URL.createObjectURL(blob);
|
|
62
|
+
const win = window.open(url);
|
|
63
|
+
if (win) {
|
|
64
|
+
setTimeout(() => URL.revokeObjectURL(url), 5e3);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
var MantineAIMMermaidCode = memo2((props) => {
|
|
68
|
+
const renderState = useMantineAIMarkdownRenderState();
|
|
69
|
+
const isDark = renderState.colorScheme === "dark";
|
|
70
|
+
const ref = useRef(null);
|
|
71
|
+
const [showOriginalCode, setShowOriginalCode] = useState(false);
|
|
72
|
+
const [renderError, setRenderError] = useState(false);
|
|
73
|
+
const [chartType, setChartType] = useState("unkown");
|
|
74
|
+
const debouncedUpdateRenderError = useMemo(
|
|
75
|
+
() => debounce((error) => {
|
|
76
|
+
setRenderError(error);
|
|
77
|
+
}, 200),
|
|
78
|
+
[]
|
|
79
|
+
);
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
if (props.code && ref.current) {
|
|
82
|
+
const renderMermaid = async () => {
|
|
83
|
+
try {
|
|
84
|
+
debouncedUpdateRenderError(false);
|
|
85
|
+
if (ref.current) {
|
|
86
|
+
mermaid.initialize({
|
|
87
|
+
startOnLoad: false,
|
|
88
|
+
securityLevel: "loose",
|
|
89
|
+
theme: isDark ? "dark" : "base",
|
|
90
|
+
darkMode: isDark
|
|
91
|
+
});
|
|
92
|
+
const parseResult = await mermaid.parse(props.code);
|
|
93
|
+
if (!parseResult) {
|
|
94
|
+
throw new Error("Failed to parse mermaid code");
|
|
95
|
+
}
|
|
96
|
+
const { svg, bindFunctions, diagramType } = await mermaid.render(
|
|
97
|
+
generateMermaidUUID(),
|
|
98
|
+
props.code,
|
|
99
|
+
ref.current
|
|
100
|
+
);
|
|
101
|
+
ref.current.innerHTML = svg;
|
|
102
|
+
bindFunctions?.(ref.current);
|
|
103
|
+
setChartType(diagramType);
|
|
104
|
+
}
|
|
105
|
+
} catch {
|
|
106
|
+
debouncedUpdateRenderError(true);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
renderMermaid();
|
|
110
|
+
}
|
|
111
|
+
}, [props.code, isDark, showOriginalCode]);
|
|
112
|
+
const viewSvgInNewWindow = useCallback(() => {
|
|
113
|
+
handleViewSVGInNewWindow(ref.current?.querySelector("svg"), isDark);
|
|
114
|
+
}, []);
|
|
115
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
116
|
+
(showOriginalCode || renderError) && /* @__PURE__ */ jsx3(
|
|
117
|
+
CodeHighlightTabs,
|
|
118
|
+
{
|
|
119
|
+
mb: 15,
|
|
120
|
+
w: "100%",
|
|
121
|
+
code: [
|
|
122
|
+
{
|
|
123
|
+
fileName: renderError ? "Mermaid Render Error" : "mermaid",
|
|
124
|
+
code: props.code,
|
|
125
|
+
language: "mermaid"
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
defaultExpanded: renderState.config.codeBlock.defaultExpanded,
|
|
129
|
+
maxCollapsedHeight: "320px",
|
|
130
|
+
styles: {
|
|
131
|
+
filesScrollarea: {
|
|
132
|
+
right: "90px"
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
controls: renderError ? [] : [
|
|
136
|
+
/* @__PURE__ */ jsx3(
|
|
137
|
+
CodeHighlightControl,
|
|
138
|
+
{
|
|
139
|
+
tooltipLabel: "Render Mermaid",
|
|
140
|
+
onClick: () => {
|
|
141
|
+
setShowOriginalCode(false);
|
|
142
|
+
},
|
|
143
|
+
children: /* @__PURE__ */ jsx3(Flex, { align: "center", justify: "center", w: 18, h: 18, children: /* @__PURE__ */ jsx3("span", { className: "icon-[gravity-ui--logo-mermaid] relative bottom-[1px] text-[16px]" }) })
|
|
144
|
+
},
|
|
145
|
+
"gpt"
|
|
146
|
+
)
|
|
147
|
+
],
|
|
148
|
+
withBorder: true,
|
|
149
|
+
withExpandButton: true
|
|
150
|
+
}
|
|
151
|
+
),
|
|
152
|
+
/* @__PURE__ */ jsxs(
|
|
153
|
+
"div",
|
|
154
|
+
{
|
|
155
|
+
className: `aim-mantine-mermaid-code ${isDark ? "dark" : ""}`,
|
|
156
|
+
style: showOriginalCode || renderError ? {
|
|
157
|
+
display: "none"
|
|
158
|
+
} : {},
|
|
159
|
+
children: [
|
|
160
|
+
/* @__PURE__ */ jsxs("div", { className: "chart-header", children: [
|
|
161
|
+
/* @__PURE__ */ jsx3("div", { className: "chart-type-tag", children: chartType }),
|
|
162
|
+
/* @__PURE__ */ jsxs(Flex, { align: "center", justify: "flex-end", gap: 0, children: [
|
|
163
|
+
/* @__PURE__ */ jsx3(Tooltip, { label: "Show Mermaid Code", children: /* @__PURE__ */ jsx3(
|
|
164
|
+
ActionIcon,
|
|
165
|
+
{
|
|
166
|
+
size: 28,
|
|
167
|
+
className: "action-icon",
|
|
168
|
+
variant: "transparent",
|
|
169
|
+
onClick: () => {
|
|
170
|
+
setShowOriginalCode(true);
|
|
171
|
+
},
|
|
172
|
+
children: /* @__PURE__ */ jsx3(Flex, { align: "center", justify: "center", w: 18, h: 18, children: /* @__PURE__ */ jsx3("span", { className: "icon-[entypo--code] relative bottom-[0.25px] text-[16px]" }) })
|
|
173
|
+
}
|
|
174
|
+
) }),
|
|
175
|
+
/* @__PURE__ */ jsx3(CopyButton, { value: props.code, children: ({ copied, copy }) => /* @__PURE__ */ jsx3(Tooltip, { label: copied ? "Copied" : "Copy", withArrow: true, position: "right", children: /* @__PURE__ */ jsx3(ActionIcon, { variant: "transparent", size: 28, className: "action-icon", onClick: copy, children: copied ? /* @__PURE__ */ jsx3("span", { className: "icon-origin-[lucide--check] text-[18px]" }) : /* @__PURE__ */ jsxs(
|
|
176
|
+
"svg",
|
|
177
|
+
{
|
|
178
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
179
|
+
viewBox: "0 0 24 24",
|
|
180
|
+
strokeWidth: "2",
|
|
181
|
+
stroke: "currentColor",
|
|
182
|
+
fill: "none",
|
|
183
|
+
strokeLinecap: "round",
|
|
184
|
+
strokeLinejoin: "round",
|
|
185
|
+
width: "18px",
|
|
186
|
+
height: "18px",
|
|
187
|
+
children: [
|
|
188
|
+
/* @__PURE__ */ jsx3("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }),
|
|
189
|
+
/* @__PURE__ */ jsx3("path", { d: "M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z" }),
|
|
190
|
+
/* @__PURE__ */ jsx3("path", { d: "M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2" })
|
|
191
|
+
]
|
|
192
|
+
}
|
|
193
|
+
) }) }) })
|
|
194
|
+
] })
|
|
195
|
+
] }),
|
|
196
|
+
/* @__PURE__ */ jsx3(
|
|
197
|
+
"pre",
|
|
198
|
+
{
|
|
199
|
+
ref,
|
|
200
|
+
style: { cursor: "pointer", overflow: "auto", width: "100%", padding: "0.5rem" },
|
|
201
|
+
onClick: () => viewSvgInNewWindow()
|
|
202
|
+
}
|
|
203
|
+
)
|
|
204
|
+
]
|
|
205
|
+
}
|
|
206
|
+
)
|
|
207
|
+
] });
|
|
208
|
+
});
|
|
209
|
+
MantineAIMMermaidCode.displayName = "MantineAIMMermaidCode";
|
|
210
|
+
var MermaidCode_default = MantineAIMMermaidCode;
|
|
211
|
+
|
|
212
|
+
// src/components/customized/PreCode.tsx
|
|
213
|
+
import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
214
|
+
var MantineAIMPreCode = memo3(
|
|
215
|
+
(props) => {
|
|
216
|
+
const renderState = useMantineAIMarkdownRenderState();
|
|
217
|
+
const [codeLanguage, setCodeLanguage] = useState2(props.existLanguage || "");
|
|
218
|
+
useEffect2(() => {
|
|
219
|
+
if (props.existLanguage) {
|
|
220
|
+
setCodeLanguage(props.existLanguage);
|
|
221
|
+
} else if (renderState.config.codeBlock.autoDetectUnknownLanguage) {
|
|
222
|
+
const result = hljs.highlightAuto(props.codeText);
|
|
223
|
+
setCodeLanguage(result.language || "");
|
|
224
|
+
} else {
|
|
225
|
+
setCodeLanguage("");
|
|
226
|
+
}
|
|
227
|
+
}, [props.existLanguage, props.codeText, renderState.config.codeBlock.autoDetectUnknownLanguage]);
|
|
228
|
+
const [usedCodeLanguage, usedFileName] = useMemo2(() => {
|
|
229
|
+
if (!codeLanguage) return ["plaintext", "unknown"];
|
|
230
|
+
if (!hljs.getLanguage(codeLanguage)) {
|
|
231
|
+
return ["plaintext", codeLanguage];
|
|
232
|
+
}
|
|
233
|
+
return [codeLanguage, codeLanguage];
|
|
234
|
+
}, [codeLanguage]);
|
|
235
|
+
const isMermaidCodeBlock = codeLanguage === "mermaid";
|
|
236
|
+
const isSpecialCodeBlock = isMermaidCodeBlock;
|
|
237
|
+
const normalCodeBlockContent = useMemo2(() => {
|
|
238
|
+
let usedCodeStr = props.codeText;
|
|
239
|
+
if (usedCodeStr && usedCodeLanguage.toLowerCase() === "json") {
|
|
240
|
+
const deepParsedResult = deepParseJson(usedCodeStr);
|
|
241
|
+
usedCodeStr = typeof deepParsedResult === "string" ? deepParsedResult : JSON.stringify(deepParsedResult, null, 2);
|
|
242
|
+
}
|
|
243
|
+
return usedFileName === "unknown" ? /* @__PURE__ */ jsx4(
|
|
244
|
+
CodeHighlight,
|
|
245
|
+
{
|
|
246
|
+
mb: 15,
|
|
247
|
+
w: "100%",
|
|
248
|
+
code: usedCodeStr,
|
|
249
|
+
withBorder: true,
|
|
250
|
+
withExpandButton: true,
|
|
251
|
+
defaultExpanded: renderState.config.codeBlock.defaultExpanded,
|
|
252
|
+
maxCollapsedHeight: "320px"
|
|
253
|
+
}
|
|
254
|
+
) : /* @__PURE__ */ jsx4(
|
|
255
|
+
CodeHighlightTabs2,
|
|
256
|
+
{
|
|
257
|
+
mb: 15,
|
|
258
|
+
w: "100%",
|
|
259
|
+
code: [
|
|
260
|
+
{
|
|
261
|
+
fileName: usedFileName,
|
|
262
|
+
code: usedCodeStr,
|
|
263
|
+
language: usedCodeLanguage
|
|
264
|
+
}
|
|
265
|
+
],
|
|
266
|
+
withBorder: true,
|
|
267
|
+
withExpandButton: true,
|
|
268
|
+
defaultExpanded: renderState.config.codeBlock.defaultExpanded,
|
|
269
|
+
maxCollapsedHeight: "320px"
|
|
270
|
+
}
|
|
271
|
+
);
|
|
272
|
+
}, [props.codeText, usedCodeLanguage, usedFileName]);
|
|
273
|
+
return /* @__PURE__ */ jsxs2(Fragment2, { children: [
|
|
274
|
+
isMermaidCodeBlock && /* @__PURE__ */ jsx4(MermaidCode_default, { code: props.codeText }),
|
|
275
|
+
!isSpecialCodeBlock && normalCodeBlockContent
|
|
276
|
+
] });
|
|
277
|
+
}
|
|
278
|
+
);
|
|
279
|
+
MantineAIMPreCode.displayName = "MantineAIMPreCode";
|
|
280
|
+
var PreCode_default = MantineAIMPreCode;
|
|
281
|
+
|
|
282
|
+
// src/MantineAIMarkdown.tsx
|
|
283
|
+
import { useComputedColorScheme } from "@mantine/core";
|
|
284
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
285
|
+
var DefaultCustomComponents = {
|
|
286
|
+
pre: memo4(({ node, ...usefulProps }) => {
|
|
287
|
+
const code = node?.children[0];
|
|
288
|
+
const memoizedPreCode = useMemo3(() => {
|
|
289
|
+
if (!code || code.type !== "element" || code.tagName !== "code" || !code.position) {
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
const key = `pre-code-${node.position?.start?.offset || 0}`;
|
|
293
|
+
const detectedLanguage = code.properties?.className?.find((className) => className.startsWith("language-"))?.substring("language-".length);
|
|
294
|
+
const codeText = code.children.map((child) => "value" in child ? child.value : "").join("\n");
|
|
295
|
+
return /* @__PURE__ */ jsx5(PreCode_default, { codeText, existLanguage: detectedLanguage }, key);
|
|
296
|
+
}, [code, node?.position?.start?.offset]);
|
|
297
|
+
return memoizedPreCode ?? /* @__PURE__ */ jsx5("pre", { ...usefulProps });
|
|
298
|
+
})
|
|
299
|
+
};
|
|
300
|
+
var MantineAIMarkdownComponent = ({
|
|
301
|
+
Typography: Typography2 = MantineTypography_default,
|
|
302
|
+
ExtraStyles = DefaultExtraStyles_default,
|
|
303
|
+
defaultConfig = defaultMantineAIMarkdownRenderConfig,
|
|
304
|
+
customComponents,
|
|
305
|
+
colorScheme,
|
|
306
|
+
...props
|
|
307
|
+
}) => {
|
|
308
|
+
const stableCustomComponents = useStableValue(customComponents);
|
|
309
|
+
const usedComponents = useMemo3(() => {
|
|
310
|
+
return stableCustomComponents ? { ...DefaultCustomComponents, ...stableCustomComponents } : DefaultCustomComponents;
|
|
311
|
+
}, [stableCustomComponents]);
|
|
312
|
+
const computedColorScheme = useComputedColorScheme("light");
|
|
313
|
+
return /* @__PURE__ */ jsx5(
|
|
314
|
+
AIMarkdown,
|
|
315
|
+
{
|
|
316
|
+
Typography: Typography2,
|
|
317
|
+
ExtraStyles,
|
|
318
|
+
defaultConfig,
|
|
319
|
+
customComponents: usedComponents,
|
|
320
|
+
colorScheme: colorScheme ?? computedColorScheme,
|
|
321
|
+
...props
|
|
322
|
+
}
|
|
323
|
+
);
|
|
324
|
+
};
|
|
325
|
+
var MantineAIMarkdown = memo4(MantineAIMarkdownComponent);
|
|
326
|
+
MantineAIMarkdown.displayName = "MantineAIMarkdown";
|
|
327
|
+
var MantineAIMarkdown_default = MantineAIMarkdown;
|
|
328
|
+
|
|
329
|
+
// src/hooks/useMantineAIMarkdownMetadata.ts
|
|
330
|
+
import { useAIMarkdownMetadata } from "@ai-react-markdown/core";
|
|
331
|
+
var useMantineAIMarkdownMetadata = () => {
|
|
332
|
+
return useAIMarkdownMetadata();
|
|
333
|
+
};
|
|
334
|
+
export {
|
|
335
|
+
DefaultExtraStyles_default as MantineAIMDefaultExtraStyles,
|
|
336
|
+
MantineTypography_default as MantineAIMarkdownTypography,
|
|
337
|
+
MantineAIMarkdown_default as default,
|
|
338
|
+
defaultMantineAIMarkdownRenderConfig,
|
|
339
|
+
useMantineAIMarkdownMetadata,
|
|
340
|
+
useMantineAIMarkdownRenderState
|
|
341
|
+
};
|
|
342
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/MantineAIMarkdown.tsx","../src/components/typography/MantineTypography.tsx","../src/hooks/useMantineAIMarkdownRenderState.ts","../src/components/extra-styles/DefaultExtraStyles/index.tsx","../src/defs.tsx","../src/components/customized/PreCode.tsx","../src/components/customized/MermaidCode/index.tsx","../src/hooks/useMantineAIMarkdownMetadata.ts"],"sourcesContent":["import { memo, useMemo } from 'react';\nimport AIMarkdown from '@ai-react-markdown/core';\nimport { type AIMarkdownProps, type AIMarkdownCustomComponents, useStableValue } from '@ai-react-markdown/core';\nimport MantineAIMarkdownTypography from './components/typography/MantineTypography';\nimport MantineAIMDefaultExtraStyles from './components/extra-styles/DefaultExtraStyles';\nimport { MantineAIMarkdownRenderConfig, MantineAIMarkdownMetadata, defaultMantineAIMarkdownRenderConfig } from './defs';\nimport MantineAIMPreCode from './components/customized/PreCode';\nimport { useComputedColorScheme } from '@mantine/core';\n\nexport interface MantineAIMarkdownProps<\n TConfig extends MantineAIMarkdownRenderConfig = MantineAIMarkdownRenderConfig,\n TRenderData extends MantineAIMarkdownMetadata = MantineAIMarkdownMetadata,\n> extends AIMarkdownProps<TConfig, TRenderData> {}\n\nconst DefaultCustomComponents: AIMarkdownCustomComponents = {\n pre: memo(({ node, ...usefulProps }) => {\n const code = node?.children[0];\n const memoizedPreCode = useMemo(() => {\n if (!code || code.type !== 'element' || code.tagName !== 'code' || !code.position) {\n return null;\n }\n const key = `pre-code-${node.position?.start?.offset || 0}`;\n const detectedLanguage = (code.properties?.className as string[])\n ?.find((className: string) => className.startsWith('language-'))\n ?.substring('language-'.length);\n const codeText = code.children.map((child) => ('value' in child ? child.value : '')).join('\\n');\n return <MantineAIMPreCode key={key} codeText={codeText} existLanguage={detectedLanguage} />;\n }, [code, node?.position?.start?.offset]);\n return memoizedPreCode ?? <pre {...usefulProps} />;\n }),\n};\n\nconst MantineAIMarkdownComponent = <\n TConfig extends MantineAIMarkdownRenderConfig = MantineAIMarkdownRenderConfig,\n TRenderData extends MantineAIMarkdownMetadata = MantineAIMarkdownMetadata,\n>({\n Typography = MantineAIMarkdownTypography,\n ExtraStyles = MantineAIMDefaultExtraStyles,\n defaultConfig = defaultMantineAIMarkdownRenderConfig as TConfig,\n customComponents,\n colorScheme,\n ...props\n}: MantineAIMarkdownProps<TConfig, TRenderData>) => {\n const stableCustomComponents = useStableValue(customComponents);\n\n const usedComponents = useMemo(() => {\n return stableCustomComponents ? { ...DefaultCustomComponents, ...stableCustomComponents } : DefaultCustomComponents;\n }, [stableCustomComponents]);\n\n const computedColorScheme = useComputedColorScheme('light');\n\n return (\n <AIMarkdown<MantineAIMarkdownRenderConfig, MantineAIMarkdownMetadata>\n Typography={Typography}\n ExtraStyles={ExtraStyles}\n defaultConfig={defaultConfig}\n customComponents={usedComponents}\n colorScheme={colorScheme ?? computedColorScheme}\n {...props}\n />\n );\n};\n\nexport const MantineAIMarkdown = memo(MantineAIMarkdownComponent);\n\nMantineAIMarkdown.displayName = 'MantineAIMarkdown';\n\nexport default MantineAIMarkdown;\n","import { memo } from 'react';\nimport { Typography } from '@mantine/core';\nimport type { AIMarkdownTypographyProps } from '@ai-react-markdown/core';\n\nconst MantineAIMarkdownTypography = memo(({ children, fontSize }: AIMarkdownTypographyProps) => (\n <Typography w=\"100%\" fz={fontSize}>\n {children}\n </Typography>\n));\n\nMantineAIMarkdownTypography.displayName = 'MantineAIMarkdownTypography';\n\nexport default MantineAIMarkdownTypography;\n","import { useAIMarkdownRenderState } from '@ai-react-markdown/core';\nimport { MantineAIMarkdownRenderConfig } from '../defs';\n\nexport const useMantineAIMarkdownRenderState = () => {\n return useAIMarkdownRenderState<MantineAIMarkdownRenderConfig>();\n};\n","import { AIMarkdownExtraStylesComponent } from '@ai-react-markdown/core';\nimport { useMantineAIMarkdownRenderState } from '../../../hooks/useMantineAIMarkdownRenderState';\nimport './styles.scss';\n\nconst MantineAIMDefaultExtraStyles: AIMarkdownExtraStylesComponent = ({ children }) => {\n const renderState = useMantineAIMarkdownRenderState();\n return (\n <div className={`aim-mantine-extra-styles${renderState.config.forceSameFontSize ? ' same-font-size' : ''}`}>\n {children}\n </div>\n );\n};\n\nexport default MantineAIMDefaultExtraStyles;\n","import { AIMarkdownRenderConfig, AIMarkdownMetadata, defaultAIMarkdownRenderConfig } from '@ai-react-markdown/core';\n\nexport interface MantineAIMarkdownRenderConfig extends AIMarkdownRenderConfig {\n forceSameFontSize: boolean;\n codeBlock: {\n defaultExpanded: boolean;\n autoDetectUnknownLanguage: boolean;\n };\n}\n\nexport const defaultMantineAIMarkdownRenderConfig: MantineAIMarkdownRenderConfig = Object.freeze({\n ...defaultAIMarkdownRenderConfig,\n forceSameFontSize: false,\n codeBlock: Object.freeze({\n defaultExpanded: true,\n autoDetectUnknownLanguage: false,\n }),\n});\n\nexport interface MantineAIMarkdownMetadata extends AIMarkdownMetadata {}\n","'use client';\n\nimport { HTMLAttributes, memo, useEffect, useMemo, useState } from 'react';\nimport { CodeHighlight, CodeHighlightTabs } from '@mantine/code-highlight';\nimport { deepParseJson } from 'deep-parse-json';\nimport hljs from 'highlight.js';\nimport { useMantineAIMarkdownRenderState } from '../../hooks/useMantineAIMarkdownRenderState';\nimport MantineAIMMermaidCode from './MermaidCode';\n\nconst MantineAIMPreCode = memo(\n (\n props: HTMLAttributes<HTMLPreElement> & {\n codeText: string;\n existLanguage?: string;\n }\n ) => {\n const renderState = useMantineAIMarkdownRenderState();\n\n const [codeLanguage, setCodeLanguage] = useState(props.existLanguage || '');\n\n useEffect(() => {\n if (props.existLanguage) {\n setCodeLanguage(props.existLanguage);\n } else if (renderState.config.codeBlock.autoDetectUnknownLanguage) {\n const result = hljs.highlightAuto(props.codeText);\n setCodeLanguage(result.language || '');\n } else {\n setCodeLanguage('');\n }\n }, [props.existLanguage, props.codeText, renderState.config.codeBlock.autoDetectUnknownLanguage]);\n\n const [usedCodeLanguage, usedFileName] = useMemo(() => {\n if (!codeLanguage) return ['plaintext', 'unknown'];\n if (!hljs.getLanguage(codeLanguage)) {\n return ['plaintext', codeLanguage];\n }\n return [codeLanguage, codeLanguage];\n }, [codeLanguage]);\n\n const isMermaidCodeBlock = codeLanguage === 'mermaid';\n const isSpecialCodeBlock = isMermaidCodeBlock;\n\n const normalCodeBlockContent = useMemo(() => {\n let usedCodeStr = props.codeText;\n if (usedCodeStr && usedCodeLanguage.toLowerCase() === 'json') {\n const deepParsedResult = deepParseJson(usedCodeStr);\n usedCodeStr =\n typeof deepParsedResult === 'string' ? deepParsedResult : JSON.stringify(deepParsedResult, null, 2);\n }\n return usedFileName === 'unknown' ? (\n <CodeHighlight\n mb={15}\n w=\"100%\"\n code={usedCodeStr}\n withBorder\n withExpandButton\n defaultExpanded={renderState.config.codeBlock.defaultExpanded}\n maxCollapsedHeight=\"320px\"\n />\n ) : (\n <CodeHighlightTabs\n mb={15}\n w=\"100%\"\n code={[\n {\n fileName: usedFileName,\n code: usedCodeStr,\n language: usedCodeLanguage,\n },\n ]}\n withBorder\n withExpandButton\n defaultExpanded={renderState.config.codeBlock.defaultExpanded}\n maxCollapsedHeight=\"320px\"\n />\n );\n }, [props.codeText, usedCodeLanguage, usedFileName]);\n\n return (\n <>\n {isMermaidCodeBlock && <MantineAIMMermaidCode code={props.codeText} />}\n {!isSpecialCodeBlock && normalCodeBlockContent}\n </>\n );\n }\n);\n\nMantineAIMPreCode.displayName = 'MantineAIMPreCode';\n\nexport default MantineAIMPreCode;\n","'use client';\n\nimport React, { memo, useMemo, useEffect, useRef, useState, useCallback } from 'react';\nimport { CodeHighlightControl, CodeHighlightTabs } from '@mantine/code-highlight';\nimport { ActionIcon, CopyButton, Flex, Tooltip } from '@mantine/core';\nimport debounce from 'lodash-es/debounce';\nimport mermaid from 'mermaid';\nimport { useMantineAIMarkdownRenderState } from '../../../hooks/useMantineAIMarkdownRenderState';\nimport './styles.scss';\n\nconst generateMermaidUUID = () => {\n return `mermaid-${new Date().getTime()}-${Math.random().toString(36).slice(2, 10)}`;\n};\n\nconst handleViewSVGInNewWindow = (svgElement: SVGElement | null | undefined, isDark: boolean) => {\n if (!svgElement) return;\n const targetSvg = svgElement.cloneNode(true) as SVGElement;\n targetSvg.style.backgroundColor = isDark ? '#242424' : 'white';\n const text = new XMLSerializer().serializeToString(targetSvg);\n const blob = new Blob([text], { type: 'image/svg+xml' });\n const url = URL.createObjectURL(blob);\n const win = window.open(url);\n if (win) {\n setTimeout(() => URL.revokeObjectURL(url), 5000);\n }\n};\n\nconst MantineAIMMermaidCode = memo((props: { code: string }) => {\n const renderState = useMantineAIMarkdownRenderState();\n const isDark = renderState.colorScheme === 'dark';\n\n const ref = useRef<HTMLPreElement>(null);\n const [showOriginalCode, setShowOriginalCode] = useState(false);\n const [renderError, setRenderError] = useState(false);\n const [chartType, setChartType] = useState('unkown');\n\n const debouncedUpdateRenderError = useMemo(\n () =>\n debounce((error: boolean) => {\n setRenderError(error);\n }, 200),\n []\n );\n\n useEffect(() => {\n if (props.code && ref.current) {\n const renderMermaid = async () => {\n try {\n debouncedUpdateRenderError(false);\n if (ref.current) {\n mermaid.initialize({\n startOnLoad: false,\n securityLevel: 'loose',\n theme: isDark ? 'dark' : 'base',\n darkMode: isDark,\n });\n const parseResult = await mermaid.parse(props.code);\n if (!parseResult) {\n throw new Error('Failed to parse mermaid code');\n }\n const { svg, bindFunctions, diagramType } = await mermaid.render(\n generateMermaidUUID(),\n props.code,\n ref.current\n );\n ref.current.innerHTML = svg;\n bindFunctions?.(ref.current);\n setChartType(diagramType);\n }\n } catch {\n debouncedUpdateRenderError(true);\n }\n };\n\n renderMermaid();\n }\n }, [props.code, isDark, showOriginalCode]);\n\n const viewSvgInNewWindow = useCallback(() => {\n handleViewSVGInNewWindow(ref.current?.querySelector('svg'), isDark);\n }, []);\n\n return (\n <>\n {(showOriginalCode || renderError) && (\n <CodeHighlightTabs\n mb={15}\n w=\"100%\"\n code={[\n {\n fileName: renderError ? 'Mermaid Render Error' : 'mermaid',\n code: props.code,\n language: 'mermaid',\n },\n ]}\n defaultExpanded={renderState.config.codeBlock.defaultExpanded}\n maxCollapsedHeight=\"320px\"\n styles={{\n filesScrollarea: {\n right: '90px',\n },\n }}\n controls={\n renderError\n ? []\n : [\n <CodeHighlightControl\n tooltipLabel=\"Render Mermaid\"\n key=\"gpt\"\n onClick={() => {\n setShowOriginalCode(false);\n }}\n >\n <Flex align=\"center\" justify=\"center\" w={18} h={18}>\n <span className=\"icon-[gravity-ui--logo-mermaid] relative bottom-[1px] text-[16px]\"></span>\n </Flex>\n </CodeHighlightControl>,\n ]\n }\n withBorder\n withExpandButton\n />\n )}\n <div\n className={`aim-mantine-mermaid-code ${isDark ? 'dark' : ''}`}\n style={\n showOriginalCode || renderError\n ? {\n display: 'none',\n }\n : {}\n }\n >\n <div className=\"chart-header\">\n <div className=\"chart-type-tag\">{chartType}</div>\n <Flex align=\"center\" justify=\"flex-end\" gap={0}>\n <Tooltip label=\"Show Mermaid Code\">\n <ActionIcon\n size={28}\n className=\"action-icon\"\n variant=\"transparent\"\n onClick={() => {\n setShowOriginalCode(true);\n }}\n >\n <Flex align=\"center\" justify=\"center\" w={18} h={18}>\n <span className=\"icon-[entypo--code] relative bottom-[0.25px] text-[16px]\"></span>\n </Flex>\n </ActionIcon>\n </Tooltip>\n <CopyButton value={props.code}>\n {({ copied, copy }) => (\n <Tooltip label={copied ? 'Copied' : 'Copy'} withArrow position=\"right\">\n <ActionIcon variant=\"transparent\" size={28} className=\"action-icon\" onClick={copy}>\n {copied ? (\n <span className=\"icon-origin-[lucide--check] text-[18px]\"></span>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width=\"18px\"\n height=\"18px\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n <path d=\"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z\"></path>\n <path d=\"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\"></path>\n </svg>\n )}\n </ActionIcon>\n </Tooltip>\n )}\n </CopyButton>\n </Flex>\n </div>\n <pre\n ref={ref}\n style={{ cursor: 'pointer', overflow: 'auto', width: '100%', padding: '0.5rem' }}\n onClick={() => viewSvgInNewWindow()}\n />\n </div>\n </>\n );\n});\n\nMantineAIMMermaidCode.displayName = 'MantineAIMMermaidCode';\n\nexport default MantineAIMMermaidCode;\n","import { useAIMarkdownMetadata } from '@ai-react-markdown/core';\nimport { MantineAIMarkdownMetadata } from '../defs';\n\nexport const useMantineAIMarkdownMetadata = () => {\n return useAIMarkdownMetadata<MantineAIMarkdownMetadata>();\n};\n"],"mappings":"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","names":["memo","useMemo","jsx","memo","useEffect","useMemo","useState","CodeHighlightTabs","memo","jsx","memo","Fragment","jsx","jsxs","memo","useState","useEffect","useMemo","CodeHighlightTabs","jsx","memo","useMemo","Typography"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ai-react-markdown/mantine",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"sideEffects": [
|
|
6
|
+
"**/*.css"
|
|
7
|
+
],
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"require": {
|
|
15
|
+
"types": "./dist/index.d.cts",
|
|
16
|
+
"default": "./dist/index.cjs"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"./styles.css": "./dist/index.css"
|
|
20
|
+
},
|
|
21
|
+
"main": "./dist/index.cjs",
|
|
22
|
+
"module": "./dist/index.js",
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"files": [
|
|
25
|
+
"dist"
|
|
26
|
+
],
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"@ai-react-markdown/core": "^1.0.2",
|
|
29
|
+
"@mantine/code-highlight": "^8.3.17",
|
|
30
|
+
"@mantine/core": "^8.3.17",
|
|
31
|
+
"highlight.js": "^11.11.1",
|
|
32
|
+
"react": ">=19",
|
|
33
|
+
"react-dom": ">=19"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@mantine/code-highlight": "^8.3.17",
|
|
37
|
+
"@mantine/core": "^8.3.17",
|
|
38
|
+
"@types/lodash-es": "^4.17.12",
|
|
39
|
+
"@types/node": "^25.5.0",
|
|
40
|
+
"autoprefixer": "^10.4.27",
|
|
41
|
+
"esbuild-sass-plugin": "^3.7.0",
|
|
42
|
+
"highlight.js": "^11.11.1",
|
|
43
|
+
"postcss": "^8.5.8",
|
|
44
|
+
"tsup": "^8.4.0",
|
|
45
|
+
"@ai-react-markdown/core": "1.0.2"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"deep-parse-json": "^2.0.0",
|
|
49
|
+
"lodash-es": "^4.17.23",
|
|
50
|
+
"mermaid": "^11.13.0"
|
|
51
|
+
},
|
|
52
|
+
"scripts": {
|
|
53
|
+
"build": "tsup"
|
|
54
|
+
}
|
|
55
|
+
}
|