@mintlify/msft-sdk 1.1.9 → 1.1.11
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/components/Api/ApiReferenceProvider.js +19 -0
- package/dist/components/Api/ApiReferenceProvider.js.map +1 -0
- package/dist/components/Api/MethodPill.js +21 -0
- package/dist/components/Api/MethodPill.js.map +1 -0
- package/dist/components/Api/colors.js +117 -0
- package/dist/components/Api/colors.js.map +1 -0
- package/dist/components/content-components/code-block.js +94 -66
- package/dist/components/content-components/code-block.js.map +1 -1
- package/dist/components/content-components/default-components.js +35 -61
- package/dist/components/content-components/default-components.js.map +1 -1
- package/dist/components/content-components/home.js +14 -14
- package/dist/components/content-components/home.js.map +1 -1
- package/dist/components/content-components/image.js +80 -0
- package/dist/components/content-components/image.js.map +1 -0
- package/dist/components/content-components/param-name.js.map +1 -1
- package/dist/components/content-components/table/index.js +1 -1
- package/dist/components/content-components/table/table-modal.js.map +1 -1
- package/dist/components/content-components/tabs/tab.js.map +1 -1
- package/dist/components/content-components/tabs/tabs.js +26 -22
- package/dist/components/content-components/tabs/tabs.js.map +1 -1
- package/dist/components/nav-tree/index.js +115 -103
- package/dist/components/nav-tree/index.js.map +1 -1
- package/dist/components/nav-tree/mobile-nav.js +23 -25
- package/dist/components/nav-tree/mobile-nav.js.map +1 -1
- package/dist/components/page-context-menu.js +72 -78
- package/dist/components/page-context-menu.js.map +1 -1
- package/dist/components/page.js +118 -0
- package/dist/components/page.js.map +1 -0
- package/dist/components/plain-text-page.js.map +1 -1
- package/dist/components/toc/index.js +8 -8
- package/dist/components/toc/index.js.map +1 -1
- package/dist/index.d.ts +227 -213
- package/dist/index.js +114 -36
- package/dist/index.js.map +1 -1
- package/dist/plugins/extract-headings.js +28 -0
- package/dist/plugins/extract-headings.js.map +1 -0
- package/dist/plugins/sanitize/rehype-unwrap-image-links.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utils/cn.js +5 -5
- package/dist/utils/cn.js.map +1 -1
- package/package.json +21 -2
- package/dist/components/docsLayout.js +0 -62
- package/dist/components/docsLayout.js.map +0 -1
- package/dist/components/docsPage.js +0 -133
- package/dist/components/docsPage.js.map +0 -1
- package/dist/components/nav-tree/dropdown-menu.js +0 -75
- package/dist/components/nav-tree/dropdown-menu.js.map +0 -1
- package/dist/node_modules/.pnpm/tailwind-merge@3.3.1/node_modules/tailwind-merge/dist/bundle-mjs.js +0 -2732
- package/dist/node_modules/.pnpm/tailwind-merge@3.3.1/node_modules/tailwind-merge/dist/bundle-mjs.js.map +0 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as c } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as i, useContext as f } from "react";
|
|
3
|
+
const t = i(void 0);
|
|
4
|
+
function p() {
|
|
5
|
+
return f(t);
|
|
6
|
+
}
|
|
7
|
+
function s({
|
|
8
|
+
apiReferenceData2: e,
|
|
9
|
+
docsConfig: o,
|
|
10
|
+
mdxExtracts: r,
|
|
11
|
+
children: n
|
|
12
|
+
}) {
|
|
13
|
+
return /* @__PURE__ */ c(t.Provider, { value: { apiReferenceData2: e, docsConfig: o, mdxExtracts: r }, children: n });
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
s as ApiReferenceProvider2,
|
|
17
|
+
p as useApiReference
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=ApiReferenceProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiReferenceProvider.js","sources":["../../../src/components/Api/ApiReferenceProvider.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react';\n\ninterface ApiReferenceContextValue {\n apiReferenceData2?: any;\n docsConfig?: any;\n mdxExtracts?: any;\n}\n\nconst ApiReferenceContext = createContext<ApiReferenceContextValue | undefined>(undefined);\n\nexport function useApiReference() {\n const context = useContext(ApiReferenceContext);\n return context;\n}\n\ninterface ApiReferenceProvider2Props {\n apiReferenceData2?: any;\n docsConfig?: any;\n mdxExtracts?: any;\n children: React.ReactNode;\n}\n\nexport function ApiReferenceProvider2({\n apiReferenceData2,\n docsConfig,\n mdxExtracts,\n children,\n}: ApiReferenceProvider2Props) {\n return (\n <ApiReferenceContext.Provider value={{ apiReferenceData2, docsConfig, mdxExtracts }}>\n {children}\n </ApiReferenceContext.Provider>\n );\n}\n"],"names":["ApiReferenceContext","createContext","useApiReference","useContext","ApiReferenceProvider2","apiReferenceData2","docsConfig","mdxExtracts","children","jsx"],"mappings":";;AAQA,MAAMA,IAAsBC,EAAoD,MAAS;AAElF,SAASC,IAAkB;AAEhC,SADgBC,EAAWH,CAAmB;AAEhD;AASO,SAASI,EAAsB;AAAA,EACpC,mBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AACF,GAA+B;AAC7B,SACE,gBAAAC,EAACT,EAAoB,UAApB,EAA6B,OAAO,EAAE,mBAAAK,GAAmB,YAAAC,GAAY,aAAAC,KACnE,UAAAC,GACH;AAEJ;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import { getShortenedMethodName as c, getMethodColor as p } from "./colors.js";
|
|
3
|
+
import { cn as h } from "../../utils/cn.js";
|
|
4
|
+
const x = ({ isActive: i = !1, method: t, shortMethod: o = !1, className: n }) => {
|
|
5
|
+
const e = t.toUpperCase(), l = c(e), { activeNavPillBg: r, activeNavPillText: a, inactiveNavPillText: m, inactiveNavPillBg: d } = p(t);
|
|
6
|
+
return /* @__PURE__ */ s(
|
|
7
|
+
"span",
|
|
8
|
+
{
|
|
9
|
+
className: h(
|
|
10
|
+
"mint:px-1 mint:py-0.5 mint:rounded-md mint:text-[0.55rem] mint:leading-tight mint:font-bold",
|
|
11
|
+
i ? `${r} ${a}` : `${d} ${m}`,
|
|
12
|
+
n
|
|
13
|
+
),
|
|
14
|
+
children: o ? l : e
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
x as MethodPill
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=MethodPill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MethodPill.js","sources":["../../../src/components/Api/MethodPill.tsx"],"sourcesContent":["'use client';\n\nimport { getMethodColor, getShortenedMethodName } from './colors';\nimport { cn } from '../../utils/cn';\n\ntype MethodPillProps = {\n isActive: boolean;\n method: 'get' | 'post' | 'put' | 'delete' | 'patch' | 'head' | 'options' | 'trace' | string;\n shortMethod?: boolean;\n className?: string;\n};\n\nexport const MethodPill = ({ isActive = false, method, shortMethod = false, className }: MethodPillProps) => {\n const upperMethod = method.toUpperCase();\n const shortenedMethod = getShortenedMethodName(upperMethod);\n const { activeNavPillBg, activeNavPillText, inactiveNavPillText, inactiveNavPillBg } =\n getMethodColor(method);\n return (\n <span\n className={cn(\n 'mint:px-1 mint:py-0.5 mint:rounded-md mint:text-[0.55rem] mint:leading-tight mint:font-bold',\n isActive\n ? `${activeNavPillBg} ${activeNavPillText}`\n : `${inactiveNavPillBg} ${inactiveNavPillText}`,\n className\n )}\n >\n {shortMethod ? shortenedMethod : upperMethod}\n </span>\n );\n};\n"],"names":["MethodPill","isActive","method","shortMethod","className","upperMethod","shortenedMethod","getShortenedMethodName","activeNavPillBg","activeNavPillText","inactiveNavPillText","inactiveNavPillBg","getMethodColor","jsx","cn"],"mappings":";;;AAYO,MAAMA,IAAa,CAAC,EAAE,UAAAC,IAAW,IAAO,QAAAC,GAAQ,aAAAC,IAAc,IAAO,WAAAC,QAAiC;AAC3G,QAAMC,IAAcH,EAAO,YAAA,GACrBI,IAAkBC,EAAuBF,CAAW,GACpD,EAAE,iBAAAG,GAAiB,mBAAAC,GAAmB,qBAAAC,GAAqB,mBAAAC,EAAA,IAC/DC,EAAeV,CAAM;AACvB,SACE,gBAAAW;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAb,IACI,GAAGO,CAAe,IAAIC,CAAiB,KACvC,GAAGE,CAAiB,IAAID,CAAmB;AAAA,QAC/CN;AAAA,MAAA;AAAA,MAGD,cAAcE,IAAkBD;AAAA,IAAA;AAAA,EAAA;AAGvC;"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
const i = (t) => {
|
|
2
|
+
switch (t == null ? void 0 : t.toUpperCase()) {
|
|
3
|
+
case "GET":
|
|
4
|
+
return {
|
|
5
|
+
activeNavPillBg: "mint:bg-[#2AB673]",
|
|
6
|
+
activeNavPillText: "mint:text-white",
|
|
7
|
+
inactiveNavPillText: "mint:text-green-700 mint:dark:text-green-400",
|
|
8
|
+
inactiveNavPillBg: "mint:bg-[#2AB673]/20",
|
|
9
|
+
paramStyle: "mint:border-green-700 mint:dark:border-green-400 mint:text-green-700 mint:dark:text-green-400"
|
|
10
|
+
};
|
|
11
|
+
case "POST":
|
|
12
|
+
return {
|
|
13
|
+
activeNavPillBg: "mint:bg-[#3064E3]",
|
|
14
|
+
activeNavPillText: "mint:text-white",
|
|
15
|
+
inactiveNavPillText: "mint:text-blue-700 mint:dark:text-blue-400",
|
|
16
|
+
inactiveNavPillBg: "mint:bg-[#3064E3]/20",
|
|
17
|
+
paramStyle: "mint:border-blue-700 mint:dark:border-blue-400 mint:text-blue-700 mint:dark:text-blue-400"
|
|
18
|
+
};
|
|
19
|
+
case "WEBHOOK":
|
|
20
|
+
return {
|
|
21
|
+
activeNavPillBg: "mint:bg-[#3064E3]",
|
|
22
|
+
activeNavPillText: "mint:text-white",
|
|
23
|
+
inactiveNavPillText: "mint:text-blue-700 mint:dark:text-blue-400",
|
|
24
|
+
inactiveNavPillBg: "mint:bg-[#3064E3]/20",
|
|
25
|
+
paramStyle: "mint:border-blue-700 mint:dark:border-blue-400 mint:text-blue-700 mint:dark:text-blue-400"
|
|
26
|
+
};
|
|
27
|
+
case "PUT":
|
|
28
|
+
return {
|
|
29
|
+
activeNavPillBg: "mint:bg-[#C28C30]",
|
|
30
|
+
activeNavPillText: "mint:text-white",
|
|
31
|
+
inactiveNavPillText: "mint:text-yellow-700 mint:dark:text-yellow-300",
|
|
32
|
+
inactiveNavPillBg: "mint:bg-[#C28C30]/20",
|
|
33
|
+
paramStyle: "mint:border-yellow-700 mint:dark:border-yellow-300 mint:text-yellow-700 mint:dark:text-yellow-300"
|
|
34
|
+
};
|
|
35
|
+
case "DELETE":
|
|
36
|
+
return {
|
|
37
|
+
activeNavPillBg: "mint:bg-[#CB3A32]",
|
|
38
|
+
activeNavPillText: "mint:text-white",
|
|
39
|
+
inactiveNavPillText: "mint:text-red-700 mint:dark:text-red-400",
|
|
40
|
+
inactiveNavPillBg: "mint:bg-[#CB3A32]/20",
|
|
41
|
+
paramStyle: "mint:border-red-700 mint:dark:border-red-400 mint:text-red-700 mint:dark:text-red-400"
|
|
42
|
+
};
|
|
43
|
+
case "OPTIONS":
|
|
44
|
+
return {
|
|
45
|
+
activeNavPillBg: "mint:bg-[#9341FB]",
|
|
46
|
+
activeNavPillText: "mint:text-white",
|
|
47
|
+
inactiveNavPillText: "mint:text-purple-700 mint:dark:text-purple-400",
|
|
48
|
+
inactiveNavPillBg: "mint:bg-[#9341FB]/20",
|
|
49
|
+
paramStyle: "mint:border-purple-700 mint:dark:border-purple-400 mint:text-purple-700 mint:dark:text-purple-400"
|
|
50
|
+
};
|
|
51
|
+
case "HEAD":
|
|
52
|
+
return {
|
|
53
|
+
activeNavPillBg: "mint:bg-cyan-700",
|
|
54
|
+
activeNavPillText: "mint:text-white",
|
|
55
|
+
inactiveNavPillText: "mint:text-cyan-700 mint:dark:text-cyan-400",
|
|
56
|
+
inactiveNavPillBg: "mint:bg-cyan-700/20",
|
|
57
|
+
paramStyle: "mint:border-cyan-700 mint:dark:border-cyan-400 mint:text-cyan-700 mint:dark:text-cyan-400"
|
|
58
|
+
};
|
|
59
|
+
case "PATCH":
|
|
60
|
+
return {
|
|
61
|
+
activeNavPillBg: "mint:bg-[#DA622B]",
|
|
62
|
+
activeNavPillText: "mint:text-white",
|
|
63
|
+
inactiveNavPillText: "mint:text-orange-700 mint:dark:text-orange-400",
|
|
64
|
+
inactiveNavPillBg: "mint:bg-[#DA622B]/20",
|
|
65
|
+
paramStyle: "mint:border-orange-700 mint:dark:border-orange-400 mint:text-orange-700 mint:dark:text-orange-400"
|
|
66
|
+
};
|
|
67
|
+
case "TRACE":
|
|
68
|
+
return {
|
|
69
|
+
activeNavPillBg: "mint:bg-[#BD30D3]",
|
|
70
|
+
activeNavPillText: "mint:text-white",
|
|
71
|
+
inactiveNavPillText: "mint:text-fuchsia-700 mint:dark:text-fuchsia-400",
|
|
72
|
+
inactiveNavPillBg: "mint:bg-[#BD30D3]/20",
|
|
73
|
+
paramStyle: "mint:border-fuchsia-700 mint:dark:border-fuchsia-400 mint:text-fuchsia-700 mint:dark:text-fuchsia-400"
|
|
74
|
+
};
|
|
75
|
+
case "WEBSOCKET":
|
|
76
|
+
return {
|
|
77
|
+
activeNavPillBg: "mint:bg-[#F54A00] mint:dark:bg-[#FF6900]",
|
|
78
|
+
activeNavPillText: "mint:text-white",
|
|
79
|
+
inactiveNavPillText: "mint:text-[#F54A00] mint:dark:text-[#FF6900]",
|
|
80
|
+
inactiveNavPillBg: "mint:bg-[#FFEDD4] mint:dark:bg-[#FF6900]/20",
|
|
81
|
+
paramStyle: "mint:border-[#F54A00] mint:dark:border-[#FF6900] mint:text-[#F54A00] mint:dark:text-[#FF6900]"
|
|
82
|
+
};
|
|
83
|
+
case "DEPRECATED":
|
|
84
|
+
return {
|
|
85
|
+
activeNavPillBg: "mint:bg-[#F7F7F8] mint:dark:bg-[#14151A]",
|
|
86
|
+
activeNavPillText: "mint:text-[#14151A] mint:dark:text-white",
|
|
87
|
+
inactiveNavPillText: "mint:text-[#14151A] mint:dark:text-white",
|
|
88
|
+
inactiveNavPillBg: "mint:bg-[#F7F7F8] mint:dark:bg-[#14151A]",
|
|
89
|
+
paramStyle: "mint:border-[#14151A] mint:dark:border-white mint:text-[#14151A] mint:dark:text-white"
|
|
90
|
+
};
|
|
91
|
+
default:
|
|
92
|
+
return {
|
|
93
|
+
activeNavPillBg: "mint:bg-gray-600",
|
|
94
|
+
activeNavPillText: "mint:text-white",
|
|
95
|
+
inactiveNavPillText: "mint:text-gray-700 mint:dark:text-gray-400",
|
|
96
|
+
inactiveNavPillBg: "mint:bg-gray-600/20",
|
|
97
|
+
paramStyle: "mint:border-gray-700 mint:dark:border-gray-400 mint:text-gray-700 mint:dark:text-gray-400"
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}, a = (t) => {
|
|
101
|
+
const e = t == null ? void 0 : t.toUpperCase();
|
|
102
|
+
switch (e) {
|
|
103
|
+
case "DELETE":
|
|
104
|
+
return "DEL";
|
|
105
|
+
case "WEBHOOK":
|
|
106
|
+
return "HOOK";
|
|
107
|
+
case "WEBSOCKET":
|
|
108
|
+
return "WSS";
|
|
109
|
+
default:
|
|
110
|
+
return e;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
export {
|
|
114
|
+
i as getMethodColor,
|
|
115
|
+
a as getShortenedMethodName
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.js","sources":["../../../src/components/Api/colors.tsx"],"sourcesContent":["'use client';\n\nexport const getMethodColor = (method?: string) => {\n switch (method?.toUpperCase()) {\n case 'GET':\n return {\n activeNavPillBg: 'mint:bg-[#2AB673]',\n activeNavPillText: 'mint:text-white',\n inactiveNavPillText: 'mint:text-green-700 mint:dark:text-green-400',\n inactiveNavPillBg: 'mint:bg-[#2AB673]/20',\n paramStyle: 'mint:border-green-700 mint:dark:border-green-400 mint:text-green-700 mint:dark:text-green-400',\n };\n case 'POST':\n return {\n activeNavPillBg: 'mint:bg-[#3064E3]',\n activeNavPillText: 'mint:text-white',\n inactiveNavPillText: 'mint:text-blue-700 mint:dark:text-blue-400',\n inactiveNavPillBg: 'mint:bg-[#3064E3]/20',\n paramStyle: 'mint:border-blue-700 mint:dark:border-blue-400 mint:text-blue-700 mint:dark:text-blue-400',\n };\n case 'WEBHOOK':\n return {\n activeNavPillBg: 'mint:bg-[#3064E3]',\n activeNavPillText: 'mint:text-white',\n inactiveNavPillText: 'mint:text-blue-700 mint:dark:text-blue-400',\n inactiveNavPillBg: 'mint:bg-[#3064E3]/20',\n paramStyle: 'mint:border-blue-700 mint:dark:border-blue-400 mint:text-blue-700 mint:dark:text-blue-400',\n };\n case 'PUT':\n return {\n activeNavPillBg: 'mint:bg-[#C28C30]',\n activeNavPillText: 'mint:text-white',\n inactiveNavPillText: 'mint:text-yellow-700 mint:dark:text-yellow-300',\n inactiveNavPillBg: 'mint:bg-[#C28C30]/20',\n paramStyle: 'mint:border-yellow-700 mint:dark:border-yellow-300 mint:text-yellow-700 mint:dark:text-yellow-300',\n };\n case 'DELETE':\n return {\n activeNavPillBg: 'mint:bg-[#CB3A32]',\n activeNavPillText: 'mint:text-white',\n inactiveNavPillText: 'mint:text-red-700 mint:dark:text-red-400',\n inactiveNavPillBg: 'mint:bg-[#CB3A32]/20',\n paramStyle: 'mint:border-red-700 mint:dark:border-red-400 mint:text-red-700 mint:dark:text-red-400',\n };\n case 'OPTIONS':\n return {\n activeNavPillBg: 'mint:bg-[#9341FB]',\n activeNavPillText: 'mint:text-white',\n inactiveNavPillText: 'mint:text-purple-700 mint:dark:text-purple-400',\n inactiveNavPillBg: 'mint:bg-[#9341FB]/20',\n paramStyle: 'mint:border-purple-700 mint:dark:border-purple-400 mint:text-purple-700 mint:dark:text-purple-400',\n };\n case 'HEAD':\n return {\n activeNavPillBg: 'mint:bg-cyan-700',\n activeNavPillText: 'mint:text-white',\n inactiveNavPillText: 'mint:text-cyan-700 mint:dark:text-cyan-400',\n inactiveNavPillBg: 'mint:bg-cyan-700/20',\n paramStyle: 'mint:border-cyan-700 mint:dark:border-cyan-400 mint:text-cyan-700 mint:dark:text-cyan-400',\n };\n case 'PATCH':\n return {\n activeNavPillBg: 'mint:bg-[#DA622B]',\n activeNavPillText: 'mint:text-white',\n inactiveNavPillText: 'mint:text-orange-700 mint:dark:text-orange-400',\n inactiveNavPillBg: 'mint:bg-[#DA622B]/20',\n paramStyle: 'mint:border-orange-700 mint:dark:border-orange-400 mint:text-orange-700 mint:dark:text-orange-400',\n };\n case 'TRACE':\n return {\n activeNavPillBg: 'mint:bg-[#BD30D3]',\n activeNavPillText: 'mint:text-white',\n inactiveNavPillText: 'mint:text-fuchsia-700 mint:dark:text-fuchsia-400',\n inactiveNavPillBg: 'mint:bg-[#BD30D3]/20',\n paramStyle: 'mint:border-fuchsia-700 mint:dark:border-fuchsia-400 mint:text-fuchsia-700 mint:dark:text-fuchsia-400',\n };\n case 'WEBSOCKET':\n return {\n activeNavPillBg: 'mint:bg-[#F54A00] mint:dark:bg-[#FF6900]',\n activeNavPillText: 'mint:text-white',\n inactiveNavPillText: 'mint:text-[#F54A00] mint:dark:text-[#FF6900]',\n inactiveNavPillBg: 'mint:bg-[#FFEDD4] mint:dark:bg-[#FF6900]/20',\n paramStyle: 'mint:border-[#F54A00] mint:dark:border-[#FF6900] mint:text-[#F54A00] mint:dark:text-[#FF6900]',\n };\n case 'DEPRECATED':\n return {\n activeNavPillBg: 'mint:bg-[#F7F7F8] mint:dark:bg-[#14151A]',\n activeNavPillText: 'mint:text-[#14151A] mint:dark:text-white',\n inactiveNavPillText: 'mint:text-[#14151A] mint:dark:text-white',\n inactiveNavPillBg: 'mint:bg-[#F7F7F8] mint:dark:bg-[#14151A]',\n paramStyle: 'mint:border-[#14151A] mint:dark:border-white mint:text-[#14151A] mint:dark:text-white',\n };\n default:\n return {\n activeNavPillBg: 'mint:bg-gray-600',\n activeNavPillText: 'mint:text-white',\n inactiveNavPillText: 'mint:text-gray-700 mint:dark:text-gray-400',\n inactiveNavPillBg: 'mint:bg-gray-600/20',\n paramStyle: 'mint:border-gray-700 mint:dark:border-gray-400 mint:text-gray-700 mint:dark:text-gray-400',\n };\n }\n};\n\nexport const getShortenedMethodName = (method?: string): string | undefined => {\n const upperCase = method?.toUpperCase();\n switch (upperCase) {\n case 'DELETE':\n return 'DEL';\n case 'WEBHOOK':\n return 'HOOK';\n case 'WEBSOCKET':\n return 'WSS';\n default:\n return upperCase;\n }\n};\n"],"names":["getMethodColor","method","getShortenedMethodName","upperCase"],"mappings":"AAEO,MAAMA,IAAiB,CAACC,MAAoB;AACjD,UAAQA,KAAA,gBAAAA,EAAQ,eAAY;AAAA,IAC1B,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB;AACE,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,EACd;AAEN,GAEaC,IAAyB,CAACD,MAAwC;AAC7E,QAAME,IAAYF,KAAA,gBAAAA,EAAQ;AAC1B,UAAQE,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAOA;AAAA,EAAA;AAEb;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import
|
|
1
|
+
import { jsxs as x, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import T, { useState as _, useEffect as I } from "react";
|
|
3
3
|
import h from "prismjs";
|
|
4
4
|
import "prismjs/components/prism-javascript.js";
|
|
5
5
|
import "prismjs/components/prism-typescript.js";
|
|
@@ -10,99 +10,125 @@ import "prismjs/components/prism-markdown.js";
|
|
|
10
10
|
import "prismjs/components/prism-csharp.js";
|
|
11
11
|
import "prismjs/components/prism-powershell.js";
|
|
12
12
|
import { getNodeText as j } from "../../utils/get-node-text.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
import { capitalize as A } from "../../utils/string.js";
|
|
14
|
+
import { cn as g } from "../../utils/cn.js";
|
|
15
|
+
import { ClipboardCheckmarkRegular as R, Copy20Regular as S } from "@fluentui/react-icons";
|
|
16
|
+
const E = ["image/png", "text/plain"];
|
|
17
|
+
function P() {
|
|
18
|
+
const [t, e] = _(!1), i = async (n) => {
|
|
19
19
|
try {
|
|
20
|
-
await navigator.clipboard.writeText(
|
|
21
|
-
} catch (
|
|
22
|
-
console.error("Failed to copy to clipboard:",
|
|
20
|
+
await navigator.clipboard.writeText(n), e(!0), setTimeout(() => e(!1), 2e3);
|
|
21
|
+
} catch (a) {
|
|
22
|
+
console.error("Failed to copy to clipboard:", a);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
return { isCopied: t, copy: i, copyBlob: async (n, a) => {
|
|
26
|
+
try {
|
|
27
|
+
if (E.includes(a)) {
|
|
28
|
+
const o = await n.arrayBuffer(), m = new Blob([o], { type: a }), u = new ClipboardItem({
|
|
29
|
+
[a]: m
|
|
30
|
+
});
|
|
31
|
+
await navigator.clipboard.write([u]), e(!0), setTimeout(() => e(!1), 2e3);
|
|
32
|
+
} else {
|
|
33
|
+
const o = await n.text();
|
|
34
|
+
await i(o);
|
|
35
|
+
}
|
|
36
|
+
} catch (o) {
|
|
37
|
+
console.error("Failed to copy blob to clipboard:", o);
|
|
38
|
+
try {
|
|
39
|
+
const m = await n.text();
|
|
40
|
+
await i(m);
|
|
41
|
+
} catch (m) {
|
|
42
|
+
console.error("Failed to copy as text fallback:", m);
|
|
43
|
+
}
|
|
23
44
|
}
|
|
24
45
|
} };
|
|
25
46
|
}
|
|
26
|
-
function
|
|
27
|
-
children:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
47
|
+
function F({ onClick: t, isCopied: e, showTooltip: i = !0 }) {
|
|
48
|
+
return /* @__PURE__ */ x("div", { className: "mint:relative", children: [
|
|
49
|
+
i && e && /* @__PURE__ */ r("div", { className: "mint:absolute mint:bottom-[calc(100%+0.5rem)] mint:left-1/2 mint:-translate-x-1/2 mint:bg-white mint:dark:bg-[#1a1a1a] mint:text-[#171717] mint:dark:text-[#fafafa] mint:px-2.5 mint:py-1.5 mint:rounded-md mint:text-xs mint:font-medium mint:whitespace-nowrap mint:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-1px_rgba(0,0,0,0.06)] mint:dark:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.3),0_2px_4px_-1px_rgba(0,0,0,0.2)] mint:z-10 mint:animate-[fadeIn_0.15s_ease-out] mint:after:content-[''] mint:after:absolute mint:after:top-full mint:after:left-1/2 mint:after:-translate-x-1/2 mint:after:w-0 mint:after:h-0 mint:after:border-l-[6px] mint:after:border-l-transparent mint:after:border-r-[6px] mint:after:border-r-transparent mint:after:border-t-[6px] mint:after:border-t-white mint:dark:after:border-t-[#1a1a1a]", children: "Copied!" }),
|
|
50
|
+
/* @__PURE__ */ r(
|
|
51
|
+
"button",
|
|
52
|
+
{
|
|
53
|
+
onClick: t,
|
|
54
|
+
className: "mint:flex mint:items-center mint:gap-1.5 mint:px-2 mint:py-1 mint:text-xs mint:text-[#737373] mint:dark:text-[#a3a3a3] mint:rounded mint:transition-colors mint:duration-150 mint:border-none mint:bg-transparent mint:cursor-pointer mint:hover:text-[#9263f1] mint:dark:hover:text-[#c9aaf9]",
|
|
55
|
+
"aria-label": e ? "Copied" : "Copy code",
|
|
56
|
+
children: e ? /* @__PURE__ */ r(R, { className: "mint:w-5 mint:h-5 mint:text-[#737373] mint:dark:text-[#a3a3a3]" }) : /* @__PURE__ */ r(S, { className: "mint:w-5 mint:h-5" })
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
] });
|
|
60
|
+
}
|
|
61
|
+
function W({
|
|
62
|
+
children: t,
|
|
63
|
+
className: e,
|
|
64
|
+
fileName: i,
|
|
65
|
+
language: y,
|
|
66
|
+
blob: n,
|
|
67
|
+
contentType: a
|
|
31
68
|
}) {
|
|
32
|
-
const [
|
|
33
|
-
var
|
|
34
|
-
if (typeof
|
|
69
|
+
const [o, m] = _(""), { isCopied: u, copy: k, copyBlob: C } = P(), s = y || (e == null ? void 0 : e.replace(/^language-/, "")) || "text", c = j(t), v = !!i, b = T.useMemo(() => {
|
|
70
|
+
var d, w;
|
|
71
|
+
if (typeof t != "object" || t == null)
|
|
35
72
|
return !1;
|
|
36
|
-
const
|
|
37
|
-
for (const
|
|
38
|
-
if (typeof
|
|
39
|
-
const
|
|
40
|
-
for (const
|
|
41
|
-
if (typeof
|
|
73
|
+
const p = Array.isArray(t) ? t : [t];
|
|
74
|
+
for (const l of p)
|
|
75
|
+
if (typeof l == "object" && l != null && "props" in l && ((d = l.props) != null && d.children)) {
|
|
76
|
+
const B = Array.isArray(l.props.children) ? l.props.children : [l.props.children];
|
|
77
|
+
for (const f of B)
|
|
78
|
+
if (typeof f == "object" && f != null && "props" in f && ((w = f.props) != null && w.className))
|
|
42
79
|
return !0;
|
|
43
80
|
}
|
|
44
81
|
return !1;
|
|
45
|
-
}, [
|
|
46
|
-
|
|
47
|
-
if (!
|
|
82
|
+
}, [t]);
|
|
83
|
+
I(() => {
|
|
84
|
+
if (!b)
|
|
48
85
|
try {
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
} catch (
|
|
52
|
-
console.error("Failed to highlight code:",
|
|
86
|
+
const p = h.languages[s] || h.languages.plaintext, d = h.highlight(c, p, s);
|
|
87
|
+
m(d);
|
|
88
|
+
} catch (p) {
|
|
89
|
+
console.error("Failed to highlight code:", p), m(c);
|
|
53
90
|
}
|
|
54
|
-
}, [
|
|
55
|
-
const
|
|
56
|
-
|
|
91
|
+
}, [c, s, b]);
|
|
92
|
+
const N = () => {
|
|
93
|
+
n && a ? C(n, a) : k(c);
|
|
57
94
|
};
|
|
58
|
-
return /* @__PURE__ */
|
|
95
|
+
return /* @__PURE__ */ x(
|
|
59
96
|
"div",
|
|
60
97
|
{
|
|
61
|
-
className:
|
|
98
|
+
className: v ? "flex flex-col gap-2 mt-4 mb-4 border border-[#e5e5e5] dark:border-[#262626] pt-2.5 px-2 pb-2 rounded-xl overflow-hidden" : void 0,
|
|
62
99
|
children: [
|
|
63
|
-
|
|
64
|
-
/* @__PURE__ */
|
|
65
|
-
/* @__PURE__ */
|
|
66
|
-
/* @__PURE__ */
|
|
67
|
-
/* @__PURE__ */
|
|
68
|
-
f && /* @__PURE__ */ t("div", { className: "mint:absolute mint:bottom-[calc(100%+0.5rem)] mint:left-1/2 mint:-translate-x-1/2 mint:bg-white mint:dark:bg-[#1a1a1a] mint:text-[#171717] mint:dark:text-[#fafafa] mint:px-2.5 mint:py-1.5 mint:rounded-md mint:text-xs mint:font-medium mint:whitespace-nowrap mint:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-1px_rgba(0,0,0,0.06)] mint:dark:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.3),0_2px_4px_-1px_rgba(0,0,0,0.2)] mint:z-10 mint:animate-[fadeIn_0.15s_ease-out] mint:after:content-[''] mint:after:absolute mint:after:top-full mint:after:left-1/2 mint:after:-translate-x-1/2 mint:after:w-0 mint:after:h-0 mint:after:border-l-[6px] mint:after:border-l-transparent mint:after:border-r-[6px] mint:after:border-r-transparent mint:after:border-t-[6px] mint:after:border-t-white mint:dark:after:border-t-[#1a1a1a]", children: "Copied!" }),
|
|
69
|
-
/* @__PURE__ */ t(
|
|
70
|
-
"button",
|
|
71
|
-
{
|
|
72
|
-
onClick: C,
|
|
73
|
-
className: "mint:flex mint:items-center mint:gap-1.5 mint:px-2 mint:py-1 mint:text-xs mint:text-[#737373] mint:dark:text-[#a3a3a3] mint:rounded mint:transition-colors mint:duration-150 mint:border-none mint:bg-transparent mint:cursor-pointer mint:hover:text-[#9263f1] mint:dark:hover:text-[#c9aaf9]",
|
|
74
|
-
"aria-label": f ? "Copied" : "Copy code",
|
|
75
|
-
children: f ? /* @__PURE__ */ t(T, { className: "mint:w-5 mint:h-5 mint:text-[#737373] mint:dark:text-[#a3a3a3]" }) : /* @__PURE__ */ t(A, { className: "mint:w-5 mint:h-5" })
|
|
76
|
-
}
|
|
77
|
-
)
|
|
78
|
-
] })
|
|
100
|
+
i && /* @__PURE__ */ r("span", { className: "mint:text-sm mint:font-medium mint:px-2", children: i }),
|
|
101
|
+
/* @__PURE__ */ x("div", { className: "not-prose mint:relative mint:rounded-xl mint:bg-[#f5f5f5] mint:dark:bg-[#141414]", children: [
|
|
102
|
+
/* @__PURE__ */ x("div", { className: "mint:flex mint:items-center mint:justify-between mint:px-3 mint:pt-2", children: [
|
|
103
|
+
/* @__PURE__ */ r("span", { className: "mint:text-xs mint:font-medium mint:text-[#737373] mint:dark:text-[#a3a3a3]", children: A(s) }),
|
|
104
|
+
/* @__PURE__ */ r(F, { onClick: N, isCopied: u })
|
|
79
105
|
] }),
|
|
80
|
-
/* @__PURE__ */
|
|
106
|
+
/* @__PURE__ */ r("div", { className: "mint:code-scrollbar mint:overflow-x-auto", children: /* @__PURE__ */ r("pre", { className: "mint:px-3 mint:pb-3 mint:pt-2 mint:m-0 mint:whitespace-pre mint:text-sm", children: b ? /* @__PURE__ */ r(
|
|
81
107
|
"code",
|
|
82
108
|
{
|
|
83
|
-
className:
|
|
84
|
-
`language-${
|
|
109
|
+
className: g(
|
|
110
|
+
`language-${s}`,
|
|
85
111
|
"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]"
|
|
86
112
|
),
|
|
87
|
-
children:
|
|
113
|
+
children: t
|
|
88
114
|
}
|
|
89
|
-
) :
|
|
115
|
+
) : o ? /* @__PURE__ */ r(
|
|
90
116
|
"code",
|
|
91
117
|
{
|
|
92
|
-
className:
|
|
93
|
-
`language-${
|
|
118
|
+
className: g(
|
|
119
|
+
`language-${s}`,
|
|
94
120
|
"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]"
|
|
95
121
|
),
|
|
96
|
-
dangerouslySetInnerHTML: { __html:
|
|
122
|
+
dangerouslySetInnerHTML: { __html: o }
|
|
97
123
|
}
|
|
98
|
-
) : /* @__PURE__ */
|
|
124
|
+
) : /* @__PURE__ */ r(
|
|
99
125
|
"code",
|
|
100
126
|
{
|
|
101
|
-
className:
|
|
102
|
-
`language-${
|
|
127
|
+
className: g(
|
|
128
|
+
`language-${s}`,
|
|
103
129
|
"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]"
|
|
104
130
|
),
|
|
105
|
-
children:
|
|
131
|
+
children: c
|
|
106
132
|
}
|
|
107
133
|
) }) })
|
|
108
134
|
] })
|
|
@@ -111,6 +137,8 @@ function O({
|
|
|
111
137
|
);
|
|
112
138
|
}
|
|
113
139
|
export {
|
|
114
|
-
|
|
140
|
+
W as CodeBlock,
|
|
141
|
+
F as CopyIconButton,
|
|
142
|
+
P as useCopyToClipboard
|
|
115
143
|
};
|
|
116
144
|
//# sourceMappingURL=code-block.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-block.js","sources":["../../../src/components/content-components/code-block.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport Prism from \"prismjs\";\nimport \"prismjs/components/prism-javascript.js\";\nimport \"prismjs/components/prism-typescript.js\";\nimport \"prismjs/components/prism-python.js\";\nimport \"prismjs/components/prism-bash.js\";\nimport \"prismjs/components/prism-json.js\";\nimport \"prismjs/components/prism-markdown.js\";\nimport \"prismjs/components/prism-csharp.js\";\nimport \"prismjs/components/prism-powershell.js\";\nimport { getNodeText } from \"../../utils/get-node-text\";\nimport {\n Copy20Regular,\n ClipboardCheckmarkRegular,\n} from \"@fluentui/react-icons\";\nimport { capitalize } from \"../../utils/string\";\nimport { cn } from \"../../utils/cn\";\n\ninterface CodeBlockProps {\n children: React.ReactNode;\n className?: string;\n language?: string;\n fileName?: string;\n}\n\nfunction useCopyToClipboard() {\n const [isCopied, setIsCopied] = useState(false);\n\n const copy = async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n } catch (error) {\n console.error(\"Failed to copy to clipboard:\", error);\n }\n };\n\n return { isCopied, copy };\n}\n\nexport function CodeBlock({\n children,\n className,\n fileName,\n language,\n}: CodeBlockProps) {\n const [highlightedCode, setHighlightedCode] = useState<string>(\"\");\n const { isCopied, copy } = useCopyToClipboard();\n const lang = language || className?.replace(/^language-/, \"\") || \"text\";\n const codeText = getNodeText(children);\n const showContainer = !!fileName;\n\n const isSSRHighlighted = React.useMemo(() => {\n if (typeof children !== \"object\" || children == null) {\n return false;\n }\n\n const childrenArray = Array.isArray(children) ? children : [children];\n for (const child of childrenArray) {\n if (\n typeof child === \"object\" &&\n child != null &&\n \"props\" in child &&\n child.props?.children\n ) {\n const codeChildren = Array.isArray(child.props.children)\n ? child.props.children\n : [child.props.children];\n\n for (const codeChild of codeChildren) {\n if (\n typeof codeChild === \"object\" &&\n codeChild != null &&\n \"props\" in codeChild &&\n codeChild.props?.className\n ) {\n return true;\n }\n }\n }\n }\n return false;\n }, [children]);\n\n useEffect(() => {\n if (isSSRHighlighted) {\n return;\n }\n\n try {\n const grammar = Prism.languages[lang] || Prism.languages.plaintext;\n const html = Prism.highlight(codeText, grammar, lang);\n setHighlightedCode(html);\n } catch (error) {\n console.error(\"Failed to highlight code:\", error);\n setHighlightedCode(codeText);\n }\n }, [codeText, lang, isSSRHighlighted]);\n\n const handleCopy = () => {\n copy(codeText);\n };\n\n return (\n <div\n className={\n showContainer\n ? \"mint:flex mint:flex-col mint:gap-2 mint:mt-4 mint:mb-4 mint:border mint:border-[#e5e5e5] mint:dark:border-[#262626] mint:pt-2.5 mint:px-2 mint:pb-2 mint:rounded-xl mint:overflow-hidden\"\n : undefined\n }\n >\n {fileName && (\n <span className=\"mint:text-sm mint:font-medium mint:px-2\">\n {fileName}\n </span>\n )}\n <div className=\"not-prose mint:relative mint:rounded-xl mint:bg-[#f5f5f5] mint:dark:bg-[#141414]\">\n <div className=\"mint:flex mint:items-center mint:justify-between mint:px-3 mint:pt-2\">\n <span className=\"mint:text-xs mint:font-medium mint:text-[#737373] mint:dark:text-[#a3a3a3]\">\n {capitalize(lang)}\n </span>\n <div className=\"mint:relative\">\n {isCopied && (\n <div className=\"mint:absolute mint:bottom-[calc(100%+0.5rem)] mint:left-1/2 mint:-translate-x-1/2 mint:bg-white mint:dark:bg-[#1a1a1a] mint:text-[#171717] mint:dark:text-[#fafafa] mint:px-2.5 mint:py-1.5 mint:rounded-md mint:text-xs mint:font-medium mint:whitespace-nowrap mint:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-1px_rgba(0,0,0,0.06)] mint:dark:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.3),0_2px_4px_-1px_rgba(0,0,0,0.2)] mint:z-10 mint:animate-[fadeIn_0.15s_ease-out] mint:after:content-[''] mint:after:absolute mint:after:top-full mint:after:left-1/2 mint:after:-translate-x-1/2 mint:after:w-0 mint:after:h-0 mint:after:border-l-[6px] mint:after:border-l-transparent mint:after:border-r-[6px] mint:after:border-r-transparent mint:after:border-t-[6px] mint:after:border-t-white mint:dark:after:border-t-[#1a1a1a]\">\n Copied!\n </div>\n )}\n <button\n onClick={handleCopy}\n className=\"mint:flex mint:items-center mint:gap-1.5 mint:px-2 mint:py-1 mint:text-xs mint:text-[#737373] mint:dark:text-[#a3a3a3] mint:rounded mint:transition-colors mint:duration-150 mint:border-none mint:bg-transparent mint:cursor-pointer mint:hover:text-[#9263f1] mint:dark:hover:text-[#c9aaf9]\"\n aria-label={isCopied ? \"Copied\" : \"Copy code\"}\n >\n {isCopied ? (\n <ClipboardCheckmarkRegular className=\"mint:w-5 mint:h-5 mint:text-[#737373] mint:dark:text-[#a3a3a3]\" />\n ) : (\n <Copy20Regular className=\"mint:w-5 mint:h-5\" />\n )}\n </button>\n </div>\n </div>\n <div className=\"code-scrollbar mint:overflow-x-auto\">\n <pre className=\"mint:px-3 mint:pb-3 mint:pt-2 mint:m-0 mint:whitespace-pre mint:text-sm\">\n {isSSRHighlighted ? (\n <code\n className={cn(\n `language-${lang}`,\n \"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]\"\n )}\n >\n {children}\n </code>\n ) : highlightedCode ? (\n <code\n className={cn(\n `language-${lang}`,\n \"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]\"\n )}\n dangerouslySetInnerHTML={{ __html: highlightedCode }}\n />\n ) : (\n <code\n className={cn(\n `language-${lang}`,\n \"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]\"\n )}\n >\n {codeText}\n </code>\n )}\n </pre>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["useCopyToClipboard","isCopied","setIsCopied","useState","text","error","CodeBlock","children","className","fileName","language","highlightedCode","setHighlightedCode","copy","lang","codeText","getNodeText","showContainer","isSSRHighlighted","React","childrenArray","child","_a","codeChildren","codeChild","_b","useEffect","grammar","Prism","html","handleCopy","jsxs","jsx","capitalize","ClipboardCheckmarkRegular","Copy20Regular","cn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"code-block.js","sources":["../../../src/components/content-components/code-block.tsx"],"sourcesContent":["'use client';\n\nimport React, { useEffect, useState } from \"react\";\nimport Prism from \"prismjs\";\nimport \"prismjs/components/prism-javascript.js\";\nimport \"prismjs/components/prism-typescript.js\";\nimport \"prismjs/components/prism-python.js\";\nimport \"prismjs/components/prism-bash.js\";\nimport \"prismjs/components/prism-json.js\";\nimport \"prismjs/components/prism-markdown.js\";\nimport \"prismjs/components/prism-csharp.js\";\nimport \"prismjs/components/prism-powershell.js\";\nimport { getNodeText } from \"../../utils/get-node-text\";\nimport { capitalize } from \"../../utils/string\";\nimport { cn } from \"../../utils/cn\";\nimport {\n Copy20Regular,\n ClipboardCheckmarkRegular,\n} from \"@fluentui/react-icons\";\n\nconst SUPPORTED_CLIPBOARD_CONTENT_TYPES = [\"image/png\", \"text/plain\"];\n\n// Hook for clipboard operations\nexport function useCopyToClipboard() {\n const [isCopied, setIsCopied] = useState(false);\n\n const copy = async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n } catch (error) {\n console.error(\"Failed to copy to clipboard:\", error);\n }\n };\n\n const copyBlob = async (blob: Blob, contentType: string) => {\n try {\n // image/png, text/plain, and text/html are the only filetypes supported in the chromium\n // clipboard - however, text/html crashes chrome for some reason\n if (SUPPORTED_CLIPBOARD_CONTENT_TYPES.includes(contentType)) {\n const buffer = await blob.arrayBuffer();\n const newBlob = new Blob([buffer], { type: contentType });\n const clipboardItem = new ClipboardItem({\n [contentType]: newBlob,\n });\n await navigator.clipboard.write([clipboardItem]);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n } else {\n // Fallback to text copy for unsupported types\n const text = await blob.text();\n await copy(text);\n }\n } catch (error) {\n console.error(\"Failed to copy blob to clipboard:\", error);\n // Fallback to text copy if blob copy fails\n try {\n const text = await blob.text();\n await copy(text);\n } catch (fallbackError) {\n console.error(\"Failed to copy as text fallback:\", fallbackError);\n }\n }\n };\n\n return { isCopied, copy, copyBlob };\n}\n\n// Base copy icon button component\ninterface CopyIconButtonProps {\n onClick: () => void;\n isCopied: boolean;\n showTooltip?: boolean;\n}\n\nexport function CopyIconButton({ onClick, isCopied, showTooltip = true }: CopyIconButtonProps) {\n return (\n <div className=\"mint:relative\">\n {showTooltip && isCopied && (\n <div className=\"mint:absolute mint:bottom-[calc(100%+0.5rem)] mint:left-1/2 mint:-translate-x-1/2 mint:bg-white mint:dark:bg-[#1a1a1a] mint:text-[#171717] mint:dark:text-[#fafafa] mint:px-2.5 mint:py-1.5 mint:rounded-md mint:text-xs mint:font-medium mint:whitespace-nowrap mint:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-1px_rgba(0,0,0,0.06)] mint:dark:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.3),0_2px_4px_-1px_rgba(0,0,0,0.2)] mint:z-10 mint:animate-[fadeIn_0.15s_ease-out] mint:after:content-[''] mint:after:absolute mint:after:top-full mint:after:left-1/2 mint:after:-translate-x-1/2 mint:after:w-0 mint:after:h-0 mint:after:border-l-[6px] mint:after:border-l-transparent mint:after:border-r-[6px] mint:after:border-r-transparent mint:after:border-t-[6px] mint:after:border-t-white mint:dark:after:border-t-[#1a1a1a]\">\n Copied!\n </div>\n )}\n <button\n onClick={onClick}\n className=\"mint:flex mint:items-center mint:gap-1.5 mint:px-2 mint:py-1 mint:text-xs mint:text-[#737373] mint:dark:text-[#a3a3a3] mint:rounded mint:transition-colors mint:duration-150 mint:border-none mint:bg-transparent mint:cursor-pointer mint:hover:text-[#9263f1] mint:dark:hover:text-[#c9aaf9]\"\n aria-label={isCopied ? \"Copied\" : \"Copy code\"}\n >\n {isCopied ? (\n <ClipboardCheckmarkRegular className=\"mint:w-5 mint:h-5 mint:text-[#737373] mint:dark:text-[#a3a3a3]\" />\n ) : (\n <Copy20Regular className=\"mint:w-5 mint:h-5\" />\n )}\n </button>\n </div>\n );\n}\n\n// Convenience component that handles text copying\ninterface CopyToClipboardButtonProps {\n textToCopy: string;\n showTooltip?: boolean;\n}\n\nexport function CopyToClipboardButton({ textToCopy, showTooltip = true }: CopyToClipboardButtonProps) {\n const { isCopied, copy } = useCopyToClipboard();\n\n const handleCopy = () => {\n copy(textToCopy);\n };\n\n return <CopyIconButton onClick={handleCopy} isCopied={isCopied} showTooltip={showTooltip} />;\n}\n\n// Convenience component that handles blob/data copying\ninterface CopyDataToClipboardButtonProps {\n data: {\n type: 'image' | 'audio' | 'video' | 'other';\n blob: Blob;\n contentType?: string;\n content?: string;\n };\n showTooltip?: boolean;\n}\n\nexport function CopyDataToClipboardButton({ data, showTooltip = true }: CopyDataToClipboardButtonProps) {\n const { isCopied, copy, copyBlob } = useCopyToClipboard();\n\n const handleCopy = () => {\n // Check if we can copy as blob (for images, etc.)\n if (data.contentType && SUPPORTED_CLIPBOARD_CONTENT_TYPES.includes(data.contentType)) {\n copyBlob(data.blob, data.contentType);\n } else if (data.type === 'other' && data.content) {\n // For text content, copy as text\n copy(data.content);\n } else {\n console.error('Unsupported content type for clipboard');\n }\n };\n\n return <CopyIconButton onClick={handleCopy} isCopied={isCopied} showTooltip={showTooltip} />;\n}\n\ninterface CodeBlockProps {\n children: React.ReactNode;\n className?: string;\n language?: string;\n fileName?: string;\n // Support for copying blobs (images, etc.)\n blob?: Blob;\n contentType?: string;\n}\n\nexport function CodeBlock({\n children,\n className,\n fileName,\n language,\n blob,\n contentType,\n}: CodeBlockProps) {\n const [highlightedCode, setHighlightedCode] = useState<string>(\"\");\n const { isCopied, copy, copyBlob } = useCopyToClipboard();\n const lang = language || className?.replace(/^language-/, \"\") || \"text\";\n const codeText = getNodeText(children);\n const showContainer = !!fileName;\n\n const isSSRHighlighted = React.useMemo(() => {\n if (typeof children !== \"object\" || children == null) {\n return false;\n }\n\n const childrenArray = Array.isArray(children) ? children : [children];\n for (const child of childrenArray) {\n if (\n typeof child === \"object\" &&\n child != null &&\n \"props\" in child &&\n child.props?.children\n ) {\n const codeChildren = Array.isArray(child.props.children)\n ? child.props.children\n : [child.props.children];\n\n for (const codeChild of codeChildren) {\n if (\n typeof codeChild === \"object\" &&\n codeChild != null &&\n \"props\" in codeChild &&\n codeChild.props?.className\n ) {\n return true;\n }\n }\n }\n }\n return false;\n }, [children]);\n\n useEffect(() => {\n if (isSSRHighlighted) {\n return;\n }\n\n try {\n const grammar = Prism.languages[lang] || Prism.languages.plaintext;\n const html = Prism.highlight(codeText, grammar, lang);\n setHighlightedCode(html);\n } catch (error) {\n console.error(\"Failed to highlight code:\", error);\n setHighlightedCode(codeText);\n }\n }, [codeText, lang, isSSRHighlighted]);\n\n const handleCopy = () => {\n // If blob and contentType are provided, use blob copying\n if (blob && contentType) {\n copyBlob(blob, contentType);\n } else {\n // Otherwise, use text copying\n copy(codeText);\n }\n };\n\n return (\n <div\n // eslint-disable-next-line local/enforce-cn-classname\n className={\n showContainer\n ? \"flex flex-col gap-2 mt-4 mb-4 border border-[#e5e5e5] dark:border-[#262626] pt-2.5 px-2 pb-2 rounded-xl overflow-hidden\"\n : undefined\n }\n >\n {fileName && (\n <span className=\"mint:text-sm mint:font-medium mint:px-2\">\n {fileName}\n </span>\n )}\n <div className=\"not-prose mint:relative mint:rounded-xl mint:bg-[#f5f5f5] mint:dark:bg-[#141414]\">\n <div className=\"mint:flex mint:items-center mint:justify-between mint:px-3 mint:pt-2\">\n <span className=\"mint:text-xs mint:font-medium mint:text-[#737373] mint:dark:text-[#a3a3a3]\">\n {capitalize(lang)}\n </span>\n <CopyIconButton onClick={handleCopy} isCopied={isCopied} />\n </div>\n <div className=\"mint:code-scrollbar mint:overflow-x-auto\">\n <pre className=\"mint:px-3 mint:pb-3 mint:pt-2 mint:m-0 mint:whitespace-pre mint:text-sm\">\n {isSSRHighlighted ? (\n <code\n className={cn(\n `language-${lang}`,\n \"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]\"\n )}\n >\n {children}\n </code>\n ) : highlightedCode ? (\n <code\n className={cn(\n `language-${lang}`,\n \"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]\"\n )}\n dangerouslySetInnerHTML={{ __html: highlightedCode }}\n />\n ) : (\n <code\n className={cn(\n `language-${lang}`,\n \"mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]\"\n )}\n >\n {codeText}\n </code>\n )}\n </pre>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["SUPPORTED_CLIPBOARD_CONTENT_TYPES","useCopyToClipboard","isCopied","setIsCopied","useState","copy","text","error","blob","contentType","buffer","newBlob","clipboardItem","fallbackError","CopyIconButton","onClick","showTooltip","jsxs","jsx","ClipboardCheckmarkRegular","Copy20Regular","CodeBlock","children","className","fileName","language","highlightedCode","setHighlightedCode","copyBlob","lang","codeText","getNodeText","showContainer","isSSRHighlighted","React","childrenArray","child","_a","codeChildren","codeChild","_b","useEffect","grammar","Prism","html","handleCopy","capitalize","cn"],"mappings":";;;;;;;;;;;;;;;AAoBA,MAAMA,IAAoC,CAAC,aAAa,YAAY;AAG7D,SAASC,IAAqB;AACnC,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAS,EAAK,GAExCC,IAAO,OAAOC,MAAiB;AACnC,QAAI;AACF,YAAM,UAAU,UAAU,UAAUA,CAAI,GACxCH,EAAY,EAAI,GAChB,WAAW,MAAMA,EAAY,EAAK,GAAG,GAAI;AAAA,IAC3C,SAASI,GAAO;AACd,cAAQ,MAAM,gCAAgCA,CAAK;AAAA,IACrD;AAAA,EACF;AAgCA,SAAO,EAAE,UAAAL,GAAU,MAAAG,GAAM,UA9BR,OAAOG,GAAYC,MAAwB;AAC1D,QAAI;AAGF,UAAIT,EAAkC,SAASS,CAAW,GAAG;AAC3D,cAAMC,IAAS,MAAMF,EAAK,YAAA,GACpBG,IAAU,IAAI,KAAK,CAACD,CAAM,GAAG,EAAE,MAAMD,GAAa,GAClDG,IAAgB,IAAI,cAAc;AAAA,UACtC,CAACH,CAAW,GAAGE;AAAA,QAAA,CAChB;AACD,cAAM,UAAU,UAAU,MAAM,CAACC,CAAa,CAAC,GAC/CT,EAAY,EAAI,GAChB,WAAW,MAAMA,EAAY,EAAK,GAAG,GAAI;AAAA,MAC3C,OAAO;AAEL,cAAMG,IAAO,MAAME,EAAK,KAAA;AACxB,cAAMH,EAAKC,CAAI;AAAA,MACjB;AAAA,IACF,SAASC,GAAO;AACd,cAAQ,MAAM,qCAAqCA,CAAK;AAExD,UAAI;AACF,cAAMD,IAAO,MAAME,EAAK,KAAA;AACxB,cAAMH,EAAKC,CAAI;AAAA,MACjB,SAASO,GAAe;AACtB,gBAAQ,MAAM,oCAAoCA,CAAa;AAAA,MACjE;AAAA,IACF;AAAA,EACF,EAEyB;AAC3B;AASO,SAASC,EAAe,EAAE,SAAAC,GAAS,UAAAb,GAAU,aAAAc,IAAc,MAA6B;AAC7F,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAU,iBACZ,UAAA;AAAA,IAAAD,KAAed,KACd,gBAAAgB,EAAC,OAAA,EAAI,WAAU,0yBAAyyB,UAAA,WAExzB;AAAA,IAEF,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAAH;AAAA,QACA,WAAU;AAAA,QACV,cAAYb,IAAW,WAAW;AAAA,QAEjC,UAAAA,sBACEiB,GAAA,EAA0B,WAAU,kEAAiE,IAEtG,gBAAAD,EAACE,GAAA,EAAc,WAAU,oBAAA,CAAoB;AAAA,MAAA;AAAA,IAAA;AAAA,EAEjD,GACF;AAEJ;AAyDO,SAASC,EAAU;AAAA,EACxB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAjB;AAAA,EACA,aAAAC;AACF,GAAmB;AACjB,QAAM,CAACiB,GAAiBC,CAAkB,IAAIvB,EAAiB,EAAE,GAC3D,EAAE,UAAAF,GAAU,MAAAG,GAAM,UAAAuB,EAAA,IAAa3B,EAAA,GAC/B4B,IAAOJ,MAAYF,KAAA,gBAAAA,EAAW,QAAQ,cAAc,QAAO,QAC3DO,IAAWC,EAAYT,CAAQ,GAC/BU,IAAgB,CAAC,CAACR,GAElBS,IAAmBC,EAAM,QAAQ,MAAM;;AAC3C,QAAI,OAAOZ,KAAa,YAAYA,KAAY;AAC9C,aAAO;AAGT,UAAMa,IAAgB,MAAM,QAAQb,CAAQ,IAAIA,IAAW,CAACA,CAAQ;AACpE,eAAWc,KAASD;AAClB,UACE,OAAOC,KAAU,YACjBA,KAAS,QACT,WAAWA,OACXC,IAAAD,EAAM,UAAN,QAAAC,EAAa,WACb;AACA,cAAMC,IAAe,MAAM,QAAQF,EAAM,MAAM,QAAQ,IACnDA,EAAM,MAAM,WACZ,CAACA,EAAM,MAAM,QAAQ;AAEzB,mBAAWG,KAAaD;AACtB,cACE,OAAOC,KAAc,YACrBA,KAAa,QACb,WAAWA,OACXC,IAAAD,EAAU,UAAV,QAAAC,EAAiB;AAEjB,mBAAO;AAAA,MAGb;AAEF,WAAO;AAAA,EACT,GAAG,CAAClB,CAAQ,CAAC;AAEb,EAAAmB,EAAU,MAAM;AACd,QAAI,CAAAR;AAIJ,UAAI;AACF,cAAMS,IAAUC,EAAM,UAAUd,CAAI,KAAKc,EAAM,UAAU,WACnDC,IAAOD,EAAM,UAAUb,GAAUY,GAASb,CAAI;AACpD,QAAAF,EAAmBiB,CAAI;AAAA,MACzB,SAASrC,GAAO;AACd,gBAAQ,MAAM,6BAA6BA,CAAK,GAChDoB,EAAmBG,CAAQ;AAAA,MAC7B;AAAA,EACF,GAAG,CAACA,GAAUD,GAAMI,CAAgB,CAAC;AAErC,QAAMY,IAAa,MAAM;AAEvB,IAAIrC,KAAQC,IACVmB,EAASpB,GAAMC,CAAW,IAG1BJ,EAAKyB,CAAQ;AAAA,EAEjB;AAEA,SACE,gBAAAb;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WACEe,IACI,4HACA;AAAA,MAGL,UAAA;AAAA,QAAAR,KACC,gBAAAN,EAAC,QAAA,EAAK,WAAU,2CACb,UAAAM,GACH;AAAA,QAEF,gBAAAP,EAAC,OAAA,EAAI,WAAU,oFACb,UAAA;AAAA,UAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,wEACb,UAAA;AAAA,YAAA,gBAAAC,EAAC,QAAA,EAAK,WAAU,8EACb,UAAA4B,EAAWjB,CAAI,GAClB;AAAA,YACA,gBAAAX,EAACJ,GAAA,EAAe,SAAS+B,GAAY,UAAA3C,EAAA,CAAoB;AAAA,UAAA,GAC3D;AAAA,UACA,gBAAAgB,EAAC,SAAI,WAAU,4CACb,4BAAC,OAAA,EAAI,WAAU,2EACZ,UAAAe,IACC,gBAAAf;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW6B;AAAA,gBACT,YAAYlB,CAAI;AAAA,gBAChB;AAAA,cAAA;AAAA,cAGD,UAAAP;AAAA,YAAA;AAAA,UAAA,IAEDI,IACF,gBAAAR;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW6B;AAAA,gBACT,YAAYlB,CAAI;AAAA,gBAChB;AAAA,cAAA;AAAA,cAEF,yBAAyB,EAAE,QAAQH,EAAA;AAAA,YAAgB;AAAA,UAAA,IAGrD,gBAAAR;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW6B;AAAA,gBACT,YAAYlB,CAAI;AAAA,gBAChB;AAAA,cAAA;AAAA,cAGD,UAAAC;AAAA,YAAA;AAAA,UAAA,GAGP,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -1,83 +1,57 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { TableBody as
|
|
3
|
-
import { cn as
|
|
4
|
-
import { allComponents as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { jsx as t, Fragment as l } from "react/jsx-runtime";
|
|
2
|
+
import { TableBody as s, TableHeader as d, TableRow as p, TableCell as b, TableHead as f, Table as u } from "./table/index.js";
|
|
3
|
+
import { cn as r } from "../../utils/cn.js";
|
|
4
|
+
import { allComponents as c } from "./all-components.js";
|
|
5
|
+
import { Image as g } from "./image.js";
|
|
6
|
+
import { Link as h } from "./link.js";
|
|
7
|
+
import { Heading as o } from "./heading.js";
|
|
8
|
+
import { Summary as k, Details as _ } from "./details/details.js";
|
|
9
|
+
function y(i = {}) {
|
|
10
|
+
const { LinkComponent: m } = i;
|
|
10
11
|
return {
|
|
11
|
-
h1: (
|
|
12
|
-
h2: (
|
|
13
|
-
h3: (
|
|
14
|
-
h4: (
|
|
15
|
-
h5: (
|
|
16
|
-
h6: (
|
|
17
|
-
code: ({ className:
|
|
12
|
+
h1: (e) => /* @__PURE__ */ t(o, { level: 1, ...e }),
|
|
13
|
+
h2: (e) => /* @__PURE__ */ t(o, { level: 2, ...e }),
|
|
14
|
+
h3: (e) => /* @__PURE__ */ t(o, { level: 3, ...e }),
|
|
15
|
+
h4: (e) => /* @__PURE__ */ t(o, { level: 4, ...e }),
|
|
16
|
+
h5: (e) => /* @__PURE__ */ t(o, { level: 5, ...e }),
|
|
17
|
+
h6: (e) => /* @__PURE__ */ t(o, { level: 6, ...e }),
|
|
18
|
+
code: ({ className: e, children: n, ...a }) => e ? n : /* @__PURE__ */ t(
|
|
18
19
|
"code",
|
|
19
20
|
{
|
|
20
|
-
className:
|
|
21
|
+
className: r(
|
|
21
22
|
"not-prose mint:font-medium mint:font-mono mint:text-sm mint:bg-gray-100 mint:shadow-[0_0_0_1px_rgba(156,163,175,0.3)] mint:px-1.5 mint:py-0.5 mint:rounded mint:dark:bg-[#1f1f1f] mint:dark:shadow-[0_0_0_1px_rgba(55,65,81,0.5)]"
|
|
22
23
|
),
|
|
23
|
-
...
|
|
24
|
+
...a,
|
|
24
25
|
children: n
|
|
25
26
|
}
|
|
26
27
|
),
|
|
27
|
-
pre: ({ children:
|
|
28
|
+
pre: ({ children: e }) => /* @__PURE__ */ t(l, { children: e }),
|
|
28
29
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
-
a:
|
|
30
|
-
blockquote: (
|
|
30
|
+
a: m ? (e) => /* @__PURE__ */ t(m, { ...e }) : h,
|
|
31
|
+
blockquote: (e) => /* @__PURE__ */ t(
|
|
31
32
|
"blockquote",
|
|
32
33
|
{
|
|
33
|
-
className:
|
|
34
|
+
className: r(
|
|
34
35
|
"not-prose mint:border-l-4 mint:border-gray-200 mint:pl-6 mint:mb-4 mint:dark:border-l-white/20"
|
|
35
36
|
),
|
|
36
|
-
...
|
|
37
|
+
...e
|
|
37
38
|
}
|
|
38
39
|
),
|
|
39
|
-
img:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
{
|
|
45
|
-
className: i("mint:max-w-full mint:h-auto mint:object-contain mint:cursor-zoom-in"),
|
|
46
|
-
onClick: () => o(!0),
|
|
47
|
-
...t
|
|
48
|
-
}
|
|
49
|
-
),
|
|
50
|
-
n && /* @__PURE__ */ e(
|
|
51
|
-
"div",
|
|
52
|
-
{
|
|
53
|
-
className: "mint:fixed mint:inset-0 mint:z-50 mint:bg-black/90 mint:flex mint:items-center mint:justify-center mint:p-4 mint:cursor-zoom-out",
|
|
54
|
-
onClick: () => o(!1),
|
|
55
|
-
children: /* @__PURE__ */ e(
|
|
56
|
-
"img",
|
|
57
|
-
{
|
|
58
|
-
src: t.src,
|
|
59
|
-
alt: t.alt,
|
|
60
|
-
className: "mint:max-w-full mint:max-h-full mint:object-contain mint:shadow-2xl"
|
|
61
|
-
}
|
|
62
|
-
)
|
|
63
|
-
}
|
|
64
|
-
)
|
|
65
|
-
] });
|
|
66
|
-
},
|
|
67
|
-
table: p,
|
|
68
|
-
th: b,
|
|
69
|
-
td: u,
|
|
70
|
-
tr: f,
|
|
40
|
+
img: g,
|
|
41
|
+
table: u,
|
|
42
|
+
th: f,
|
|
43
|
+
td: b,
|
|
44
|
+
tr: p,
|
|
71
45
|
thead: d,
|
|
72
|
-
tbody:
|
|
73
|
-
details:
|
|
74
|
-
summary:
|
|
75
|
-
...
|
|
46
|
+
tbody: s,
|
|
47
|
+
details: _,
|
|
48
|
+
summary: k,
|
|
49
|
+
...c
|
|
76
50
|
};
|
|
77
51
|
}
|
|
78
|
-
const
|
|
52
|
+
const D = y();
|
|
79
53
|
export {
|
|
80
54
|
y as createDefaultComponents,
|
|
81
|
-
|
|
55
|
+
D as defaultComponents
|
|
82
56
|
};
|
|
83
57
|
//# sourceMappingURL=default-components.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-components.js","sources":["../../../src/components/content-components/default-components.tsx"],"sourcesContent":["import { Details, Heading, Link, Summary, allComponents } from \".\";\nimport type { MDXComponents, LinkComponent } from \"../../types\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"./table\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface CreateDefaultComponentsOptions {\n LinkComponent?: LinkComponent;\n}\n\nexport function createDefaultComponents(\n options: CreateDefaultComponentsOptions = {}\n): MDXComponents {\n const { LinkComponent: CustomLink } = options;\n\n return {\n h1: (props) => <Heading level={1} {...props} />,\n h2: (props) => <Heading level={2} {...props} />,\n h3: (props) => <Heading level={3} {...props} />,\n h4: (props) => <Heading level={4} {...props} />,\n h5: (props) => <Heading level={5} {...props} />,\n h6: (props) => <Heading level={6} {...props} />,\n code: ({ className, children, ...props }) => {\n const isInline = !className;\n if (isInline) {\n return (\n <code\n className={cn(\n \"not-prose mint:font-medium mint:font-mono mint:text-sm mint:bg-gray-100 mint:shadow-[0_0_0_1px_rgba(156,163,175,0.3)] mint:px-1.5 mint:py-0.5 mint:rounded mint:dark:bg-[#1f1f1f] mint:dark:shadow-[0_0_0_1px_rgba(55,65,81,0.5)]\"\n )}\n {...props}\n >\n {children}\n </code>\n );\n }\n return children;\n },\n pre: ({ children }) => <>{children}</>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n a: CustomLink ? (props: any) => <CustomLink {...props} /> : Link,\n blockquote: (props) => (\n <blockquote\n className={cn(\n \"not-prose mint:border-l-4 mint:border-gray-200 mint:pl-6 mint:mb-4 mint:dark:border-l-white/20\"\n )}\n {...props}\n />\n ),\n img:
|
|
1
|
+
{"version":3,"file":"default-components.js","sources":["../../../src/components/content-components/default-components.tsx"],"sourcesContent":["import { Details, Heading, Link, Summary, allComponents, Image } from \".\";\nimport type { MDXComponents, LinkComponent } from \"../../types\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"./table\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface CreateDefaultComponentsOptions {\n LinkComponent?: LinkComponent;\n}\n\nexport function createDefaultComponents(\n options: CreateDefaultComponentsOptions = {}\n): MDXComponents {\n const { LinkComponent: CustomLink } = options;\n\n return {\n h1: (props) => <Heading level={1} {...props} />,\n h2: (props) => <Heading level={2} {...props} />,\n h3: (props) => <Heading level={3} {...props} />,\n h4: (props) => <Heading level={4} {...props} />,\n h5: (props) => <Heading level={5} {...props} />,\n h6: (props) => <Heading level={6} {...props} />,\n code: ({ className, children, ...props }) => {\n const isInline = !className;\n if (isInline) {\n return (\n <code\n className={cn(\n \"not-prose mint:font-medium mint:font-mono mint:text-sm mint:bg-gray-100 mint:shadow-[0_0_0_1px_rgba(156,163,175,0.3)] mint:px-1.5 mint:py-0.5 mint:rounded mint:dark:bg-[#1f1f1f] mint:dark:shadow-[0_0_0_1px_rgba(55,65,81,0.5)]\"\n )}\n {...props}\n >\n {children}\n </code>\n );\n }\n return children;\n },\n pre: ({ children }) => <>{children}</>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n a: CustomLink ? (props: any) => <CustomLink {...props} /> : Link,\n blockquote: (props) => (\n <blockquote\n className={cn(\n \"not-prose mint:border-l-4 mint:border-gray-200 mint:pl-6 mint:mb-4 mint:dark:border-l-white/20\"\n )}\n {...props}\n />\n ),\n img: Image,\n table: Table,\n th: TableHead,\n td: TableCell,\n tr: TableRow,\n thead: TableHeader,\n tbody: TableBody,\n details: Details,\n summary: Summary,\n ...allComponents,\n };\n}\n\n// Export as default for backward compatibility\nexport const defaultComponents: MDXComponents = createDefaultComponents();\n"],"names":["createDefaultComponents","options","CustomLink","props","jsx","Heading","className","children","cn","Link","Image","Table","TableHead","TableCell","TableRow","TableHeader","TableBody","Details","Summary","allComponents","defaultComponents"],"mappings":";;;;;;;;AAgBO,SAASA,EACdC,IAA0C,IAC3B;AACf,QAAM,EAAE,eAAeC,EAAA,IAAeD;AAEtC,SAAO;AAAA,IACL,IAAI,CAACE,MAAU,gBAAAC,EAACC,KAAQ,OAAO,GAAI,GAAGF,GAAO;AAAA,IAC7C,IAAI,CAACA,MAAU,gBAAAC,EAACC,KAAQ,OAAO,GAAI,GAAGF,GAAO;AAAA,IAC7C,IAAI,CAACA,MAAU,gBAAAC,EAACC,KAAQ,OAAO,GAAI,GAAGF,GAAO;AAAA,IAC7C,IAAI,CAACA,MAAU,gBAAAC,EAACC,KAAQ,OAAO,GAAI,GAAGF,GAAO;AAAA,IAC7C,IAAI,CAACA,MAAU,gBAAAC,EAACC,KAAQ,OAAO,GAAI,GAAGF,GAAO;AAAA,IAC7C,IAAI,CAACA,MAAU,gBAAAC,EAACC,KAAQ,OAAO,GAAI,GAAGF,GAAO;AAAA,IAC7C,MAAM,CAAC,EAAE,WAAAG,GAAW,UAAAC,GAAU,GAAGJ,QACbG,IAaXC,IAVH,gBAAAH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWI;AAAA,UACT;AAAA,QAAA;AAAA,QAED,GAAGL;AAAA,QAEH,UAAAI;AAAA,MAAA;AAAA,IAAA;AAAA,IAMT,KAAK,CAAC,EAAE,UAAAA,EAAA,6BAAkB,UAAAA,GAAS;AAAA;AAAA,IAEnC,GAAGL,IAAa,CAACC,wBAAgBD,GAAA,EAAY,GAAGC,GAAO,IAAKM;AAAA,IAC5D,YAAY,CAACN,MACX,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWI;AAAA,UACT;AAAA,QAAA;AAAA,QAED,GAAGL;AAAA,MAAA;AAAA,IAAA;AAAA,IAGR,KAAKO;AAAA,IACL,OAAOC;AAAA,IACP,IAAIC;AAAA,IACJ,IAAIC;AAAA,IACJ,IAAIC;AAAA,IACJ,OAAOC;AAAA,IACP,OAAOC;AAAA,IACP,SAASC;AAAA,IACT,SAASC;AAAA,IACT,GAAGC;AAAA,EAAA;AAEP;AAGO,MAAMC,IAAmCpB,EAAA;"}
|