im hungry
This commit is contained in:
parent
973db157af
commit
3a335950b5
@ -23,7 +23,7 @@ import {
|
|||||||
import { toPng, toJpeg, toSvg } from "html-to-image";
|
import { toPng, toJpeg, toSvg } from "html-to-image";
|
||||||
import { saveAs } from "file-saver";
|
import { saveAs } from "file-saver";
|
||||||
import { enterFullscreen, exitFullscreen } from "../utils";
|
import { enterFullscreen, exitFullscreen } from "../utils";
|
||||||
import { LayoutContext } from "../pages/editor";
|
import { LayoutContext, SettingsContext } from "../pages/editor";
|
||||||
|
|
||||||
export default function ControlPanel(props) {
|
export default function ControlPanel(props) {
|
||||||
const [visible, setVisible] = useState(false);
|
const [visible, setVisible] = useState(false);
|
||||||
@ -33,6 +33,7 @@ export default function ControlPanel(props) {
|
|||||||
);
|
);
|
||||||
const [extension, setExtension] = useState("");
|
const [extension, setExtension] = useState("");
|
||||||
const { layout, setLayout } = useContext(LayoutContext);
|
const { layout, setLayout } = useContext(LayoutContext);
|
||||||
|
const { setSettings } = useContext(SettingsContext);
|
||||||
|
|
||||||
const menu = {
|
const menu = {
|
||||||
File: {
|
File: {
|
||||||
@ -173,7 +174,9 @@ export default function ControlPanel(props) {
|
|||||||
},
|
},
|
||||||
"Strict mode": {
|
"Strict mode": {
|
||||||
children: [],
|
children: [],
|
||||||
function: () => {},
|
function: () => {
|
||||||
|
setSettings((prev) => ({ ...prev, strictMode: !prev.strictMode }));
|
||||||
|
},
|
||||||
},
|
},
|
||||||
"Reset view": {
|
"Reset view": {
|
||||||
children: [],
|
children: [],
|
||||||
|
@ -8,7 +8,7 @@ import TableOverview from "./table_overview";
|
|||||||
import ReferenceOverview from "./reference_overview";
|
import ReferenceOverview from "./reference_overview";
|
||||||
import AreaOverview from "./area_overview";
|
import AreaOverview from "./area_overview";
|
||||||
import { Tab } from "../data/data";
|
import { Tab } from "../data/data";
|
||||||
import { TabContext } from "../pages/editor";
|
import { LayoutContext, TabContext } from "../pages/editor";
|
||||||
import NotesOverview from "./notes_overview";
|
import NotesOverview from "./notes_overview";
|
||||||
import Issues from "./issues";
|
import Issues from "./issues";
|
||||||
|
|
||||||
@ -29,6 +29,7 @@ const myTheme = createTheme({
|
|||||||
const EditorPanel = (props) => {
|
const EditorPanel = (props) => {
|
||||||
// const map = useRef(new Map());
|
// const map = useRef(new Map());
|
||||||
const { tab, setTab } = useContext(TabContext);
|
const { tab, setTab } = useContext(TabContext);
|
||||||
|
const { layout } = useContext(LayoutContext);
|
||||||
|
|
||||||
const tabList = [
|
const tabList = [
|
||||||
{ tab: "Tables", itemKey: Tab.tables },
|
{ tab: "Tables", itemKey: Tab.tables },
|
||||||
@ -58,28 +59,31 @@ const EditorPanel = (props) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex h-full">
|
<div className="flex h-full">
|
||||||
<div className="flex flex-col h-full relative">
|
<div
|
||||||
|
className="flex flex-col h-full relative"
|
||||||
|
style={{ width: `${props.width}px` }}
|
||||||
|
>
|
||||||
<div className="h-full flex-1 overflow-y-auto">
|
<div className="h-full flex-1 overflow-y-auto">
|
||||||
<div style={{ width: `${props.width}px` }}>
|
<Tabs
|
||||||
<Tabs
|
type="card"
|
||||||
type="card"
|
activeKey={tab}
|
||||||
activeKey={tab}
|
tabList={tabList}
|
||||||
tabList={tabList}
|
onChange={(key) => {
|
||||||
onChange={(key) => {
|
setTab(key);
|
||||||
setTab(key);
|
}}
|
||||||
}}
|
collapsible
|
||||||
collapsible
|
>
|
||||||
>
|
<div className="p-2">{contentList[parseInt(tab) - 1]}</div>
|
||||||
<div className="p-2">{contentList[parseInt(tab) - 1]}</div>
|
</Tabs>
|
||||||
</Tabs>
|
</div>
|
||||||
|
{layout.issues && (
|
||||||
|
<div className="mt-auto border-t-2 border-gray-200 shadow-inner shadow-neutral-200">
|
||||||
|
<Issues />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
)}
|
||||||
<div className="mt-auto border-t-2 border-gray-300">
|
|
||||||
<Issues />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
className={`flex justify-center items-center p-1 h-auto hover:bg-slate-300 cursor-col-resize ${
|
className={`flex justify-center items-center p-1 h-auto hover:bg-slate-400 cursor-col-resize ${
|
||||||
props.resize ? "bg-slate-300" : ""
|
props.resize ? "bg-slate-300" : ""
|
||||||
}`}
|
}`}
|
||||||
onMouseDown={() => props.setResize(true)}
|
onMouseDown={() => props.setResize(true)}
|
||||||
|
@ -1,12 +1,39 @@
|
|||||||
import React from "react";
|
import React, { useContext } from "react";
|
||||||
import { Collapse } from "@douyinfe/semi-ui";
|
import { Collapse } from "@douyinfe/semi-ui";
|
||||||
|
import { SettingsContext } from "../pages/editor";
|
||||||
|
|
||||||
export default function Issues() {
|
export default function Issues() {
|
||||||
return <div>
|
const { settings } = useContext(SettingsContext);
|
||||||
<Collapse>
|
return (
|
||||||
<Collapse.Panel header="Issues" itemKey="1">
|
<div>
|
||||||
hi
|
<Collapse style={{ width: "100%" }}>
|
||||||
|
<Collapse.Panel
|
||||||
|
header={
|
||||||
|
<div>
|
||||||
|
<i className="fa-solid fa-triangle-exclamation me-1 text-yellow-500"></i>{" "}
|
||||||
|
Issues
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
itemKey="1"
|
||||||
|
>
|
||||||
|
<div className="max-h-[160px] overflow-y-auto">
|
||||||
|
{settings.strictMode ? (
|
||||||
|
<div className="mb-1">
|
||||||
|
Strict mode is off so no issues will be displayed.
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<div>
|
||||||
|
<div className="py-2">Issue 1</div>
|
||||||
|
<div className="py-2">Issue 2</div>
|
||||||
|
<div className="py-2">Issue 3</div>
|
||||||
|
<div className="py-2">Issue 4</div>
|
||||||
|
<div className="py-2">Issue 5</div>
|
||||||
|
<div className="py-2">Issue 6</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
</Collapse.Panel>
|
</Collapse.Panel>
|
||||||
</Collapse>
|
</Collapse>
|
||||||
</div>;
|
</div>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ export const TableContext = createContext();
|
|||||||
export const AreaContext = createContext();
|
export const AreaContext = createContext();
|
||||||
export const TabContext = createContext();
|
export const TabContext = createContext();
|
||||||
export const NoteContext = createContext();
|
export const NoteContext = createContext();
|
||||||
|
export const SettingsContext = createContext();
|
||||||
|
|
||||||
export default function Editor(props) {
|
export default function Editor(props) {
|
||||||
const [code, setCode] = useState("");
|
const [code, setCode] = useState("");
|
||||||
@ -20,7 +21,7 @@ export default function Editor(props) {
|
|||||||
const [areas, setAreas] = useState([]);
|
const [areas, setAreas] = useState([]);
|
||||||
const [notes, setNotes] = useState([]);
|
const [notes, setNotes] = useState([]);
|
||||||
const [resize, setResize] = useState(false);
|
const [resize, setResize] = useState(false);
|
||||||
const [width, setWidth] = useState(340);
|
const [width, setWidth] = useState(320);
|
||||||
const [selectedTable, setSelectedTable] = useState("");
|
const [selectedTable, setSelectedTable] = useState("");
|
||||||
const [tab, setTab] = useState(Tab.tables);
|
const [tab, setTab] = useState(Tab.tables);
|
||||||
const [layout, setLayout] = useState({
|
const [layout, setLayout] = useState({
|
||||||
@ -35,11 +36,14 @@ export default function Editor(props) {
|
|||||||
notes: true,
|
notes: true,
|
||||||
fullscreen: false,
|
fullscreen: false,
|
||||||
});
|
});
|
||||||
|
const [settings, setSettings] = useState({
|
||||||
|
strictMode: false,
|
||||||
|
});
|
||||||
|
|
||||||
const dragHandler = (e) => {
|
const dragHandler = (e) => {
|
||||||
if (!resize) return;
|
if (!resize) return;
|
||||||
const w = e.clientX;
|
const w = e.clientX;
|
||||||
if (w > 340) setWidth(w);
|
if (w > 320) setWidth(w);
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -54,39 +58,41 @@ export default function Editor(props) {
|
|||||||
<AreaContext.Provider value={{ areas, setAreas }}>
|
<AreaContext.Provider value={{ areas, setAreas }}>
|
||||||
<NoteContext.Provider value={{ notes, setNotes }}>
|
<NoteContext.Provider value={{ notes, setNotes }}>
|
||||||
<TabContext.Provider value={{ tab, setTab }}>
|
<TabContext.Provider value={{ tab, setTab }}>
|
||||||
<div className="h-[100vh] overflow-hidden">
|
<SettingsContext.Provider value={{settings, setSettings}}>
|
||||||
<ControlPanel />
|
<div className="h-[100vh] overflow-hidden">
|
||||||
<div
|
<ControlPanel />
|
||||||
className={
|
<div
|
||||||
layout.header
|
className={
|
||||||
? `flex h-[calc(100vh-123.93px)]`
|
layout.header
|
||||||
: `flex h-[calc(100vh-51.97px)]`
|
? `flex h-[calc(100vh-123.93px)]`
|
||||||
}
|
: `flex h-[calc(100vh-51.97px)]`
|
||||||
onMouseUp={() => setResize(false)}
|
}
|
||||||
onMouseMove={dragHandler}
|
onMouseUp={() => setResize(false)}
|
||||||
>
|
onMouseMove={dragHandler}
|
||||||
<DndProvider backend={HTML5Backend}>
|
>
|
||||||
{layout.sidebar && (
|
<DndProvider backend={HTML5Backend}>
|
||||||
<EditorPanel
|
{layout.sidebar && (
|
||||||
|
<EditorPanel
|
||||||
|
code={code}
|
||||||
|
setCode={setCode}
|
||||||
|
resize={resize}
|
||||||
|
setResize={setResize}
|
||||||
|
width={width}
|
||||||
|
selectedTable={selectedTable}
|
||||||
|
setSelectedTable={setSelectedTable}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
<Canvas
|
||||||
code={code}
|
code={code}
|
||||||
setCode={setCode}
|
setCode={setCode}
|
||||||
resize={resize}
|
|
||||||
setResize={setResize}
|
|
||||||
width={width}
|
|
||||||
selectedTable={selectedTable}
|
selectedTable={selectedTable}
|
||||||
setSelectedTable={setSelectedTable}
|
setSelectedTable={setSelectedTable}
|
||||||
/>
|
/>
|
||||||
)}
|
</DndProvider>
|
||||||
<Canvas
|
{layout.services && <Sidebar />}
|
||||||
code={code}
|
</div>
|
||||||
setCode={setCode}
|
|
||||||
selectedTable={selectedTable}
|
|
||||||
setSelectedTable={setSelectedTable}
|
|
||||||
/>
|
|
||||||
</DndProvider>
|
|
||||||
{layout.services && <Sidebar />}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</SettingsContext.Provider>
|
||||||
</TabContext.Provider>
|
</TabContext.Provider>
|
||||||
</NoteContext.Provider>
|
</NoteContext.Provider>
|
||||||
</AreaContext.Provider>
|
</AreaContext.Provider>
|
||||||
|
Loading…
Reference in New Issue
Block a user