import { MockView } from "./features/mock/MockView"; import { DocsView } from "./features/docs/DocsView"; import { useWorkspaceLifecycle } from "./features/workspace/useWorkspaceLifecycle"; /** * OpsxAPI 工作台入口:组装顶栏 / 侧栏 / 标签页 / 编辑器 / 对话框。 */ import { findNode } from "./core/index"; import { useWorkspace } from "./workspaceStore"; import { useLicense } from "./license"; import { useEffect } from "react"; import { ActivityRail } from "./components/ActivityRail"; import { Sidebar } from "./components/Sidebar"; import { TestingView } from "./features/testing/TestingView"; import { TabBar } from "./components/TabBar"; import { TopBar } from "./components/TopBar"; import { GraphqlEditor } from "./components/editors/GraphqlEditor"; import { HttpEditor } from "./components/editors/HttpEditor"; import { MqttEditor } from "./components/editors/MqttEditor"; import { SocketIoEditor } from "./components/editors/SocketIoEditor"; import { SseEditor } from "./components/editors/SseEditor"; import { WebsocketEditor } from "./components/editors/WebsocketEditor"; import { WorkspaceDialogs } from "./features/workspace/WorkspaceDialogs"; import { EmptyState } from "./features/workspace/EmptyState"; export function OpsxWorkspace() { useWorkspaceLifecycle(); // 授权状态(桌面端):30 天试用倒计时 / 激活状态;浏览器环境自动跳过 useEffect(() => { void useLicense.getState().load(); }, []); const inited = useWorkspace((s) => s.collections.length > 0 || s.environments.length > 0); const collections = useWorkspace((s) => s.collections); const activeTabId = useWorkspace((s) => s.activeTabId); const toast = useWorkspace((s) => s.toast); const clearToast = useWorkspace((s) => s.clearToast); const view = useWorkspace((s) => s.view); const activeRef = activeTabId ? findNode(collections, activeTabId) : null; const activeNode = activeRef?.node; return (