Skip to content

Commit 49db046

Browse files
authored
Merge pull request #469 from easyops-cn/steve/jsx
Steve/jsx
2 parents 44ff0a9 + 00aefd6 commit 49db046

File tree

3 files changed

+40
-5
lines changed

3 files changed

+40
-5
lines changed

bricks/form/src/time-range-picker/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ export type RangeType = PickerType | OtherPickerType;
7171
export interface EoTimeRangePickerProps extends FormItemProps {
7272
shadowRoot?: ShadowRoot | null;
7373
value?: TimeRange;
74-
format: string;
7574
rangeType?: RangeType;
7675
placeholder?: string | [string, string];
7776
inputStyle?: CSSProperties;
@@ -481,6 +480,7 @@ export function RealTimeRangePicker(
481480
}
482481

483482
interface EoTimeRangePickerComponentProps extends EoTimeRangePickerProps {
483+
format: string;
484484
onChange?: (range: TimeRange) => void;
485485
}
486486

shared/markdown/src/MarkdownComponent.tsx

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEffect, useState } from "react";
1+
import React, { useEffect, useState } from "react";
22
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
33
import { unified } from "unified";
44
import remarkParse from "remark-parse";
@@ -7,8 +7,11 @@ import remarkToRehype from "remark-rehype";
77
import rehypeReact, { Options as RehypeReactOptions } from "rehype-react";
88
import type { Components } from "hast-util-to-jsx-runtime";
99
import rehypeShikiFromHighlighter from "@shikijs/rehype/core";
10-
import { getSingletonHighlighter } from "@next-shared/shiki";
10+
import type { Element } from "hast";
11+
import { visit } from "unist-util-visit";
12+
import { getSingletonHighlighter, bundledLanguages } from "@next-shared/shiki";
1113
import { rehypeMermaid } from "./rehypeMermaid.js";
14+
import { getCodeLanguage } from "./utils.js";
1215

1316
const production = { Fragment, jsx, jsxs };
1417

@@ -29,6 +32,31 @@ export async function preloadHighlighter(
2932
});
3033
}
3134

35+
function rehypeFallbackLanguage() {
36+
return (tree: Element) => {
37+
visit(tree, "element", (node, index, parent) => {
38+
if (
39+
!parent ||
40+
parent.type !== "element" ||
41+
parent.tagName !== "pre" ||
42+
node.tagName !== "code"
43+
) {
44+
return;
45+
}
46+
47+
const lang = getCodeLanguage(node);
48+
if (
49+
lang &&
50+
!Object.prototype.hasOwnProperty.call(bundledLanguages, lang)
51+
) {
52+
node.properties.className = (node.properties.className as string[]).map(
53+
(c) => (c.startsWith("language-") ? "language-text" : c)
54+
);
55+
}
56+
});
57+
};
58+
}
59+
3260
// Reference https://github.com/remarkjs/react-remark/blob/39553e5f5c9e9b903bebf261788ff45130668de0/src/index.ts
3361
export function MarkdownComponent({
3462
content,
@@ -53,6 +81,7 @@ export function MarkdownComponent({
5381
.use(remarkGfm)
5482
.use(remarkToRehype)
5583
.use(rehypeMermaid)
84+
.use(rehypeFallbackLanguage)
5685
.use(rehypeShikiFromHighlighter, highlighter as any, {
5786
theme,
5887
lazy: true,
@@ -71,7 +100,11 @@ export function MarkdownComponent({
71100
if (!ignore) {
72101
// eslint-disable-next-line no-console
73102
console.error("Convert markdown failed:", error);
74-
setReactContent(null);
103+
setReactContent(
104+
<div style={{ color: "var(--color-error)" }}>
105+
Convert markdown failed: {String(error)}
106+
</div>
107+
);
75108
}
76109
}
77110
})();

shared/shiki/src/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ type BundledLanguage =
4747
| "python"
4848
| "py"
4949
| "go"
50-
| "sql";
50+
| "sql"
51+
| "yaml";
5152
type BundledTheme = "light-plus" | "dark-plus";
5253
type Highlighter = HighlighterGeneric<BundledLanguage, BundledTheme>;
5354

@@ -76,6 +77,7 @@ const bundledLanguages = {
7677
py: () => import("@shikijs/langs/python"),
7778
go: () => import("@shikijs/langs/go"),
7879
sql: () => import("@shikijs/langs/sql"),
80+
yaml: () => import("@shikijs/langs/yaml"),
7981
} as Record<BundledLanguage, DynamicImportLanguageRegistration>;
8082

8183
const bundledThemes = {

0 commit comments

Comments
 (0)