@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 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":[]}
@@ -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 };
@@ -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
+ }