@haklex/rich-renderer-codeblock 0.49.1 → 0.50.1
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/CodeBlockCard.d.ts.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.mjs +79 -57
- package/dist/{icons-Bd3KLabn.js → icons-C6NXwMKM.js} +18 -15
- package/dist/icons.mjs +1 -1
- package/dist/index.mjs +45 -36
- package/dist/rich-renderer-codeblock.css +1 -1
- package/dist/static.d.ts.map +1 -1
- package/dist/static.mjs +3 -0
- package/dist/styles.css.d.ts +3 -0
- package/dist/styles.css.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeBlockCard.d.ts","sourceRoot":"","sources":["../src/CodeBlockCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAWtD,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,QAAQ,EACR,WAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,MAAM,EAAE,UAAkB,GAC3B,EAAE,kBAAkB,+
|
|
1
|
+
{"version":3,"file":"CodeBlockCard.d.ts","sourceRoot":"","sources":["../src/CodeBlockCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAWtD,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,QAAQ,EACR,WAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,MAAM,EAAE,UAAkB,GAC3B,EAAE,kBAAkB,+BAqHpB"}
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA8BpD,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA8BpD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA8BrD,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGlE;AAyBD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG3D"}
|
package/dist/constants.mjs
CHANGED
|
@@ -1,73 +1,95 @@
|
|
|
1
1
|
//#region src/constants.ts
|
|
2
2
|
var languageToIconMap = {
|
|
3
|
-
javascript: "JS",
|
|
4
|
-
js: "JS",
|
|
5
|
-
typescript: "TS",
|
|
6
|
-
ts: "TS",
|
|
7
|
-
jsx: "JSX",
|
|
8
|
-
tsx: "TSX",
|
|
9
|
-
html: "HTML",
|
|
10
|
-
css: "CSS",
|
|
11
|
-
scss: "SCSS",
|
|
12
|
-
json: "JSON",
|
|
13
|
-
markdown: "MD",
|
|
14
|
-
md: "MD",
|
|
15
|
-
bash: "SH",
|
|
16
|
-
sh: "SH",
|
|
17
|
-
shell: "SH",
|
|
18
|
-
zsh: "SH",
|
|
19
|
-
python: "PY",
|
|
20
|
-
py: "PY",
|
|
21
|
-
rust: "RS",
|
|
22
|
-
go: "GO",
|
|
23
|
-
java: "JAVA",
|
|
24
|
-
c: "C",
|
|
25
|
-
cpp: "C++",
|
|
3
|
+
"javascript": "JS",
|
|
4
|
+
"js": "JS",
|
|
5
|
+
"typescript": "TS",
|
|
6
|
+
"ts": "TS",
|
|
7
|
+
"jsx": "JSX",
|
|
8
|
+
"tsx": "TSX",
|
|
9
|
+
"html": "HTML",
|
|
10
|
+
"css": "CSS",
|
|
11
|
+
"scss": "SCSS",
|
|
12
|
+
"json": "JSON",
|
|
13
|
+
"markdown": "MD",
|
|
14
|
+
"md": "MD",
|
|
15
|
+
"bash": "SH",
|
|
16
|
+
"sh": "SH",
|
|
17
|
+
"shell": "SH",
|
|
18
|
+
"zsh": "SH",
|
|
19
|
+
"python": "PY",
|
|
20
|
+
"py": "PY",
|
|
21
|
+
"rust": "RS",
|
|
22
|
+
"go": "GO",
|
|
23
|
+
"java": "JAVA",
|
|
24
|
+
"c": "C",
|
|
25
|
+
"cpp": "C++",
|
|
26
26
|
"c++": "C++",
|
|
27
|
-
swift: "SW",
|
|
28
|
-
kotlin: "KT",
|
|
29
|
-
yaml: "YAML",
|
|
30
|
-
yml: "YAML",
|
|
31
|
-
sql: "SQL"
|
|
27
|
+
"swift": "SW",
|
|
28
|
+
"kotlin": "KT",
|
|
29
|
+
"yaml": "YAML",
|
|
30
|
+
"yml": "YAML",
|
|
31
|
+
"sql": "SQL"
|
|
32
32
|
};
|
|
33
33
|
var languageToColorMap = {
|
|
34
|
-
javascript: "#f7df1e",
|
|
35
|
-
js: "#f7df1e",
|
|
36
|
-
typescript: "#3178c6",
|
|
37
|
-
ts: "#3178c6",
|
|
38
|
-
jsx: "#61dafb",
|
|
39
|
-
tsx: "#61dafb",
|
|
40
|
-
html: "#e34f26",
|
|
41
|
-
css: "#1572b6",
|
|
42
|
-
scss: "#cc6699",
|
|
43
|
-
json: "#f59e0b",
|
|
44
|
-
markdown: "#737373",
|
|
45
|
-
md: "#737373",
|
|
46
|
-
bash: "#4eaa25",
|
|
47
|
-
sh: "#4eaa25",
|
|
48
|
-
shell: "#4eaa25",
|
|
49
|
-
zsh: "#4eaa25",
|
|
50
|
-
python: "#3776ab",
|
|
51
|
-
py: "#3776ab",
|
|
52
|
-
rust: "#dea584",
|
|
53
|
-
go: "#00add8",
|
|
54
|
-
java: "#b07219",
|
|
55
|
-
c: "#a8b9cc",
|
|
56
|
-
cpp: "#00599c",
|
|
34
|
+
"javascript": "#f7df1e",
|
|
35
|
+
"js": "#f7df1e",
|
|
36
|
+
"typescript": "#3178c6",
|
|
37
|
+
"ts": "#3178c6",
|
|
38
|
+
"jsx": "#61dafb",
|
|
39
|
+
"tsx": "#61dafb",
|
|
40
|
+
"html": "#e34f26",
|
|
41
|
+
"css": "#1572b6",
|
|
42
|
+
"scss": "#cc6699",
|
|
43
|
+
"json": "#f59e0b",
|
|
44
|
+
"markdown": "#737373",
|
|
45
|
+
"md": "#737373",
|
|
46
|
+
"bash": "#4eaa25",
|
|
47
|
+
"sh": "#4eaa25",
|
|
48
|
+
"shell": "#4eaa25",
|
|
49
|
+
"zsh": "#4eaa25",
|
|
50
|
+
"python": "#3776ab",
|
|
51
|
+
"py": "#3776ab",
|
|
52
|
+
"rust": "#dea584",
|
|
53
|
+
"go": "#00add8",
|
|
54
|
+
"java": "#b07219",
|
|
55
|
+
"c": "#a8b9cc",
|
|
56
|
+
"cpp": "#00599c",
|
|
57
57
|
"c++": "#00599c",
|
|
58
|
-
swift: "#fa7343",
|
|
59
|
-
kotlin: "#7f52ff",
|
|
60
|
-
yaml: "#cb171e",
|
|
61
|
-
yml: "#cb171e",
|
|
62
|
-
sql: "#e38c00"
|
|
58
|
+
"swift": "#fa7343",
|
|
59
|
+
"kotlin": "#7f52ff",
|
|
60
|
+
"yaml": "#cb171e",
|
|
61
|
+
"yml": "#cb171e",
|
|
62
|
+
"sql": "#e38c00"
|
|
63
63
|
};
|
|
64
64
|
function normalizeLanguage(lang) {
|
|
65
65
|
if (!lang) return "text";
|
|
66
66
|
return lang.trim().toLowerCase() || "text";
|
|
67
67
|
}
|
|
68
|
+
var languageDisplayNames = {
|
|
69
|
+
typescript: "TypeScript",
|
|
70
|
+
javascript: "JavaScript",
|
|
71
|
+
python: "Python",
|
|
72
|
+
shell: "Shell",
|
|
73
|
+
bash: "Shell",
|
|
74
|
+
sh: "Shell",
|
|
75
|
+
zsh: "Shell",
|
|
76
|
+
rust: "Rust",
|
|
77
|
+
go: "Go",
|
|
78
|
+
swift: "Swift",
|
|
79
|
+
kotlin: "Kotlin",
|
|
80
|
+
java: "Java",
|
|
81
|
+
cpp: "C++",
|
|
82
|
+
csharp: "C#",
|
|
83
|
+
ruby: "Ruby",
|
|
84
|
+
markdown: "Markdown",
|
|
85
|
+
vue: "Vue",
|
|
86
|
+
dart: "Dart",
|
|
87
|
+
lua: "Lua",
|
|
88
|
+
diff: "Diff"
|
|
89
|
+
};
|
|
68
90
|
function getLanguageDisplayName(lang) {
|
|
69
91
|
if (lang === "text") return "TEXT";
|
|
70
|
-
return lang.toUpperCase();
|
|
92
|
+
return languageDisplayNames[lang] ?? lang.toUpperCase();
|
|
71
93
|
}
|
|
72
94
|
//#endregion
|
|
73
95
|
export { getLanguageDisplayName, languageToColorMap, languageToIconMap, normalizeLanguage };
|
|
@@ -96,6 +96,7 @@ var FileIcon = ({ filename, size = 16, className, fallback = "F" }) => {
|
|
|
96
96
|
//#region src/styles.css.ts
|
|
97
97
|
var semanticClassNames = {
|
|
98
98
|
card: "rr-code-card",
|
|
99
|
+
header: "rr-code-header",
|
|
99
100
|
lang: "rr-code-lang",
|
|
100
101
|
langIcon: "rr-code-lang-icon",
|
|
101
102
|
copyButton: "rr-code-copy",
|
|
@@ -110,20 +111,22 @@ var semanticClassNames = {
|
|
|
110
111
|
linedWithNumbers: "rr-code-lined-ln"
|
|
111
112
|
};
|
|
112
113
|
var card = "_1pn9r4q0";
|
|
113
|
-
var
|
|
114
|
-
var
|
|
115
|
-
var
|
|
116
|
-
var
|
|
117
|
-
var
|
|
118
|
-
var
|
|
119
|
-
var
|
|
120
|
-
var
|
|
121
|
-
var
|
|
122
|
-
var
|
|
123
|
-
var
|
|
124
|
-
var
|
|
125
|
-
var
|
|
126
|
-
var
|
|
114
|
+
var header = "_1pn9r4q1";
|
|
115
|
+
var langInput = "_1pn9r4q2";
|
|
116
|
+
var lang = "_1pn9r4q3";
|
|
117
|
+
var langMark = "_1pn9r4q4";
|
|
118
|
+
var langIcon = "_1pn9r4q5";
|
|
119
|
+
var copyButton = "_1pn9r4q6";
|
|
120
|
+
var bodyBackground = "_1pn9r4q7";
|
|
121
|
+
var bodyBackgroundStatic = "_1pn9r4q8 _1pn9r4q7";
|
|
122
|
+
var scroll = "_1pn9r4q9";
|
|
123
|
+
var scrollCollapsed = "_1pn9r4qa";
|
|
124
|
+
var body = "_1pn9r4qb";
|
|
125
|
+
var bodyReadonly = "_1pn9r4qc";
|
|
126
|
+
var expandWrap = "_1pn9r4qd";
|
|
127
|
+
var expandButton = "_1pn9r4qe";
|
|
128
|
+
var lined = "_1pn9r4qf";
|
|
129
|
+
var linedWithNumbers = "_1pn9r4qg";
|
|
127
130
|
//#endregion
|
|
128
131
|
//#region src/icons/language.tsx
|
|
129
132
|
/** Maps normalized language to material-icon-theme icon name. */
|
|
@@ -228,4 +231,4 @@ var LanguageIcon = ({ language, size = 14, className = `${langIcon} ${semanticCl
|
|
|
228
231
|
});
|
|
229
232
|
};
|
|
230
233
|
//#endregion
|
|
231
|
-
export {
|
|
234
|
+
export { getMaterialIconSvg as S, linedWithNumbers as _, bodyBackground as a, semanticClassNames as b, card as c, expandWrap as d, header as f, lined as g, langMark as h, body as i, copyButton as l, langInput as m, LanguageIcon as n, bodyBackgroundStatic as o, lang as p, hasLanguageIcon as r, bodyReadonly as s, LANG_TO_ICON as t, expandButton as u, scroll as v, FileIcon as x, scrollCollapsed as y };
|
package/dist/icons.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { x as FileIcon, t as LANG_TO_ICON, n as LanguageIcon, S as getMaterialIconSvg, r as hasLanguageIcon } from "./icons-C6NXwMKM.js";
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getLanguageDisplayName, languageToColorMap, normalizeLanguage } from "./constants.mjs";
|
|
2
|
-
import { a as bodyBackground,
|
|
2
|
+
import { a as bodyBackground, b as semanticClassNames, c as card, f as header, i as body, l as copyButton, m as langInput, n as LanguageIcon, o as bodyBackgroundStatic, p as lang, r as hasLanguageIcon, v as scroll } from "./icons-C6NXwMKM.js";
|
|
3
3
|
import { CodeBlockRenderer } from "./static.mjs";
|
|
4
4
|
import { defaultKeymap, history, historyKeymap, indentWithTab } from "@codemirror/commands";
|
|
5
5
|
import { Compartment, EditorSelection, EditorState, Prec } from "@codemirror/state";
|
|
@@ -12,8 +12,8 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
12
12
|
import { Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList } from "@haklex/rich-editor-ui";
|
|
13
13
|
import { bundledLanguagesInfo } from "shiki/bundle/full";
|
|
14
14
|
//#region src/CodeBlockCard.tsx
|
|
15
|
-
var CopyIcon = /* @__PURE__ */ jsx(Copy, { size:
|
|
16
|
-
var CheckIcon = /* @__PURE__ */ jsx(Check, { size:
|
|
15
|
+
var CopyIcon = /* @__PURE__ */ jsx(Copy, { size: 14 });
|
|
16
|
+
var CheckIcon = /* @__PURE__ */ jsx(Check, { size: 14 });
|
|
17
17
|
var ExpandIcon = /* @__PURE__ */ jsx(ChevronDown, { size: 14 });
|
|
18
18
|
function CodeBlockCard({ code, language, collapsible = true, langSlot, children, static: staticMode = false }) {
|
|
19
19
|
const normalizedLanguage = normalizeLanguage(language);
|
|
@@ -22,6 +22,8 @@ function CodeBlockCard({ code, language, collapsible = true, langSlot, children,
|
|
|
22
22
|
const [isCollapsed, setIsCollapsed] = useState(true);
|
|
23
23
|
const [isOverflow, setIsOverflow] = useState(false);
|
|
24
24
|
const scrollRef = useRef(null);
|
|
25
|
+
const lineCount = useMemo(() => code.split("\n").length, [code]);
|
|
26
|
+
const gutterStyle = useMemo(() => ({ "--rc-ln-digits": Math.max(2, String(lineCount).length) }), [lineCount]);
|
|
25
27
|
useEffect(() => {
|
|
26
28
|
if (!collapsible) {
|
|
27
29
|
setIsOverflow(false);
|
|
@@ -47,32 +49,38 @@ function CodeBlockCard({ code, language, collapsible = true, langSlot, children,
|
|
|
47
49
|
}).catch(() => {});
|
|
48
50
|
}, [code]);
|
|
49
51
|
const languageLabel = getLanguageDisplayName(normalizedLanguage);
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
+
const languageColor = languageToColorMap[normalizedLanguage] || "#737373";
|
|
53
|
+
const isCollapsedOverflow = collapsible && isCollapsed && isOverflow;
|
|
52
54
|
const scrollClassName = [
|
|
53
55
|
scroll,
|
|
54
56
|
semanticClassNames.scroll,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
isCollapsedOverflow && "_1pn9r4qa",
|
|
58
|
+
isCollapsedOverflow && semanticClassNames.scrollCollapsed
|
|
57
59
|
].filter(Boolean).join(" ");
|
|
58
60
|
return /* @__PURE__ */ jsxs("div", {
|
|
59
61
|
className: `${card} ${semanticClassNames.card}`,
|
|
60
|
-
|
|
62
|
+
"data-chrome": "bar",
|
|
63
|
+
style: gutterStyle,
|
|
61
64
|
children: [
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
65
|
+
/* @__PURE__ */ jsxs("div", {
|
|
66
|
+
className: `${header} ${semanticClassNames.header}`,
|
|
67
|
+
children: [langSlot ?? /* @__PURE__ */ jsxs("div", {
|
|
68
|
+
className: `_1pn9r4q3 ${semanticClassNames.lang}`,
|
|
69
|
+
children: [normalizedLanguage !== "text" && (hasLanguageIcon(normalizedLanguage) ? /* @__PURE__ */ jsx(LanguageIcon, {
|
|
70
|
+
language: normalizedLanguage,
|
|
71
|
+
size: 14
|
|
72
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
73
|
+
"aria-hidden": true,
|
|
74
|
+
className: "_1pn9r4q4",
|
|
75
|
+
style: { backgroundColor: languageColor }
|
|
76
|
+
})), normalizedLanguage !== "text" && /* @__PURE__ */ jsx("span", { children: languageLabel })]
|
|
77
|
+
}), /* @__PURE__ */ jsxs("button", {
|
|
78
|
+
"aria-label": copied ? "Copied" : "Copy code",
|
|
79
|
+
className: `${copyButton} ${semanticClassNames.copyButton}`,
|
|
80
|
+
type: "button",
|
|
81
|
+
onClick: handleCopy,
|
|
82
|
+
children: [copied ? CheckIcon : CopyIcon, /* @__PURE__ */ jsx("span", { children: copied ? "Copied" : "Copy" })]
|
|
83
|
+
})]
|
|
76
84
|
}),
|
|
77
85
|
/* @__PURE__ */ jsxs("div", {
|
|
78
86
|
className: `${staticMode ? bodyBackgroundStatic : bodyBackground} ${semanticClassNames.bodyBackground}`,
|
|
@@ -80,15 +88,16 @@ function CodeBlockCard({ code, language, collapsible = true, langSlot, children,
|
|
|
80
88
|
className: scrollClassName,
|
|
81
89
|
ref: scrollRef,
|
|
82
90
|
children
|
|
83
|
-
}),
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
className: `_1pn9r4qc ${semanticClassNames.expandButton}`,
|
|
87
|
-
type: "button",
|
|
88
|
-
onClick: () => setIsCollapsed(false),
|
|
89
|
-
children: [ExpandIcon, /* @__PURE__ */ jsx("span", { children: "展开" })]
|
|
90
|
-
})
|
|
91
|
+
}), isCollapsedOverflow && /* @__PURE__ */ jsx("div", {
|
|
92
|
+
"aria-hidden": true,
|
|
93
|
+
className: `_1pn9r4qd ${semanticClassNames.expandWrap}`
|
|
91
94
|
})]
|
|
95
|
+
}),
|
|
96
|
+
isCollapsedOverflow && /* @__PURE__ */ jsxs("button", {
|
|
97
|
+
className: `_1pn9r4qe ${semanticClassNames.expandButton}`,
|
|
98
|
+
type: "button",
|
|
99
|
+
onClick: () => setIsCollapsed(false),
|
|
100
|
+
children: [/* @__PURE__ */ jsx("span", { children: `Expand all · ${lineCount} lines` }), ExpandIcon]
|
|
92
101
|
})
|
|
93
102
|
]
|
|
94
103
|
});
|
|
@@ -143,8 +152,8 @@ function LanguageCombobox({ language, onLanguageChange }) {
|
|
|
143
152
|
e.stopPropagation();
|
|
144
153
|
}
|
|
145
154
|
}), /* @__PURE__ */ jsxs(ComboboxContent, {
|
|
146
|
-
align: "
|
|
147
|
-
side: "
|
|
155
|
+
align: "start",
|
|
156
|
+
side: "bottom",
|
|
148
157
|
sideOffset: 8,
|
|
149
158
|
children: [/* @__PURE__ */ jsx(ComboboxEmpty, { children: "No languages found." }), /* @__PURE__ */ jsx(ComboboxList, { children: (item) => /* @__PURE__ */ jsxs(ComboboxItem, {
|
|
150
159
|
value: item,
|
|
@@ -167,7 +176,7 @@ function stopHandledEvent(event) {
|
|
|
167
176
|
var CodeBlockEditRenderer = ({ code, language, showLineNumbers: showLineNumbersProp, editable = false, selected = false, cursorPlacement = "start", onCodeChange, onLanguageChange, onDelete, onExitBlock }) => {
|
|
168
177
|
const variant = useVariant();
|
|
169
178
|
const colorScheme = useColorScheme();
|
|
170
|
-
const showLineNumbers = showLineNumbersProp ?? variant !== "comment";
|
|
179
|
+
const showLineNumbers = showLineNumbersProp ?? (variant !== "comment" && variant !== "chat");
|
|
171
180
|
const normalizedLanguage = normalizeLanguage(language);
|
|
172
181
|
const [mounted, setMounted] = useState(false);
|
|
173
182
|
const containerRef = useRef(null);
|
|
@@ -310,15 +319,15 @@ var CodeBlockEditRenderer = ({ code, language, showLineNumbers: showLineNumbersP
|
|
|
310
319
|
]);
|
|
311
320
|
const fallbackLines = useMemo(() => code.split("\n"), [code]);
|
|
312
321
|
const fallbackClassName = [
|
|
313
|
-
showLineNumbers && "
|
|
322
|
+
showLineNumbers && "_1pn9r4qf",
|
|
314
323
|
showLineNumbers && semanticClassNames.lined,
|
|
315
|
-
showLineNumbers && "
|
|
324
|
+
showLineNumbers && "_1pn9r4qg",
|
|
316
325
|
showLineNumbers && semanticClassNames.linedWithNumbers
|
|
317
326
|
].filter(Boolean).join(" ");
|
|
318
327
|
const bodyClassName = [
|
|
319
328
|
body,
|
|
320
329
|
semanticClassNames.body,
|
|
321
|
-
!editable && "
|
|
330
|
+
!editable && "_1pn9r4qc",
|
|
322
331
|
!editable && semanticClassNames.bodyReadonly
|
|
323
332
|
].filter(Boolean).join(" ");
|
|
324
333
|
return /* @__PURE__ */ jsxs(CodeBlockCard, {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
:root{--rc-text:#000;--rc-text-secondary:#262626;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#f5f5f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-hr-border:#e5e5e5;--rc-quote-border:#2563eb;--rc-quote-bg:#f5f5f5;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-line-height:1.7;--rc-line-height-tight:1.4;--rc-font-family:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}:root.dark,[data-theme=dark]{--rc-text:#fafafa;--rc-text-secondary:#a3a3a3;--rc-text-tertiary:#737373;--rc-text-quaternary:#525252;--rc-bg:#0a0a0a;--rc-bg-secondary:#171717;--rc-bg-tertiary:#262626;--rc-fill:#2a2a2a;--rc-fill-secondary:#222;--rc-fill-tertiary:#1a1a1a;--rc-fill-quaternary:#141414;--rc-border:#262626;--rc-accent:#60a5fa;--rc-accent-light:#60a5fa20;--rc-link:#60a5fa;--rc-code-text:#d4d4d4;--rc-code-bg:#262626;--rc-hr-border:#262626;--rc-quote-border:#60a5fa;--rc-quote-bg:#262626;--rc-alert-info:#7db9e5;--rc-alert-warning:#da864a;--rc-alert-tip:#54da48;--rc-alert-caution:#e16973;--rc-alert-important:#9966e0;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006}.axx50{--rc-text:#000;--rc-text-secondary:#262626;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#f5f5f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-hr-border:#e5e5e5;--rc-quote-border:#2563eb;--rc-quote-bg:#f5f5f5;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-line-height:1.7;--rc-line-height-tight:1.4;--rc-font-family:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}.axx51{--rc-text:#000;--rc-text-secondary:#262626;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#f5f5f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-hr-border:#e5e5e5;--rc-quote-border:#2563eb;--rc-quote-bg:#f5f5f5;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-line-height:1.8;--rc-line-height-tight:1.4;--rc-font-family:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}.axx52{--rc-text:#000;--rc-text-secondary:#262626;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#f5f5f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-hr-border:#e5e5e5;--rc-quote-border:#a3a3a3;--rc-quote-bg:#fafafa;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:none;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:2px;--rc-space-sm:4px;--rc-space-md:10px;--rc-space-lg:16px;--rc-space-xl:20px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:14px;--rc-font-size-small:12px;--rc-line-height:1.5;--rc-line-height-tight:1.3;--rc-font-family:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm:3px;--rc-radius-md:6px;--rc-radius-lg:12px}.dark .axx50,[data-theme=dark] .axx50,.dark.axx50,[data-theme=dark].axx50,.dark .axx51,[data-theme=dark] .axx51,.dark.axx51,[data-theme=dark].axx51,.dark .axx52,[data-theme=dark] .axx52,.dark.axx52,[data-theme=dark].axx52{--rc-text:#fafafa;--rc-text-secondary:#a3a3a3;--rc-text-tertiary:#737373;--rc-text-quaternary:#525252;--rc-bg:#0a0a0a;--rc-bg-secondary:#171717;--rc-bg-tertiary:#262626;--rc-fill:#2a2a2a;--rc-fill-secondary:#222;--rc-fill-tertiary:#1a1a1a;--rc-fill-quaternary:#141414;--rc-border:#262626;--rc-accent:#60a5fa;--rc-accent-light:#60a5fa20;--rc-link:#60a5fa;--rc-code-text:#d4d4d4;--rc-code-bg:#262626;--rc-hr-border:#262626;--rc-quote-border:#60a5fa;--rc-quote-bg:#262626;--rc-alert-info:#7db9e5;--rc-alert-warning:#da864a;--rc-alert-tip:#54da48;--rc-alert-caution:#e16973;--rc-alert-important:#9966e0;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006}._1pn9r4q0{--rr-code-accent:#737373;min-width:0;max-width:100%;font-size:var(--rc-font-size-md);font-family:var(--rc-font-mono);border-radius:.5rem;margin:1.5rem 0;position:relative;overflow:hidden}._1pn9r4q1{-webkit-appearance:none;appearance:none;color:inherit;font:inherit;opacity:1;background:0 0;border:none;outline:none;width:8em;padding:0}._1pn9r4q1::placeholder{opacity:.5}._1pn9r4q2{z-index:1;font-size:var(--rc-font-size-md);opacity:.6;pointer-events:none;align-items:center;gap:.375rem;display:flex;position:absolute;bottom:.75rem;right:.75rem}._1pn9r4q2:has(._1pn9r4q1){pointer-events:auto}._1pn9r4q3{flex-shrink:0;display:inline-flex}._1pn9r4q3 svg{width:100%;height:100%}._1pn9r4q4{-webkit-appearance:none;appearance:none;z-index:3;border:1px solid color-mix(in srgb, var(--rr-code-accent) 5%, transparent);background:color-mix(in srgb, var(--rr-code-accent) 80%, transparent);color:#fff;cursor:pointer;opacity:0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:.375rem;justify-content:center;align-items:center;padding:.375rem;transition:opacity .2s;display:flex;position:absolute;top:.5rem;right:.5rem}._1pn9r4q0:hover ._1pn9r4q4{opacity:1}._1pn9r4q5{background:color-mix(in srgb, var(--rr-code-accent) 5%, transparent);padding:0;position:relative}._1pn9r4q6{padding-block-start:12px;padding-block-end:12px}._1pn9r4q7{width:100%;min-width:0;max-width:100%;position:relative;overflow:auto}._1pn9r4q8{max-height:50vh;overflow:hidden}._1pn9r4q9{min-width:0;max-width:100%;position:relative;overflow:auto;background-color:#0000!important}._1pn9r4q9 .cm-editor{color:var(--rc-text);font-family:var(--rc-font-mono);background:0 0}._1pn9r4q9 .cm-scroller{line-height:1.6;font-family:var(--rc-font-mono)!important}._1pn9r4q9 .cm-content{min-height:1.6em;padding:0 1.25rem}._1pn9r4q9:has(.cm-gutters) .cm-content{padding-left:.5rem;padding-right:1.25rem}._1pn9r4q9 .cm-line{padding:0}._1pn9r4q9 .cm-gutters{border-right:none;padding-left:1.25rem}._1pn9r4q9 .cm-lineNumbers .cm-gutterElement{text-align:right;min-width:3em;padding-right:2em;color:color-mix(in srgb, var(--rc-text-secondary) 40%, transparent)!important}._1pn9r4q9>.shikicode.output{position:static!important;top:auto!important;bottom:auto!important;left:auto!important;right:auto!important}._1pn9r4qa>textarea.shikicode{display:none}._1pn9r4qb{background:linear-gradient(to bottom, transparent 0%, var(--bg,var(--rc-bg-secondary)) 80%);pointer-events:none;justify-content:center;padding:.5rem 0 .75rem;display:flex;position:absolute;bottom:0;left:0;right:0}._1pn9r4qc{-webkit-appearance:none;appearance:none;cursor:pointer;font-size:var(--rc-font-size-xs);color:inherit;opacity:.7;pointer-events:auto;background:0 0;border:none;align-items:center;gap:.5rem;display:flex}._1pn9r4qc:hover{opacity:1}._1pn9r4q0 .shikicode.input,._1pn9r4q0 .shikicode.output,._1pn9r4q0 .shikicode.output code,._1pn9r4q0 .shikicode.output .line,._1pn9r4q0 .shikicode.output .line span{font-variant-ligatures:none;font-kerning:none}._1pn9r4q0 .shikicode.input,._1pn9r4q0 .shikicode.output,._1pn9r4q9 pre,._1pn9r4q9 code,._1pn9r4q9 .line,._1pn9r4q9 .line span{font-family:var(--rc-font-mono)!important}._1pn9r4q0 pre{border-radius:0;max-width:100%;font-size:1em;overflow:auto;margin:0!important;padding:0!important}._1pn9r4q0 pre code{flex-direction:column;display:flex;font-family:var(--rc-font-mono)!important}._1pn9r4q0 .shiki,._1pn9r4q0 code,._1pn9r4q0 pre{background:0 0!important}[data-theme=dark] ._1pn9r4q0 .shiki-themes,[data-theme=dark] ._1pn9r4q0 .shiki-themes span{color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;-webkit-text-decoration:var(--shiki-dark-text-decoration)!important;text-decoration:var(--shiki-dark-text-decoration)!important}._1pn9r4q9:has(.shikicode.input.line-numbers) .shikicode.output .line:before{width:5em;padding-right:2em;color:color-mix(in srgb, var(--rc-text-secondary) 40%, transparent)!important;background-color:#0000!important}._1pn9r4q9:not(:has(.shikicode.input.line-numbers)) .shikicode.output .line:before{display:none}._1pn9r4q0 .line{padding:0 1.25rem;display:block}._1pn9r4q0 .shikicode.input.line-numbers{padding-left:calc(5em + 1.25rem)}._1pn9r4q0 .shikicode.input:not(.line-numbers){padding-left:1.25rem}._1pn9r4q0 .line>span:last-child{margin-right:1.25rem}._1pn9r4q0 .line:after{content:" "}._1pn9r4q0 .highlighted,._1pn9r4q0 .diff{overflow-wrap:break-word;position:relative}._1pn9r4q0 .highlighted:before,._1pn9r4q0 .diff:before{content:"";width:2px;height:100%;position:absolute;top:0;left:0}._1pn9r4q0 .highlighted{background:color-mix(in srgb, var(--rr-code-accent) 20%, transparent)}._1pn9r4q0 .highlighted:before{background:var(--rr-code-accent)}._1pn9r4q0 .diff.add{background:#22c55e26}._1pn9r4q0 .diff.add:before{background:#22c55e}._1pn9r4q0 .diff.add:after{content:" +";color:#22c55e;position:absolute;left:0}._1pn9r4q0 .diff.remove{background:#ef444426}._1pn9r4q0 .diff.remove:before{background:#ef4444}._1pn9r4q0 .diff.remove:after{content:" -";color:#ef4444;position:absolute;left:0}._1pn9r4qd{counter-reset:shiki-line 0}._1pn9r4qd .line{counter-increment:shiki-line 1}._1pn9r4qd .line:before{content:counter(shiki-line);color:#0000;text-align:right;box-sizing:border-box;width:2em;display:inline-block;position:sticky;left:0}._1pn9r4qe .line:before{color:inherit;opacity:.4;width:5em;padding-right:2em}._1pn9r4q7 pre::-webkit-scrollbar-track{margin-left:1rem;margin-right:var(--sr-margin,0)}._1pn9r4q7 pre::-webkit-scrollbar{background-color:#0000!important}._1pn9r4qf{font-family:var(--rc-font-mono);font-size:var(--rc-font-size-md);background-color:var(--rc-code-bg);border-radius:var(--rc-radius-md);margin:var(--rc-space-md) 0;border:1px solid var(--rc-border);overflow:hidden}._1pn9r4qg{padding:var(--rc-space-sm) var(--rc-space-md);border-bottom:1px solid var(--rc-border);font-family:var(--rc-font-family-sans);font-size:var(--rc-font-size-md);color:var(--rc-text-secondary);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;display:flex}._1pn9r4qh{font-family:var(--rc-font-mono);text-transform:uppercase;letter-spacing:.05em;font-size:.85em}._1pn9r4qi{-webkit-appearance:none;appearance:none;color:var(--rc-text-secondary);cursor:pointer;padding:var(--rc-space-xs) var(--rc-space-sm);border-radius:var(--rc-radius-sm);font-family:var(--rc-font-family);font-size:var(--rc-font-size-md);background:0 0;border:none;line-height:1;transition:color .15s,background-color .15s}.rich-code-block{font-family:var(--rc-font-mono);font-size:var(--rc-font-size-md);background-color:var(--rc-code-bg);border-radius:var(--rc-radius-md);margin:var(--rc-space-md) 0;border:1px solid var(--rc-border);overflow:hidden}.rich-code-block pre{padding:var(--rc-space-md);margin:0;overflow-x:auto}.rich-code-block code{font-family:inherit;font-size:inherit;color:inherit;background:0 0;border:none;padding:0}.rich-code-block-header{padding:var(--rc-space-sm) var(--rc-space-md);border-bottom:1px solid var(--rc-border);font-family:var(--rc-font-family-sans);font-size:var(--rc-font-size-md);color:var(--rc-text-secondary);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;display:flex}.rich-code-block-lang{font-family:var(--rc-font-mono);text-transform:uppercase;letter-spacing:.05em;font-size:.85em}.rich-code-block-copy{-webkit-appearance:none;appearance:none;color:var(--rc-text-secondary);cursor:pointer;padding:var(--rc-space-xs) var(--rc-space-sm);border-radius:var(--rc-radius-sm);font-family:var(--rc-font-family);font-size:var(--rc-font-size-md);background:0 0;border:none;line-height:1;transition:color .15s,background-color .15s}.rich-code-block-copy:hover{color:var(--rc-text);background-color:var(--rc-fill-secondary)}.rich-code-block-numbered pre{counter-reset:line}.rich-code-block-numbered .line{counter-increment:line}.rich-code-block-numbered .line:before{content:counter(line);width:2.5em;margin-right:var(--rc-space-md);text-align:right;opacity:.4;-webkit-user-select:none;user-select:none;font-size:var(--rc-font-size-md);display:inline-block;color:color-mix(in srgb, var(--rc-text-secondary) 40%, transparent)!important}
|
|
1
|
+
:root{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#f5f5f5;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-flow-paragraph:1.25em;--rc-flow-list:.375em;--rc-flow-block:2em;--rc-flow-heading:2em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-font-size-code:.8125em;--rc-font-size-caption:.8125em;--rc-line-height:1.75;--rc-line-height-tight:1.35;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--rc-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}:root.dark,[data-theme=dark]{--rc-text:#ededed;--rc-text-secondary:#c2c2c2;--rc-text-tertiary:#8a8a8a;--rc-text-quaternary:#525252;--rc-bg:#0a0a0a;--rc-bg-secondary:#171717;--rc-bg-tertiary:#262626;--rc-fill:#2a2a2a;--rc-fill-secondary:#222;--rc-fill-tertiary:#1a1a1a;--rc-fill-quaternary:#141414;--rc-border:#2e2e2e;--rc-border-subtle:#1f1f1f;--rc-accent:#60a5fa;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#60a5fa;--rc-code-text:#d4d4d4;--rc-code-bg:#1a1a1a;--rc-code-header-bg:#212121;--rc-hr-border:#2e2e2e;--rc-quote-border:color-mix(in oklab, var(--rc-text) 22%, transparent);--rc-quote-bg:#262626;--rc-alert-info:#7aa7e0;--rc-alert-warning:#e0a458;--rc-alert-tip:#6cbf8f;--rc-alert-caution:#ef7d7d;--rc-alert-important:#a78bfa;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006}.axx50{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#f5f5f5;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-flow-paragraph:1.25em;--rc-flow-list:.375em;--rc-flow-block:2em;--rc-flow-heading:2em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-font-size-code:.8125em;--rc-font-size-caption:.8125em;--rc-line-height:1.75;--rc-line-height-tight:1.35;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--rc-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}.axx51{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#f5f5f5;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-flow-paragraph:.5em;--rc-flow-list:.375em;--rc-flow-block:2em;--rc-flow-heading:2em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-font-size-code:.8125em;--rc-font-size-caption:.8125em;--rc-line-height:1.85;--rc-line-height-tight:1.35;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--rc-font-family:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}.axx52{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#fafafa;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:none;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:2px;--rc-space-sm:4px;--rc-space-md:10px;--rc-space-lg:16px;--rc-space-xl:20px;--rc-flow-paragraph:.6em;--rc-flow-list:.25em;--rc-flow-block:1em;--rc-flow-heading:1em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:14px;--rc-font-size-small:12px;--rc-font-size-code:.9286em;--rc-font-size-caption:.9286em;--rc-line-height:1.6;--rc-line-height-tight:1.3;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--rc-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-radius-sm:3px;--rc-radius-md:6px;--rc-radius-lg:12px}.axx53{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#fafafa;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:none;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-flow-paragraph:.75em;--rc-flow-list:.25em;--rc-flow-block:1em;--rc-flow-heading:1em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:15px;--rc-font-size-small:13px;--rc-font-size-code:.8667em;--rc-font-size-caption:.8667em;--rc-line-height:1.65;--rc-line-height-tight:1.3;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--rc-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}.dark .axx50,[data-theme=dark] .axx50,.dark.axx50,[data-theme=dark].axx50,.dark .axx51,[data-theme=dark] .axx51,.dark.axx51,[data-theme=dark].axx51,.dark .axx52,[data-theme=dark] .axx52,.dark.axx52,[data-theme=dark].axx52,.dark .axx53,[data-theme=dark] .axx53,.dark.axx53,[data-theme=dark].axx53{--rc-text:#ededed;--rc-text-secondary:#c2c2c2;--rc-text-tertiary:#8a8a8a;--rc-text-quaternary:#525252;--rc-bg:#0a0a0a;--rc-bg-secondary:#171717;--rc-bg-tertiary:#262626;--rc-fill:#2a2a2a;--rc-fill-secondary:#222;--rc-fill-tertiary:#1a1a1a;--rc-fill-quaternary:#141414;--rc-border:#2e2e2e;--rc-border-subtle:#1f1f1f;--rc-accent:#60a5fa;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#60a5fa;--rc-code-text:#d4d4d4;--rc-code-bg:#1a1a1a;--rc-code-header-bg:#212121;--rc-hr-border:#2e2e2e;--rc-quote-border:color-mix(in oklab, var(--rc-text) 22%, transparent);--rc-quote-bg:#262626;--rc-alert-info:#7aa7e0;--rc-alert-warning:#e0a458;--rc-alert-tip:#6cbf8f;--rc-alert-caution:#ef7d7d;--rc-alert-important:#a78bfa;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006}._1pn9r4q0{min-width:0;max-width:100%;margin:var(--rc-flow-block) 0;border-radius:var(--rc-radius-md);border:1px solid var(--rc-border);background-color:var(--rc-code-bg);color:var(--rc-text);font-size:var(--rc-font-size-code);font-family:var(--rc-font-mono);line-height:var(--rc-line-height-code);position:relative;overflow:hidden}._1pn9r4q1{background-color:var(--rc-code-header-bg);border-bottom:1px solid var(--rc-border);height:36px;font-family:var(--rc-font-family-sans);color:var(--rc-text-tertiary);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:.75rem;padding:0 6px 0 14px;font-size:12px;line-height:1;display:flex}._1pn9r4q2{-webkit-appearance:none;appearance:none;color:inherit;font:inherit;opacity:1;background:0 0;border:none;outline:none;width:8em;padding:0}._1pn9r4q2::placeholder{opacity:.5}._1pn9r4q3{white-space:nowrap;align-items:center;gap:8px;min-width:0;display:flex}._1pn9r4q4{border-radius:3px;flex-shrink:0;width:10px;height:10px}._1pn9r4q5{flex-shrink:0;display:inline-flex}._1pn9r4q5 svg{width:100%;height:100%}._1pn9r4q6{-webkit-appearance:none;appearance:none;color:var(--rc-text-tertiary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;padding:6px 8px;transition:color .15s,background-color .15s;display:inline-flex}._1pn9r4q6:hover{color:var(--rc-text);background-color:var(--rc-fill)}._1pn9r4q7{padding:0;position:relative}._1pn9r4q8{padding-block-start:12px;padding-block-end:12px}._1pn9r4q9{width:100%;min-width:0;max-width:100%;position:relative;overflow:auto}._1pn9r4qa{max-height:50vh;overflow:hidden}._1pn9r4qb{min-width:0;max-width:100%;position:relative;overflow:auto;background-color:#0000!important}._1pn9r4qb .cm-editor{color:var(--rc-text);font-family:var(--rc-font-mono);background:0 0}._1pn9r4qb .cm-scroller{line-height:var(--rc-line-height-code);padding-block-start:12px;padding-block-end:12px;font-family:var(--rc-font-mono)!important}._1pn9r4qb .cm-content{min-height:calc(1em * var(--rc-line-height-code));padding:0 16px}._1pn9r4qb:has(.cm-gutters) .cm-content{padding-left:0;padding-right:16px}._1pn9r4qb .cm-line{padding:0}._1pn9r4qb .cm-gutters{background-color:#0000;border-right:none;padding-left:16px}._1pn9r4qb .cm-lineNumbers .cm-gutterElement{min-width:calc(var(--rc-ln-digits,2) * 1ch);text-align:right;padding:0 16px 0 0;color:var(--rc-text-quaternary)!important}._1pn9r4qb>.shikicode.output{position:static!important;top:auto!important;bottom:auto!important;left:auto!important;right:auto!important}._1pn9r4qc>textarea.shikicode{display:none}._1pn9r4qd{background:linear-gradient(to bottom, transparent, var(--rc-code-bg));pointer-events:none;height:56px;position:absolute;bottom:0;left:0;right:0}._1pn9r4qe{-webkit-appearance:none;appearance:none;border:none;border-top:1px solid var(--rc-border);background:var(--rc-code-bg);width:100%;height:32px;color:var(--rc-text-tertiary);font-family:var(--rc-font-family-sans);cursor:pointer;justify-content:center;align-items:center;gap:6px;font-size:12px;display:flex}._1pn9r4qe:hover{color:var(--rc-text)}._1pn9r4q0 .shikicode.input,._1pn9r4q0 .shikicode.output,._1pn9r4q0 .shikicode.output code,._1pn9r4q0 .shikicode.output .line,._1pn9r4q0 .shikicode.output .line span{font-variant-ligatures:none;font-kerning:none}._1pn9r4q0 .shikicode.input,._1pn9r4q0 .shikicode.output,._1pn9r4qb pre,._1pn9r4qb code,._1pn9r4qb .line,._1pn9r4qb .line span{font-family:var(--rc-font-mono)!important}._1pn9r4q0 pre{border-radius:0;max-width:100%;font-size:1em;overflow:auto;margin:0!important;padding:0!important}._1pn9r4q0 ._1pn9r4q9>pre{padding:12px 0!important}._1pn9r4q0 pre code{flex-direction:column;display:flex;font-family:var(--rc-font-mono)!important}._1pn9r4q0 .shiki,._1pn9r4q0 code,._1pn9r4q0 pre{background:0 0!important}[data-theme=dark] ._1pn9r4q0 .shiki-themes,[data-theme=dark] ._1pn9r4q0 .shiki-themes span{color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;-webkit-text-decoration:var(--shiki-dark-text-decoration)!important;text-decoration:var(--shiki-dark-text-decoration)!important}._1pn9r4qb:has(.shikicode.input.line-numbers) .shikicode.output .line:before{min-width:calc(var(--rc-ln-digits,2) * 1ch);padding-right:16px;color:var(--rc-text-quaternary)!important;background-color:#0000!important}._1pn9r4qb:not(:has(.shikicode.input.line-numbers)) .shikicode.output .line:before{display:none}._1pn9r4q0 .line{padding:0 16px;display:block}._1pn9r4q0 .shikicode.input.line-numbers{padding-left:calc(2ch + 32px)}._1pn9r4q0 .shikicode.input:not(.line-numbers){padding-left:16px}._1pn9r4q0 .line>span:last-child{margin-right:16px}._1pn9r4q0 .line:after{content:" "}._1pn9r4q0 .highlighted,._1pn9r4q0 .diff{overflow-wrap:break-word;position:relative}._1pn9r4q0 .highlighted:before,._1pn9r4q0 .diff:before{content:"";width:2px;height:100%;position:absolute;top:0;left:0}._1pn9r4q0 .highlighted{background:color-mix(in oklab, var(--rc-accent) 8%, transparent)}._1pn9r4q0 .highlighted:before{background:var(--rc-accent)}._1pn9r4q0 .diff.add{background:#22c55e26}._1pn9r4q0 .diff.add:before{background:#22c55e}._1pn9r4q0 .diff.add:after{content:" +";color:#22c55e;position:absolute;left:0}._1pn9r4q0 .diff.remove{background:#ef444426}._1pn9r4q0 .diff.remove:before{background:#ef4444}._1pn9r4q0 .diff.remove:after{content:" -";color:#ef4444;position:absolute;left:0}._1pn9r4qf{counter-reset:shiki-line 0}._1pn9r4qf .line{counter-increment:shiki-line 1}._1pn9r4qf .line:before{content:counter(shiki-line);color:#0000;text-align:right;box-sizing:content-box;min-width:calc(var(--rc-ln-digits,2) * 1ch);display:inline-block;position:sticky;left:0}._1pn9r4qg .line:before{color:var(--rc-text-quaternary);min-width:calc(var(--rc-ln-digits,2) * 1ch);padding-right:16px}._1pn9r4q9 pre::-webkit-scrollbar-track{margin-left:1rem;margin-right:var(--sr-margin,0)}._1pn9r4q9 pre::-webkit-scrollbar{background-color:#0000!important}._1pn9r4qh{font-family:var(--rc-font-mono);font-size:var(--rc-font-size-code);line-height:var(--rc-line-height-code);color:var(--rc-text);background-color:var(--rc-code-bg);border-radius:var(--rc-radius-md);margin:var(--rc-flow-block) 0;border:1px solid var(--rc-border);display:block;overflow:hidden}._1pn9r4qi{background-color:var(--rc-code-header-bg);border-bottom:1px solid var(--rc-border);height:36px;font-family:var(--rc-font-family-sans);color:var(--rc-text-tertiary);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:0 6px 0 14px;font-size:12px;line-height:1;display:flex}._1pn9r4qj{font-family:inherit}._1pn9r4qk{-webkit-appearance:none;appearance:none;color:var(--rc-text-tertiary);cursor:pointer;font-family:inherit;font-size:inherit;background:0 0;border:none;border-radius:6px;padding:6px 8px;line-height:1;transition:color .15s,background-color .15s}.rich-code-block{font-family:var(--rc-font-mono);font-size:var(--rc-font-size-code);line-height:var(--rc-line-height-code);color:var(--rc-text);background-color:var(--rc-code-bg);border-radius:var(--rc-radius-md);margin:var(--rc-flow-block) 0;border:1px solid var(--rc-border);display:block;overflow:hidden}.rich-code-block pre{margin:0;padding:12px 16px;overflow-x:auto}pre.rich-code-block,code.rich-code-block{white-space:pre;margin:0;padding:12px 16px;overflow-x:auto}.rich-code-block code{font-family:inherit;font-size:inherit;box-shadow:none;color:inherit;background:0 0;border:none;padding:0}.rich-code-block-header{background-color:var(--rc-code-header-bg);border-bottom:1px solid var(--rc-border);height:36px;font-family:var(--rc-font-family-sans);color:var(--rc-text-tertiary);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:0 6px 0 14px;font-size:12px;line-height:1;display:flex}.rich-code-block-lang{font-family:inherit}.rich-code-block-copy{-webkit-appearance:none;appearance:none;color:var(--rc-text-tertiary);cursor:pointer;font-family:inherit;font-size:inherit;background:0 0;border:none;border-radius:6px;padding:6px 8px;line-height:1;transition:color .15s,background-color .15s}.rich-code-block-copy:hover{color:var(--rc-text);background-color:var(--rc-fill)}.rich-code-block-numbered pre{counter-reset:line}.rich-code-block-numbered .line{counter-increment:line}.rich-code-block-numbered .line:before{content:counter(line);min-width:calc(var(--rc-ln-digits,2) * 1ch);text-align:right;-webkit-user-select:none;user-select:none;margin-right:16px;display:inline-block;color:var(--rc-text-quaternary)!important}
|
|
2
2
|
/*$vite$:1*/
|
package/dist/static.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../src/static.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../src/static.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,sBAAsB,CAUnE,CAAC"}
|
package/dist/static.mjs
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { useVariant } from "@haklex/rich-editor/static";
|
|
1
2
|
import { jsx } from "react/jsx-runtime";
|
|
2
3
|
import { CodeBlock } from "@haklex/rich-editor-ui";
|
|
3
4
|
//#region src/static.tsx
|
|
4
5
|
var CodeBlockRenderer = ({ code, language, showLineNumbers }) => {
|
|
6
|
+
const variant = useVariant();
|
|
5
7
|
return /* @__PURE__ */ jsx(CodeBlock, {
|
|
8
|
+
chrome: variant === "comment" || variant === "chat" ? "compact" : "bar",
|
|
6
9
|
code,
|
|
7
10
|
language,
|
|
8
11
|
showLineNumbers
|
package/dist/styles.css.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const semanticClassNames: {
|
|
2
2
|
readonly card: "rr-code-card";
|
|
3
|
+
readonly header: "rr-code-header";
|
|
3
4
|
readonly lang: "rr-code-lang";
|
|
4
5
|
readonly langIcon: "rr-code-lang-icon";
|
|
5
6
|
readonly copyButton: "rr-code-copy";
|
|
@@ -14,8 +15,10 @@ export declare const semanticClassNames: {
|
|
|
14
15
|
readonly linedWithNumbers: "rr-code-lined-ln";
|
|
15
16
|
};
|
|
16
17
|
export declare const card: string;
|
|
18
|
+
export declare const header: string;
|
|
17
19
|
export declare const langInput: string;
|
|
18
20
|
export declare const lang: string;
|
|
21
|
+
export declare const langMark: string;
|
|
19
22
|
export declare const langIcon: string;
|
|
20
23
|
export declare const copyButton: string;
|
|
21
24
|
export declare const bodyBackground: string;
|
package/dist/styles.css.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.css.d.ts","sourceRoot":"","sources":["../src/styles.css.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"styles.css.d.ts","sourceRoot":"","sources":["../src/styles.css.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;CAerB,CAAC;AAGX,eAAO,MAAM,IAAI,QAaf,CAAC;AAEH,eAAO,MAAM,MAAM,QAcjB,CAAC;AAGH,eAAO,MAAM,SAAS,QAepB,CAAC;AAEH,eAAO,MAAM,IAAI,QAMf,CAAC;AAEH,eAAO,MAAM,QAAQ,QAKnB,CAAC;AAEH,eAAO,MAAM,QAAQ,QAGnB,CAAC;AAOH,eAAO,MAAM,UAAU,QAiBrB,CAAC;AAGH,eAAO,MAAM,cAAc,QAGzB,CAAC;AAEH,eAAO,MAAM,oBAAoB,QAK/B,CAAC;AAGH,eAAO,MAAM,MAAM,QAMjB,CAAC;AAEH,eAAO,MAAM,eAAe,QAG1B,CAAC;AAGH,eAAO,MAAM,IAAI,QAMf,CAAC;AAEH,eAAO,MAAM,YAAY,QAAY,CAAC;AAsDtC,eAAO,MAAM,UAAU,QAQrB,CAAC;AAEH,eAAO,MAAM,YAAY,QAkBvB,CAAC;AA0IH,eAAO,MAAM,KAAK,QAEhB,CAAC;AAiBH,eAAO,MAAM,gBAAgB,QAAY,CAAC;AAkB1C,eAAO,MAAM,yBAAyB;;;;;;CAM5B,CAAC;AAmFX,eAAO,MAAM,WAAW,QAA2B,CAAC;AACpD,eAAO,MAAM,aAAa,QAA6B,CAAC;AACxD,eAAO,MAAM,WAAW,QAA2B,CAAC;AACpD,eAAO,MAAM,iBAAiB,QAAiC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haklex/rich-renderer-codeblock",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.50.1",
|
|
4
4
|
"description": "Code block renderer with Shiki syntax highlighting",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"@codemirror/commands": "^6.11.1",
|
|
41
41
|
"@codemirror/state": "^6.7.6",
|
|
42
42
|
"@codemirror/view": "^6.43.14",
|
|
43
|
-
"@haklex/cm-editor": "0.
|
|
43
|
+
"@haklex/cm-editor": "0.50.1",
|
|
44
44
|
"@iconify-json/material-icon-theme": "^1.2.72",
|
|
45
45
|
"@iconify/utils": "^3.1.7"
|
|
46
46
|
},
|
|
@@ -57,9 +57,9 @@
|
|
|
57
57
|
"vite": "^8.3.4"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
|
-
"@haklex/rich-editor": "^0.
|
|
61
|
-
"@haklex/rich-editor-ui": "^0.
|
|
62
|
-
"@haklex/rich-style-token": "^0.
|
|
60
|
+
"@haklex/rich-editor": "^0.50.1",
|
|
61
|
+
"@haklex/rich-editor-ui": "^0.50.1",
|
|
62
|
+
"@haklex/rich-style-token": "^0.50.1",
|
|
63
63
|
"lucide-react": "^1.0.0",
|
|
64
64
|
"react": ">=19",
|
|
65
65
|
"react-dom": ">=19",
|