Skip to content

Commit 51b68e8

Browse files
committed
Add dbml editor to sidepanel
1 parent aaf83b6 commit 51b68e8

File tree

10 files changed

+110
-7
lines changed

10 files changed

+110
-7
lines changed

package-lock.json

+25-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"@douyinfe/semi-ui": "^2.51.3",
1616
"@lexical/react": "^0.12.5",
1717
"@uiw/codemirror-theme-github": "^4.21.25",
18-
"@uiw/codemirror-theme-vscode": "^4.21.25",
18+
"@uiw/codemirror-theme-vscode": "^4.23.6",
1919
"@uiw/react-codemirror": "^4.21.25",
2020
"@vercel/analytics": "^1.2.2",
2121
"axios": "^1.7.4",

src/components/EditorHeader/ControlPanel.jsx

+13
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,9 @@ export default function ControlPanel({
516516
const viewStrictMode = () => {
517517
setSettings((prev) => ({ ...prev, strictMode: !prev.strictMode }));
518518
};
519+
const toggleDBMLEditor = () => {
520+
setLayout((prev) => ({ ...prev, dbmlEditor: !prev.dbmlEditor }));
521+
};
519522
const viewFieldSummary = () => {
520523
setSettings((prev) => ({
521524
...prev,
@@ -1175,6 +1178,15 @@ export default function ControlPanel({
11751178
function: () =>
11761179
setLayout((prev) => ({ ...prev, issues: !prev.issues })),
11771180
},
1181+
dbml_editor: {
1182+
state: layout.dbmlEditor ? (
1183+
<i className="bi bi-toggle-off" />
1184+
) : (
1185+
<i className="bi bi-toggle-on" />
1186+
),
1187+
function: toggleDBMLEditor,
1188+
shortcut: "Alt+E",
1189+
},
11781190
strict_mode: {
11791191
state: settings.strictMode ? (
11801192
<i className="bi bi-toggle-off" />
@@ -1386,6 +1398,7 @@ export default function ControlPanel({
13861398
preventDefault: true,
13871399
});
13881400
useHotkeys("ctrl+alt+w, meta+alt+w", fitWindow, { preventDefault: true });
1401+
useHotkeys("alt+e", toggleDBMLEditor, { preventDefault: true });
13891402

13901403
return (
13911404
<>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import CodeMirror from "@uiw/react-codemirror";
2+
import { vscodeDark, vscodeLight } from "@uiw/codemirror-theme-vscode";
3+
import { languageExtension } from "../../../data/editorExtensions";
4+
import { useSettings } from "../../../hooks";
5+
import "./styles.css";
6+
7+
export default function DBMLEditor() {
8+
const { settings } = useSettings();
9+
return (
10+
<div>
11+
<CodeMirror
12+
extensions={languageExtension.sql}
13+
onChange={() => {}}
14+
theme={settings.mode === "dark" ? vscodeDark : vscodeLight}
15+
/>
16+
</div>
17+
);
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
.cm-editor {
2+
font-size: 13px;
3+
}
4+
5+
.ͼ1o {
6+
background-color: var(--semi-color-bg-0);
7+
}
8+
9+
.ͼ1o .cm-gutters {
10+
background-color: var(--semi-color-bg-0);
11+
}

src/components/EditorSidePanel/SidePanel.jsx

+29
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { databases } from "../../data/databases";
2121
import EnumsTab from "./EnumsTab/EnumsTab";
2222
import { isRtl } from "../../i18n/utils/rtl";
2323
import i18n from "../../i18n/i18n";
24+
import DBMLEditor from "./DBMLEditor/DBMLEditor";
2425

2526
export default function SidePanel({ width, resize, setResize }) {
2627
const { layout } = useLayout();
@@ -91,6 +92,7 @@ export default function SidePanel({ width, resize, setResize }) {
9192
style={{ width: `${width}px` }}
9293
>
9394
<div className="h-full flex-1 overflow-y-auto">
95+
<<<<<<< HEAD
9496
<Tabs
9597
type="card"
9698
activeKey={selectedElement.currentTab}
@@ -109,6 +111,33 @@ export default function SidePanel({ width, resize, setResize }) {
109111
</TabPane>
110112
))}
111113
</Tabs>
114+
=======
115+
{layout.dbmlEditor ? (
116+
<Tabs
117+
type="card"
118+
activeKey={selectedElement.currentTab}
119+
lazyRender
120+
onChange={(key) =>
121+
setSelectedElement((prev) => ({ ...prev, currentTab: key }))
122+
}
123+
collapsible
124+
tabBarStyle={{ direction: "ltr" }}
125+
>
126+
{tabList.length &&
127+
tabList.map((tab) => (
128+
<TabPane
129+
tab={tab.tab}
130+
itemKey={tab.itemKey}
131+
key={tab.itemKey}
132+
>
133+
<div className="p-2">{tab.component}</div>
134+
</TabPane>
135+
))}
136+
</Tabs>
137+
) : (
138+
<DBMLEditor />
139+
)}
140+
>>>>>>> feb41e8 (Add dbml editor to sidepanel)
112141
</div>
113142
{layout.issues && (
114143
<div className="mt-auto border-t-2 border-color shadow-inner">

src/context/LayoutContext.jsx

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export default function LayoutContextProvider({ children }) {
88
sidebar: true,
99
issues: true,
1010
toolbar: true,
11+
dbmlEditor: false,
1112
});
1213

1314
return (

src/data/editorExtensions.js

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { sql } from "@codemirror/lang-sql";
2+
import { json } from "@codemirror/lang-json";
3+
4+
export const languageExtension = {
5+
sql: [sql()],
6+
json: [json()],
7+
};

src/i18n/locales/en.js

+4
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,11 @@ const en = {
243243
failed_to_load: "Failed to load. Make sure the link is correct.",
244244
share_info:
245245
"* Sharing this link will not create a live real-time collaboration session.",
246+
<<<<<<< HEAD
246247
show_relationship_labels: "Show relationship labels",
248+
=======
249+
dbml_editor: "DBML editor",
250+
>>>>>>> feb41e8 (Add dbml editor to sidepanel)
247251
},
248252
};
249253

src/index.css

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
background-color: rgba(var(--semi-blue-6), 1);
5959
}
6060

61-
.semi-spin-wrapper{
61+
.semi-spin-wrapper {
6262
color: inherit;
6363
}
6464

0 commit comments

Comments
 (0)