import { useState } from "react"; import { Tab, ObjectType, tableFieldHeight, tableHeaderHeight, tableColorStripHeight, } from "../../data/constants"; import { IconEdit, IconMore, IconMinus, IconDeleteStroked, IconKeyStroked, } from "@douyinfe/semi-icons"; import { Popover, Tag, Button, Toast, SideSheet } from "@douyinfe/semi-ui"; import { useLayout, useSettings, useTables, useSelect } from "../../hooks"; import TableInfo from "../EditorSidePanel/TablesTab/TableInfo"; export default function Table(props) { const [hoveredField, setHoveredField] = useState(-1); const { tableData, onMouseDown, setHoveredTable, handleGripField, setLinkingLine, } = props; const { layout } = useLayout(); const { deleteTable, deleteField } = useTables(); const { settings } = useSettings(); const { selectedElement, setSelectedElement } = useSelect(); const height = tableData.fields.length * tableFieldHeight + tableHeaderHeight + 7; const openEditor = () => { if (!layout.sidebar) { setSelectedElement((prev) => ({ ...prev, element: ObjectType.TABLE, id: tableData.id, open: true, })); } else { setSelectedElement((prev) => ({ ...prev, currentTab: Tab.TABLES, element: ObjectType.TABLE, id: tableData.id, open: true, })); if (selectedElement.currentTab !== Tab.TABLES) return; document .getElementById(`scroll_table_${tableData.id}`) .scrollIntoView({ behavior: "smooth" }); } }; return ( <>
{tableData.name}
} position="rightTop" showArrow trigger="click" style={{ width: "200px", wordBreak: "break-word" }} >
{tableData.fields.map((e, i) => { return settings.showFieldSummary ? (

{e.name}

{e.type}


{e.primary && ( Primary )} {e.unique && ( Unique )} {e.notNull && ( Not null )} {e.increment && ( Increment )}

Default :{" "} {e.default === "" ? "Not set" : e.default}

Comment:{" "} {e.comment === "" ? ( "Not comment" ) : (

{e.comment}
)}

} position="right" showArrow style={{ width: "200px", wordBreak: "break-word" }} > {field(e, i)} ) : ( field(e, i) ); })}
setSelectedElement((prev) => ({ ...prev, open: !prev.open, })) } style={{ paddingBottom: "16px" }} >
); function field(fieldData, index) { return (
{ setHoveredField(index); setHoveredTable({ tableId: tableData.id, field: index, }); }} onMouseLeave={() => { setHoveredField(-1); }} >
{hoveredField === index ? (
); } }