@lokvis/ui-react 0.2.1 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AssetPanel.d.ts.map +1 -1
- package/dist/components/AssetPanel.js +18 -62
- package/dist/components/AssetPanel.js.map +1 -1
- package/dist/components/Canvas.d.ts +4 -4
- package/dist/components/Canvas.d.ts.map +1 -1
- package/dist/components/Canvas.js +9 -9
- package/dist/components/Canvas.js.map +1 -1
- package/dist/components/CommandPalette.d.ts +7 -7
- package/dist/components/CommandPalette.d.ts.map +1 -1
- package/dist/components/CommandPalette.js +10 -10
- package/dist/components/CommandPalette.js.map +1 -1
- package/dist/components/CompareSlider.d.ts +9 -8
- package/dist/components/CompareSlider.d.ts.map +1 -1
- package/dist/components/CompareSlider.js +10 -9
- package/dist/components/CompareSlider.js.map +1 -1
- package/dist/components/DownloadPanel.d.ts +3 -3
- package/dist/components/DownloadPanel.d.ts.map +1 -1
- package/dist/components/DownloadPanel.js +10 -17
- package/dist/components/DownloadPanel.js.map +1 -1
- package/dist/components/ErrorBanner.d.ts +2 -2
- package/dist/components/ErrorBanner.d.ts.map +1 -1
- package/dist/components/ErrorBanner.js +3 -3
- package/dist/components/ErrorBanner.js.map +1 -1
- package/dist/components/ErrorBoundary.d.ts +40 -0
- package/dist/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/ErrorBoundary.js +52 -0
- package/dist/components/ErrorBoundary.js.map +1 -0
- package/dist/components/ExifPanel.d.ts +1 -1
- package/dist/components/ExifPanel.d.ts.map +1 -1
- package/dist/components/ExifPanel.js +2 -2
- package/dist/components/ExifPanel.js.map +1 -1
- package/dist/components/GlobalDropzone.d.ts +5 -5
- package/dist/components/GlobalDropzone.d.ts.map +1 -1
- package/dist/components/GlobalDropzone.js +15 -8
- package/dist/components/GlobalDropzone.js.map +1 -1
- package/dist/components/HistoryPanel.d.ts +2 -2
- package/dist/components/HistoryPanel.d.ts.map +1 -1
- package/dist/components/HistoryPanel.js +23 -23
- package/dist/components/HistoryPanel.js.map +1 -1
- package/dist/components/Inspector.d.ts.map +1 -1
- package/dist/components/Inspector.js +13 -10
- package/dist/components/Inspector.js.map +1 -1
- package/dist/components/ParamForm.d.ts.map +1 -1
- package/dist/components/ParamForm.js +10 -7
- package/dist/components/ParamForm.js.map +1 -1
- package/dist/components/PipelineBar.d.ts.map +1 -1
- package/dist/components/PipelineBar.js +19 -28
- package/dist/components/PipelineBar.js.map +1 -1
- package/dist/components/ProgressBar.d.ts +4 -4
- package/dist/components/ProgressBar.d.ts.map +1 -1
- package/dist/components/ProgressBar.js +8 -8
- package/dist/components/ProgressBar.js.map +1 -1
- package/dist/components/StatusBar.d.ts +3 -3
- package/dist/components/StatusBar.d.ts.map +1 -1
- package/dist/components/StatusBar.js +12 -21
- package/dist/components/StatusBar.js.map +1 -1
- package/dist/components/StatusDot.d.ts +12 -0
- package/dist/components/StatusDot.d.ts.map +1 -0
- package/dist/components/StatusDot.js +15 -0
- package/dist/components/StatusDot.js.map +1 -0
- package/dist/components/ThemeToggle.d.ts +4 -4
- package/dist/components/ThemeToggle.d.ts.map +1 -1
- package/dist/components/ThemeToggle.js +7 -7
- package/dist/components/ThemeToggle.js.map +1 -1
- package/dist/components/ToolRunner.d.ts +53 -0
- package/dist/components/ToolRunner.d.ts.map +1 -0
- package/dist/components/ToolRunner.js +142 -0
- package/dist/components/ToolRunner.js.map +1 -0
- package/dist/components/Toolbar.d.ts.map +1 -1
- package/dist/components/Toolbar.js +3 -3
- package/dist/components/Toolbar.js.map +1 -1
- package/dist/components/WorkflowEditor.d.ts +6 -6
- package/dist/components/WorkflowEditor.d.ts.map +1 -1
- package/dist/components/WorkflowEditor.js +40 -49
- package/dist/components/WorkflowEditor.js.map +1 -1
- package/dist/components/WorkflowTemplates.d.ts +2 -2
- package/dist/components/WorkflowTemplates.d.ts.map +1 -1
- package/dist/components/WorkflowTemplates.js +17 -7
- package/dist/components/WorkflowTemplates.js.map +1 -1
- package/dist/components/Workspace.d.ts +45 -23
- package/dist/components/Workspace.d.ts.map +1 -1
- package/dist/components/Workspace.js +87 -40
- package/dist/components/Workspace.js.map +1 -1
- package/dist/hooks/useCustomPresets.d.ts +98 -0
- package/dist/hooks/useCustomPresets.d.ts.map +1 -0
- package/dist/hooks/useCustomPresets.js +210 -0
- package/dist/hooks/useCustomPresets.js.map +1 -0
- package/dist/hooks/useLokvis.d.ts +19 -1
- package/dist/hooks/useLokvis.d.ts.map +1 -1
- package/dist/hooks/useLokvis.js +30 -9
- package/dist/hooks/useLokvis.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/store/assets-slice.d.ts +8 -1
- package/dist/store/assets-slice.d.ts.map +1 -1
- package/dist/store/assets-slice.js +101 -54
- package/dist/store/assets-slice.js.map +1 -1
- package/dist/store/capabilities-slice.d.ts +1 -1
- package/dist/store/capabilities-slice.d.ts.map +1 -1
- package/dist/store/capabilities-slice.js +8 -1
- package/dist/store/capabilities-slice.js.map +1 -1
- package/dist/store/index.d.ts +1 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +1 -1
- package/dist/store/index.js.map +1 -1
- package/dist/store/runtime-slice.d.ts.map +1 -1
- package/dist/store/runtime-slice.js +22 -16
- package/dist/store/runtime-slice.js.map +1 -1
- package/dist/store/subscribe-utils.d.ts +45 -0
- package/dist/store/subscribe-utils.d.ts.map +1 -0
- package/dist/store/subscribe-utils.js +69 -0
- package/dist/store/subscribe-utils.js.map +1 -0
- package/dist/store/types.d.ts +19 -11
- package/dist/store/types.d.ts.map +1 -1
- package/dist/store/types.js +0 -10
- package/dist/store/types.js.map +1 -1
- package/dist/store/workflow-slice.d.ts +1 -1
- package/dist/store/workflow-slice.d.ts.map +1 -1
- package/dist/store/workflow-slice.js +19 -51
- package/dist/store/workflow-slice.js.map +1 -1
- package/dist/utils.d.ts +24 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +31 -0
- package/dist/utils.js.map +1 -0
- package/package.json +7 -6
- package/src/components/AssetPanel.tsx +224 -264
- package/src/components/Canvas.tsx +178 -174
- package/src/components/CommandPalette.tsx +242 -242
- package/src/components/CompareSlider.tsx +168 -165
- package/src/components/DownloadPanel.tsx +201 -207
- package/src/components/ErrorBanner.tsx +64 -64
- package/src/components/ErrorBoundary.tsx +101 -0
- package/src/components/ExifPanel.tsx +154 -154
- package/src/components/GlobalDropzone.tsx +175 -170
- package/src/components/HistoryPanel.tsx +219 -219
- package/src/components/Inspector.tsx +145 -137
- package/src/components/ParamForm.tsx +140 -137
- package/src/components/PipelineBar.tsx +97 -104
- package/src/components/ProgressBar.tsx +78 -78
- package/src/components/StatusBar.tsx +145 -152
- package/src/components/StatusDot.tsx +27 -0
- package/src/components/ThemeToggle.tsx +98 -98
- package/src/components/ToolRunner.tsx +352 -0
- package/src/components/Toolbar.tsx +65 -65
- package/src/components/WorkflowEditor.tsx +333 -326
- package/src/components/WorkflowTemplates.tsx +101 -78
- package/src/components/Workspace.tsx +310 -223
- package/src/css-modules.d.ts +3 -0
- package/src/hooks/useCustomPresets.ts +284 -0
- package/src/hooks/useLokvis.ts +43 -10
- package/src/index.ts +7 -0
- package/src/store/assets-slice.ts +106 -52
- package/src/store/capabilities-slice.ts +10 -2
- package/src/store/index.ts +1 -1
- package/src/store/runtime-slice.ts +20 -15
- package/src/store/subscribe-utils.ts +82 -0
- package/src/store/types.ts +19 -12
- package/src/store/workflow-slice.ts +19 -53
- package/src/utils.ts +41 -0
- package/dist/store.d.ts +0 -76
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js +0 -217
- package/dist/store.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HistoryPanel.js","sourceRoot":"","sources":["../../src/components/HistoryPanel.tsx"],"names":[],"mappings":";AAmBA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAQtD,MAAM,UAAU,YAAY,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,GAAG,UAAU,EAAqB;
|
|
1
|
+
{"version":3,"file":"HistoryPanel.js","sourceRoot":"","sources":["../../src/components/HistoryPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Inspector.d.ts","sourceRoot":"","sources":["../../src/components/Inspector.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Inspector.d.ts","sourceRoot":"","sources":["../../src/components/Inspector.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,WAAW,cAAc;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAc,EAAE,EAAE,cAAc,qBAwJ3D"}
|
|
@@ -6,8 +6,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
* 下半部分:可用 Capabilities 列表(点击添加到工作流)
|
|
7
7
|
*/
|
|
8
8
|
import * as React from 'react';
|
|
9
|
-
import { Icon } from '@lokvis/ui-core';
|
|
9
|
+
import { Icon, Input } from '@lokvis/ui-core';
|
|
10
10
|
import { useWorkspaceStore } from '../store/index.js';
|
|
11
|
+
import { filterCapabilities } from '../utils.js';
|
|
11
12
|
import { ParamForm } from './ParamForm.js';
|
|
12
13
|
import { ExifPanel } from './ExifPanel.js';
|
|
13
14
|
export function Inspector({ className = '' }) {
|
|
@@ -15,13 +16,13 @@ export function Inspector({ className = '' }) {
|
|
|
15
16
|
const nodes = useWorkspaceStore((s) => s.nodes);
|
|
16
17
|
const selectedNodeId = useWorkspaceStore((s) => s.selectedNodeId);
|
|
17
18
|
const capabilityMap = useWorkspaceStore((s) => s.capabilityMap);
|
|
19
|
+
const stubCapabilities = useWorkspaceStore((s) => s.stubCapabilities);
|
|
18
20
|
const addNode = useWorkspaceStore((s) => s.addNode);
|
|
19
21
|
const updateNodeParams = useWorkspaceStore((s) => s.updateNodeParams);
|
|
20
22
|
const selectedNode = nodes.find((n) => n.id === selectedNodeId);
|
|
21
23
|
const [filter, setFilter] = React.useState('');
|
|
22
24
|
const [configureOpen, setConfigureOpen] = React.useState(true);
|
|
23
|
-
const filtered = capabilities
|
|
24
|
-
c.description.toLowerCase().includes(filter.toLowerCase()));
|
|
25
|
+
const filtered = filterCapabilities(capabilities, filter);
|
|
25
26
|
// 按域分组
|
|
26
27
|
const grouped = React.useMemo(() => {
|
|
27
28
|
const map = new Map();
|
|
@@ -34,15 +35,17 @@ export function Inspector({ className = '' }) {
|
|
|
34
35
|
return map;
|
|
35
36
|
}, [filtered]);
|
|
36
37
|
const showConfigure = selectedNode && capabilityMap[selectedNode.capability];
|
|
37
|
-
return (_jsxs("aside", { className: `flex w-72 shrink-0 flex-col border-l border-
|
|
38
|
+
return (_jsxs("aside", { className: `flex w-72 shrink-0 flex-col border-l border-[var(--lokvis-border)] ${className}`, children: [_jsx(ExifPanel, {}), showConfigure && (_jsxs("div", { className: "shrink-0 border-b border-[var(--lokvis-border)]", children: [_jsxs("button", { type: "button", onClick: () => setConfigureOpen(!configureOpen), "aria-expanded": configureOpen, "aria-controls": `configure-panel-${selectedNode.id}`, className: "flex w-full items-center justify-between px-3 h-[var(--lokvis-panel-header-h)] text-left transition-colors hover:bg-[var(--lokvis-surface)]", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Icon, { size: 12, className: `text-[var(--lokvis-fg-subtle)] transition-transform ${configureOpen ? 'rotate-90' : ''}`, children: _jsx("path", { d: "m9 5 7 7-7 7" }) }), _jsx("span", { className: "text-[11px] font-semibold uppercase tracking-wider text-[var(--lokvis-fg-subtle)]", children: "Configure" })] }), _jsx("span", { className: "font-mono text-[10px] text-[var(--lokvis-primary)] bg-[var(--lokvis-primary)]/10 px-1.5 py-0.5 rounded", children: selectedNode.capability })] }), configureOpen && (_jsx("div", { id: `configure-panel-${selectedNode.id}`, className: "px-3 pb-3 max-h-60 overflow-y-auto", children: _jsx(ParamForm, { capability: capabilityMap[selectedNode.capability], values: selectedNode.params, onChange: (params) => updateNodeParams(selectedNode.id, params) }) }))] })), _jsxs("div", { className: "flex flex-1 flex-col overflow-hidden", children: [_jsxs("div", { className: "flex items-center justify-between px-3 h-[var(--lokvis-panel-header-h)] shrink-0 border-b border-[var(--lokvis-border)]", children: [_jsx("span", { className: "text-[11px] font-semibold uppercase tracking-wider text-[var(--lokvis-fg-subtle)]", children: "Capabilities" }), _jsx("span", { className: "text-[11px] tabular-nums text-[var(--lokvis-fg-subtle)]", children: filtered.length })] }), _jsx("div", { className: "px-2 py-2 border-b border-[var(--lokvis-border)]", children: _jsx(Input, { size: "sm", placeholder: "Search capabilities...", value: filter, onChange: (e) => setFilter(e.target.value), leadingIcon: _jsxs(Icon, { size: 12, children: [_jsx("circle", { cx: "11", cy: "11", r: "8" }), _jsx("path", { d: "m21 21-4.3-4.3" })] }) }) }), _jsx("div", { className: "flex-1 overflow-y-auto p-2", children: capabilities.length === 0 ? (_jsxs("div", { className: "px-2 py-8 text-center", children: [_jsx("p", { className: "text-[11px] text-[var(--lokvis-fg-subtle)]", children: "No capabilities loaded" }), _jsx("p", { className: "mt-1 text-[10px] text-[var(--lokvis-fg-muted)]", children: "Load a plugin to get started" })] })) : filtered.length === 0 ? (_jsx("p", { className: "px-2 py-4 text-[11px] text-[var(--lokvis-fg-subtle)]", children: "No matching capabilities" })) : (_jsx("div", { className: "space-y-3", children: Array.from(grouped.entries()).map(([domain, caps]) => (_jsxs("div", { children: [_jsx("div", { className: "px-2 py-1 text-[10px] font-semibold uppercase tracking-wider text-[var(--lokvis-fg-subtle)]", children: domain }), _jsx("ul", { className: "space-y-0.5", children: caps.map((cap) => {
|
|
38
39
|
const isInPipeline = nodes.some((n) => n.capability === cap.name);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
// A7: stub-only 能力显示 "Coming Soon" 标记(无可用引擎)
|
|
41
|
+
const isStubOnly = stubCapabilities.has(cap.name);
|
|
42
|
+
return (_jsx("li", { children: _jsxs("button", { type: "button", onClick: () => addNode(cap.name), title: isStubOnly ? 'Coming soon — no engine installed yet' : undefined, className: `group w-full rounded-md px-2 py-1.5 text-left transition-all ${isInPipeline
|
|
43
|
+
? 'bg-[var(--lokvis-primary)]/5 ring-1 ring-[var(--lokvis-primary)]/40'
|
|
44
|
+
: 'hover:bg-[var(--lokvis-surface)]'}`, children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("span", { className: `truncate font-mono text-[11px] font-medium ${isStubOnly ? 'text-[var(--lokvis-fg-muted)]' : ''}`, children: cap.name }), isStubOnly ? (_jsx("span", { className: "shrink-0 rounded px-1 py-0.5 text-[9px] font-medium uppercase bg-[var(--lokvis-warning)]/15 text-[var(--lokvis-warning)]", children: "Soon" })) : (_jsx("span", { className: `shrink-0 rounded px-1 py-0.5 text-[9px] font-medium uppercase ${cap.performance === 'fast'
|
|
45
|
+
? 'bg-[var(--lokvis-success)]/15 text-[var(--lokvis-success)]'
|
|
43
46
|
: cap.performance === 'medium'
|
|
44
|
-
? 'bg-
|
|
45
|
-
: 'bg-
|
|
47
|
+
? 'bg-[var(--lokvis-warning)]/15 text-[var(--lokvis-warning)]'
|
|
48
|
+
: 'bg-[var(--lokvis-surface-muted)] text-[var(--lokvis-fg-muted)]'}`, children: cap.performance }))] }), _jsx("p", { className: "mt-0.5 truncate text-[10px] text-[var(--lokvis-fg-muted)]", children: cap.description })] }) }, cap.name));
|
|
46
49
|
}) })] }, domain))) })) })] })] }));
|
|
47
50
|
}
|
|
48
51
|
//# sourceMappingURL=Inspector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Inspector.js","sourceRoot":"","sources":["../../src/components/Inspector.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"Inspector.js","sourceRoot":"","sources":["../../src/components/Inspector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParamForm.d.ts","sourceRoot":"","sources":["../../src/components/ParamForm.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ParamForm.d.ts","sourceRoot":"","sources":["../../src/components/ParamForm.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,gBAAgB,CAAC;AAGlE,MAAM,WAAW,cAAc;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACpD;AAED,wBAAgB,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,cAAc,+BAyBzE"}
|
|
@@ -1,28 +1,31 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Input } from '@lokvis/ui-core';
|
|
2
3
|
export function ParamForm({ capability, values, onChange }) {
|
|
3
4
|
const set = (name, value) => {
|
|
4
5
|
onChange({ ...values, [name]: value });
|
|
5
6
|
};
|
|
6
7
|
if (capability.params.length === 0) {
|
|
7
|
-
return (_jsx("p", { className: "py-3 text-center text-[11px] text-
|
|
8
|
+
return (_jsx("p", { className: "py-3 text-center text-[11px] text-[var(--lokvis-fg-subtle)] italic", children: "This capability has no configurable parameters." }));
|
|
8
9
|
}
|
|
9
10
|
return (_jsx("div", { className: "space-y-2.5", children: capability.params.map((p) => (_jsx(ParamField, { param: p, value: values[p.name], onChange: (v) => set(p.name, v) }, p.name))) }));
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
+
// 仅用于 enum 的原生 <select>(Select 组件 API 不同,不在此迁移);
|
|
13
|
+
// 文本/数字输入已统一改用 <Input size="sm"> 组件,消除重复样式。
|
|
14
|
+
const selectBase = 'w-full rounded-md border border-[var(--lokvis-border)] bg-[var(--lokvis-surface)] px-2.5 py-1.5 text-[11px] transition-colors hover:border-[var(--lokvis-border-strong)] focus:border-[var(--lokvis-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--lokvis-primary)]/30 disabled:cursor-not-allowed disabled:opacity-50';
|
|
12
15
|
function ParamField({ param, value, onChange, }) {
|
|
13
16
|
if (param.type === 'boolean') {
|
|
14
|
-
return (_jsxs("label", { className: "flex cursor-pointer items-center gap-2 rounded-md px-1 py-1 transition-colors hover:bg-
|
|
17
|
+
return (_jsxs("label", { className: "flex cursor-pointer items-center gap-2 rounded-md px-1 py-1 transition-colors hover:bg-[var(--lokvis-surface)]", children: [_jsx("input", { type: "checkbox", checked: Boolean(value ?? param.default), onChange: (e) => onChange(e.target.checked), className: "h-3.5 w-3.5 rounded border-[var(--lokvis-border-strong)] text-[var(--lokvis-primary)] focus:ring-[var(--lokvis-primary)]" }), _jsx("span", { className: "flex-1 text-[11px] text-[var(--lokvis-fg-muted)]", children: param.name }), param.description && (_jsx("span", { className: "shrink-0 text-[10px] text-[var(--lokvis-fg-subtle)]", children: param.description }))] }));
|
|
15
18
|
}
|
|
16
19
|
if (param.type === 'enum' && param.values) {
|
|
17
|
-
return (_jsxs("div", { children: [_jsxs("label", { className: "mb-1 block text-[11px] font-medium text-
|
|
20
|
+
return (_jsxs("div", { children: [_jsxs("label", { className: "mb-1 block text-[11px] font-medium text-[var(--lokvis-fg-muted)]", children: [param.name, param.required && _jsx("span", { className: "ml-0.5 text-[var(--lokvis-danger)]", children: "*" })] }), _jsx("select", { value: value ?? param.default ?? '', onChange: (e) => onChange(e.target.value), className: selectBase, children: param.values.map((v) => (_jsx("option", { value: v, children: v }, v))) })] }));
|
|
18
21
|
}
|
|
19
22
|
if (param.type === 'color') {
|
|
20
|
-
return (_jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-[11px] font-medium text-
|
|
23
|
+
return (_jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-[11px] font-medium text-[var(--lokvis-fg-muted)]", children: param.name }), _jsxs("div", { className: "flex gap-2", children: [_jsx("input", { type: "color", value: value ?? param.default ?? '#ffffff', onChange: (e) => onChange(e.target.value), className: "h-7 w-7 shrink-0 cursor-pointer rounded border border-[var(--lokvis-border)]" }), _jsx(Input, { type: "text", size: "sm", value: value ?? param.default ?? '#ffffff', onChange: (e) => onChange(e.target.value) })] })] }));
|
|
21
24
|
}
|
|
22
25
|
if (param.type === 'number') {
|
|
23
|
-
return (_jsxs("div", { children: [_jsxs("div", { className: "mb-1 flex items-center justify-between", children: [_jsxs("label", { className: "text-[11px] font-medium text-
|
|
26
|
+
return (_jsxs("div", { children: [_jsxs("div", { className: "mb-1 flex items-center justify-between", children: [_jsxs("label", { className: "text-[11px] font-medium text-[var(--lokvis-fg-muted)]", children: [param.name, param.required && _jsx("span", { className: "ml-0.5 text-[var(--lokvis-danger)]", children: "*" })] }), (param.min !== undefined || param.max !== undefined) && (_jsxs("span", { className: "text-[10px] text-[var(--lokvis-fg-subtle)]", children: [param.min !== undefined ? param.min : '-', ' — ', param.max !== undefined ? param.max : '∞'] }))] }), _jsx(Input, { type: "number", size: "sm", value: value === undefined ? param.default ?? '' : value, min: param.min, max: param.max, onChange: (e) => onChange(e.target.value === '' ? undefined : Number(e.target.value)) })] }));
|
|
24
27
|
}
|
|
25
28
|
// string / file / array / object → text input
|
|
26
|
-
return (_jsxs("div", { children: [_jsxs("label", { className: "mb-1 block text-[11px] font-medium text-
|
|
29
|
+
return (_jsxs("div", { children: [_jsxs("label", { className: "mb-1 block text-[11px] font-medium text-[var(--lokvis-fg-muted)]", children: [param.name, param.required && _jsx("span", { className: "ml-0.5 text-[var(--lokvis-danger)]", children: "*" }), param.description && (_jsx("span", { className: "ml-1 font-normal text-[var(--lokvis-fg-subtle)]", children: param.description }))] }), _jsx(Input, { type: "text", size: "sm", value: value ?? param.default ?? '', onChange: (e) => onChange(e.target.value), placeholder: param.type === 'file' ? 'data URL or path' : '' })] }));
|
|
27
30
|
}
|
|
28
31
|
//# sourceMappingURL=ParamForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParamForm.js","sourceRoot":"","sources":["../../src/components/ParamForm.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ParamForm.js","sourceRoot":"","sources":["../../src/components/ParamForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineBar.d.ts","sourceRoot":"","sources":["../../src/components/PipelineBar.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"PipelineBar.d.ts","sourceRoot":"","sources":["../../src/components/PipelineBar.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,gBAAgB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAc,EAAE,EAAE,gBAAgB,qBAsG/D"}
|
|
@@ -6,40 +6,31 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
* 位于 Canvas 下方、StatusBar 上方。
|
|
7
7
|
*/
|
|
8
8
|
import * as React from 'react';
|
|
9
|
-
import { Icon } from '@lokvis/ui-core';
|
|
9
|
+
import { FOCUS_RING, Icon } from '@lokvis/ui-core';
|
|
10
10
|
import { useWorkspaceStore } from '../store/index.js';
|
|
11
|
+
import { StatusDot } from './StatusDot.js';
|
|
11
12
|
export function PipelineBar({ className = '' }) {
|
|
12
13
|
const nodes = useWorkspaceStore((s) => s.nodes);
|
|
13
14
|
const selectedNodeId = useWorkspaceStore((s) => s.selectedNodeId);
|
|
14
15
|
const selectNode = useWorkspaceStore((s) => s.selectNode);
|
|
15
16
|
const removeNode = useWorkspaceStore((s) => s.removeNode);
|
|
16
|
-
return (_jsxs("div", { className: `flex h-10 shrink-0 items-center gap-2 border-t border-
|
|
17
|
+
return (_jsxs("div", { className: `flex h-10 shrink-0 items-center gap-2 border-t border-[var(--lokvis-border)] bg-[var(--lokvis-surface)] px-3 ${className}`, children: [_jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-[var(--lokvis-fg-subtle)] shrink-0", children: "Pipeline" }), nodes.length === 0 ? (_jsx("span", { className: "text-[11px] text-[var(--lokvis-fg-subtle)]", children: "Empty \u2014 add capabilities from the right panel" })) : (_jsxs("div", { className: "flex flex-1 items-center gap-1 overflow-x-auto min-w-0", children: [_jsxs("div", { className: "flex items-center gap-1 rounded-md bg-[var(--lokvis-surface-muted)] px-2 py-1 text-[10px] font-medium text-[var(--lokvis-fg-muted)] shrink-0", children: [_jsx(Icon, { size: 12, children: _jsx("path", { d: "M12 4.5v15m7.5-7.5h-15" }) }), "Source"] }), _jsx(Icon, { size: 12, className: "shrink-0 text-[var(--lokvis-fg-subtle)]", children: _jsx("path", { d: "m9 5 7 7-7 7" }) }), nodes.map((node, i) => {
|
|
17
18
|
const selected = node.id === selectedNodeId;
|
|
18
|
-
return (_jsxs(React.Fragment, { children: [_jsxs("button", { type: "button", onClick: () => selectNode(node.id),
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
? 'bg-amber-500'
|
|
35
|
-
: status === 'success'
|
|
36
|
-
? 'bg-emerald-500'
|
|
37
|
-
: status === 'failed'
|
|
38
|
-
? 'bg-red-500'
|
|
39
|
-
: status === 'pending'
|
|
40
|
-
? 'bg-zinc-400 dark:bg-zinc-500'
|
|
41
|
-
: 'bg-zinc-300 dark:bg-zinc-600';
|
|
42
|
-
const animate = status === 'running' ? 'animate-pulse' : '';
|
|
43
|
-
return _jsx("span", { className: `h-1.5 w-1.5 rounded-full shrink-0 ${color} ${animate}` });
|
|
19
|
+
return (_jsxs(React.Fragment, { children: [_jsxs("div", { className: "group flex shrink-0 items-center gap-0.5", children: [_jsxs("button", { type: "button", onClick: () => selectNode(node.id), onKeyDown: (e) => {
|
|
20
|
+
// 键盘可达:Delete/Backspace 删除节点(与 WorkflowEditor 一致)
|
|
21
|
+
if (e.key === 'Delete' || e.key === 'Backspace') {
|
|
22
|
+
e.preventDefault();
|
|
23
|
+
removeNode(node.id);
|
|
24
|
+
}
|
|
25
|
+
}, "aria-label": `节点 ${node.capability},位置 ${i + 1},Delete 删除`, "aria-pressed": selected, className: `flex shrink-0 items-center gap-1.5 rounded-md px-2.5 py-1 text-[11px] font-medium transition-all ${FOCUS_RING} ${selected
|
|
26
|
+
? 'bg-[var(--lokvis-primary)]/15 text-[var(--lokvis-primary)] ring-1 ring-[var(--lokvis-primary)]/50'
|
|
27
|
+
: node.status === 'running'
|
|
28
|
+
? 'bg-[var(--lokvis-warning)]/15 text-[var(--lokvis-warning)]'
|
|
29
|
+
: node.status === 'success'
|
|
30
|
+
? 'bg-[var(--lokvis-success)]/15 text-[var(--lokvis-success)]'
|
|
31
|
+
: node.status === 'failed'
|
|
32
|
+
? 'bg-[var(--lokvis-danger)]/15 text-[var(--lokvis-danger)]'
|
|
33
|
+
: 'bg-[var(--lokvis-surface-muted)] text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-border)]'}`, children: [_jsx("span", { className: "font-mono", children: node.capability }), _jsx(StatusDot, { status: node.status })] }), _jsx("button", { type: "button", onClick: () => removeNode(node.id), className: "rounded p-0.5 opacity-0 transition-opacity group-hover:opacity-100 focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--lokvis-danger)] hover:bg-[var(--lokvis-danger)]/15 hover:text-[var(--lokvis-danger)]", "aria-label": "Remove step", children: _jsx(Icon, { size: 10, strokeWidth: 3, children: _jsx("path", { d: "M6 18L18 6M6 6l12 12" }) }) })] }), i < nodes.length - 1 && (_jsx(Icon, { size: 12, className: "shrink-0 text-[var(--lokvis-fg-subtle)]", children: _jsx("path", { d: "m9 5 7 7-7 7" }) }))] }, node.id));
|
|
34
|
+
}), _jsx(Icon, { size: 12, className: "shrink-0 text-[var(--lokvis-fg-subtle)]", children: _jsx("path", { d: "m9 5 7 7-7 7" }) }), _jsxs("div", { className: "flex items-center gap-1 rounded-md bg-[var(--lokvis-surface-muted)] px-2 py-1 text-[10px] font-medium text-[var(--lokvis-fg-muted)] shrink-0", children: [_jsx(Icon, { size: 12, children: _jsx("path", { d: "M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3" }) }), "Output"] })] })), nodes.length > 0 && (_jsxs("span", { className: "shrink-0 text-[10px] tabular-nums text-[var(--lokvis-fg-subtle)]", children: [nodes.length, " step", nodes.length !== 1 ? 's' : ''] }))] }));
|
|
44
35
|
}
|
|
45
36
|
//# sourceMappingURL=PipelineBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineBar.js","sourceRoot":"","sources":["../../src/components/PipelineBar.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"PipelineBar.js","sourceRoot":"","sources":["../../src/components/PipelineBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* ProgressBar - 工作流执行进度条 + 取消按钮(W11.6)
|
|
3
3
|
*
|
|
4
4
|
* 展示:
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* - 节点完成进度(成功数 / 总数)
|
|
6
|
+
* - 横向进度条(running 时动画)
|
|
7
|
+
* - Cancel 按钮(调用 cancelRun)
|
|
8
|
+
* - 状态消息(statusMessage)
|
|
9
9
|
*
|
|
10
10
|
* 仅在 running 或最近一次执行有结果时显示。
|
|
11
11
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,WAAW,gBAAgB;
|
|
1
|
+
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,WAAW,gBAAgB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAc,EAAE,EAAE,gBAAgB,sCAiF/D"}
|
|
@@ -3,10 +3,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
* ProgressBar - 工作流执行进度条 + 取消按钮(W11.6)
|
|
4
4
|
*
|
|
5
5
|
* 展示:
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* - 节点完成进度(成功数 / 总数)
|
|
7
|
+
* - 横向进度条(running 时动画)
|
|
8
|
+
* - Cancel 按钮(调用 cancelRun)
|
|
9
|
+
* - 状态消息(statusMessage)
|
|
10
10
|
*
|
|
11
11
|
* 仅在 running 或最近一次执行有结果时显示。
|
|
12
12
|
*
|
|
@@ -26,10 +26,10 @@ export function ProgressBar({ className = '' }) {
|
|
|
26
26
|
return null;
|
|
27
27
|
if (!running && done === 0)
|
|
28
28
|
return null;
|
|
29
|
-
return (_jsxs("div", { className: `flex items-center gap-2 border-b border-
|
|
30
|
-
? 'bg-
|
|
29
|
+
return (_jsxs("div", { className: `flex items-center gap-2 border-b border-[var(--lokvis-border)] bg-[var(--lokvis-surface)] px-3 py-1.5 ${className}`, role: "status", "aria-live": "polite", "aria-label": `工作流进度:${done} / ${total}`, children: [_jsx("div", { className: "relative h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--lokvis-border)]", children: _jsx("div", { className: `absolute inset-y-0 left-0 transition-all duration-300 ${hasFailure
|
|
30
|
+
? 'bg-[var(--lokvis-danger)]'
|
|
31
31
|
: running
|
|
32
|
-
? 'bg-
|
|
33
|
-
: 'bg-
|
|
32
|
+
? 'bg-[var(--lokvis-primary)]'
|
|
33
|
+
: 'bg-[var(--lokvis-success)]'} ${running ? 'animate-pulse' : ''}`, style: { width: `${pct}%` } }) }), _jsxs("span", { className: "shrink-0 text-[10px] font-medium tabular-nums text-[var(--lokvis-fg-muted)]", children: [done, "/", total, failedCount > 0 && (_jsxs("span", { className: "ml-1 text-[var(--lokvis-danger)]", children: ["(", failedCount, " failed)"] }))] }), running && statusMessage && (_jsx("span", { className: "hidden shrink-0 truncate text-[10px] text-[var(--lokvis-fg-subtle)] sm:inline", children: statusMessage })), running && (_jsxs("button", { type: "button", onClick: () => void cancelRun(), "aria-label": "\u53D6\u6D88\u8FD0\u884C", title: "\u53D6\u6D88\u8FD0\u884C", className: "flex shrink-0 items-center gap-1 rounded-md bg-[var(--lokvis-danger)]/10 px-2 py-0.5 text-[10px] font-medium text-[var(--lokvis-danger)] transition-colors hover:bg-[var(--lokvis-danger)]/15", children: [_jsx(Icon, { size: 10, strokeWidth: 3, children: _jsx("path", { d: "M6 6l12 12M6 18L18 6" }) }), "Cancel"] })), !running && done === total && (_jsxs("span", { className: `flex shrink-0 items-center gap-1 text-[10px] font-medium ${hasFailure ? 'text-[var(--lokvis-danger)]' : 'text-[var(--lokvis-success)]'}`, children: [_jsx(Icon, { size: 10, strokeWidth: 3, children: hasFailure ? (_jsx("path", { d: "M12 2L2 22h20L12 2zM12 9v5M12 17v.01" })) : (_jsx("path", { d: "M20 6L9 17l-5-5" })) }), hasFailure ? 'Failed' : 'Done'] }))] }));
|
|
34
34
|
}
|
|
35
35
|
//# sourceMappingURL=ProgressBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAMtE,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,GAAG,EAAE,EAAoB;
|
|
1
|
+
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAMtE,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,GAAG,EAAE,EAAoB;IAC/D,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAExD,wCAAwC;IACxC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAE5E,qBAAqB;IACrB,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,OAAO,CACP,eACA,SAAS,EAAE,yGAAyG,SAAS,EAAE,EAC/H,IAAI,EAAC,QAAQ,eACH,QAAQ,gBACN,SAAS,IAAI,MAAM,KAAK,EAAE,aAGtC,cAAK,SAAS,EAAC,8EAA8E,YAC7F,cACA,SAAS,EAAE,yDACX,UAAU;wBACV,CAAC,CAAC,2BAA2B;wBAC7B,CAAC,CAAC,OAAO;4BACT,CAAC,CAAC,4BAA4B;4BAC9B,CAAC,CAAC,4BACF,IAAI,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,EACpC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,GACzB,GACI,EAGN,gBAAM,SAAS,EAAC,6EAA6E,aAC5F,IAAI,OAAG,KAAK,EACZ,WAAW,GAAG,CAAC,IAAI,CACpB,gBAAM,SAAS,EAAC,kCAAkC,kBAAG,WAAW,gBAAgB,CAC/E,IACM,EAGN,OAAO,IAAI,aAAa,IAAI,CAC7B,eAAM,SAAS,EAAC,+EAA+E,YAC9F,aAAa,GACP,CACN,EAGA,OAAO,IAAI,CACZ,kBACA,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,SAAS,EAAE,gBACpB,0BAAM,EACjB,KAAK,EAAC,0BAAM,EACZ,SAAS,EAAC,+LAA+L,aAEzM,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,YAAE,eAAM,CAAC,EAAC,sBAAsB,GAAG,GAAO,cAE/D,CACR,EAGA,CAAC,OAAO,IAAI,IAAI,KAAK,KAAK,IAAI,CAC/B,gBACA,SAAS,EAAE,4DACX,UAAU,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,8BAC7C,EAAE,aAEF,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,YAC7B,UAAU,CAAC,CAAC,CAAC,CACd,eAAM,CAAC,EAAC,sCAAsC,GAAG,CAChD,CAAC,CAAC,CAAC,CACJ,eAAM,CAAC,EAAC,iBAAiB,GAAG,CAC3B,GACM,EACN,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IACxB,CACN,IACK,CACL,CAAC;AACH,CAAC"}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* 紧凑单行:左侧状态指示 + 当前工具 + 进度,右侧在线状态 + 资源统计 + 存储配额。
|
|
5
5
|
*
|
|
6
6
|
* W9.6 新增:
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* - 当前选中工具名(从 selectedNode 取)
|
|
8
|
+
* - 执行进度(已完成节点数 / 总节点数)
|
|
9
|
+
* - 在线状态(navigator.onLine + 事件监听)
|
|
10
10
|
*/
|
|
11
11
|
import * as React from 'react';
|
|
12
12
|
export interface StatusBarProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../src/components/StatusBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../src/components/StatusBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,cAAc;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAoBD,wBAAgB,SAAS,CAAC,EAAE,SAAc,EAAE,EAAE,cAAc,qBAwI3D"}
|
|
@@ -5,23 +5,14 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
5
5
|
* 紧凑单行:左侧状态指示 + 当前工具 + 进度,右侧在线状态 + 资源统计 + 存储配额。
|
|
6
6
|
*
|
|
7
7
|
* W9.6 新增:
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* - 当前选中工具名(从 selectedNode 取)
|
|
9
|
+
* - 执行进度(已完成节点数 / 总节点数)
|
|
10
|
+
* - 在线状态(navigator.onLine + 事件监听)
|
|
11
11
|
*/
|
|
12
12
|
import * as React from 'react';
|
|
13
13
|
import { useWorkspaceStore } from '../store/index.js';
|
|
14
14
|
import { useWorkflowProgress } from '../hooks/useWorkflowProgress.js';
|
|
15
|
-
|
|
16
|
-
function formatBytes(bytes) {
|
|
17
|
-
if (bytes < 1024)
|
|
18
|
-
return `${bytes} B`;
|
|
19
|
-
if (bytes < 1024 * 1024)
|
|
20
|
-
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
21
|
-
if (bytes < 1024 * 1024 * 1024)
|
|
22
|
-
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
23
|
-
return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
|
|
24
|
-
}
|
|
15
|
+
import { formatBytes } from '../utils.js';
|
|
25
16
|
/** useOnlineStatus - 监听 navigator.onLine + online/offline 事件(W9.6) */
|
|
26
17
|
function useOnlineStatus() {
|
|
27
18
|
const [online, setOnline] = React.useState(() => typeof navigator !== 'undefined' ? navigator.onLine : true);
|
|
@@ -56,15 +47,15 @@ export function StatusBar({ className = '' }) {
|
|
|
56
47
|
const ratio = storageUsage ? storageUsage.usage / storageUsage.quota : 0;
|
|
57
48
|
const storageCritical = ratio >= 0.95;
|
|
58
49
|
const storageWarning = ratio >= 0.8 && !storageCritical;
|
|
59
|
-
return (_jsxs("footer", { className: `flex h-
|
|
60
|
-
? 'bg-
|
|
50
|
+
return (_jsxs("footer", { className: `flex h-[var(--lokvis-statusbar-h)] shrink-0 items-center justify-between border-t border-[var(--lokvis-border)] bg-[var(--lokvis-surface)] px-3 ${className}`, children: [_jsxs("div", { className: "flex items-center gap-2 min-w-0", role: "status", "aria-live": "polite", children: [_jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: `h-1.5 w-1.5 rounded-full shrink-0 ${error
|
|
51
|
+
? 'bg-[var(--lokvis-danger)]'
|
|
61
52
|
: running
|
|
62
|
-
? 'bg-
|
|
63
|
-
: 'bg-
|
|
64
|
-
? 'text-
|
|
53
|
+
? 'bg-[var(--lokvis-warning)] animate-pulse'
|
|
54
|
+
: 'bg-[var(--lokvis-success)]'}`, "aria-hidden": "true" }), _jsx("span", { className: `truncate text-[10px] ${error ? 'text-[var(--lokvis-danger)]' : 'text-[var(--lokvis-fg-muted)]'}`, children: statusMessage })] }), selectedNode && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", "aria-hidden": "true", children: "\u00B7" }), _jsx("span", { className: "shrink-0 font-mono text-[10px] text-[var(--lokvis-primary)] truncate max-w-[120px]", children: selectedNode.capability })] })), running && totalNodes > 0 && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", "aria-hidden": "true", children: "\u00B7" }), _jsxs("span", { className: "shrink-0 tabular-nums text-[10px] text-[var(--lokvis-warning)]", children: [doneNodes, "/", totalNodes, " (", progressPct, "%)"] })] })), error && (_jsx("button", { type: "button", onClick: () => setError(null), className: "shrink-0 text-[10px] text-[var(--lokvis-danger)] underline decoration-[var(--lokvis-danger)]/40 hover:text-[var(--lokvis-danger)]", children: "dismiss" }))] }), _jsxs("div", { className: "flex items-center gap-3 shrink-0 text-[10px] text-[var(--lokvis-fg-subtle)] tabular-nums", children: [_jsxs("span", { className: `flex items-center gap-1 ${online ? 'text-[var(--lokvis-success)]' : 'text-[var(--lokvis-warning)]'}`, title: online ? 'Online' : 'Offline — running locally, no upload needed', "aria-label": online ? 'Online' : 'Offline — files still processed locally', children: [_jsx("span", { className: `h-1.5 w-1.5 rounded-full ${online ? 'bg-[var(--lokvis-success)]' : 'bg-[var(--lokvis-warning)]'}`, "aria-hidden": "true" }), online ? 'Online' : 'Offline'] }), _jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", "aria-hidden": "true", children: "|" }), storageUsage && (_jsxs(_Fragment, { children: [_jsxs("span", { className: `flex items-center gap-1 ${storageCritical
|
|
55
|
+
? 'text-[var(--lokvis-danger)] font-semibold'
|
|
65
56
|
: storageWarning
|
|
66
|
-
? 'text-
|
|
67
|
-
: 'text-
|
|
57
|
+
? 'text-[var(--lokvis-warning)]'
|
|
58
|
+
: 'text-[var(--lokvis-fg-subtle)]'}`, title: storageCritical
|
|
68
59
|
? `Storage almost full (${Math.round(ratio * 100)}%) — clean up to free space`
|
|
69
60
|
: storageWarning
|
|
70
61
|
? `Storage nearing limit (${Math.round(ratio * 100)}%)`
|
|
@@ -72,6 +63,6 @@ export function StatusBar({ className = '' }) {
|
|
|
72
63
|
? `Storage critical: ${formatBytes(storageUsage.usage)} of ${formatBytes(storageUsage.quota)} used, ${Math.round(ratio * 100)} percent. Clean up to free space.`
|
|
73
64
|
: storageWarning
|
|
74
65
|
? `Storage warning: ${formatBytes(storageUsage.usage)} of ${formatBytes(storageUsage.quota)} used, ${Math.round(ratio * 100)} percent.`
|
|
75
|
-
: `Storage: ${formatBytes(storageUsage.usage)} of ${formatBytes(storageUsage.quota)} used.`, "aria-live": storageCritical ? 'assertive' : 'polite', children: [(storageCritical || storageWarning) && (_jsx("span", { className: "text-[9px]", "aria-hidden": "true", children: "\u26A0" })), formatBytes(storageUsage.usage), " / ", formatBytes(storageUsage.quota)] }), _jsx("span", { className: "text-
|
|
66
|
+
: `Storage: ${formatBytes(storageUsage.usage)} of ${formatBytes(storageUsage.quota)} used.`, "aria-live": storageCritical ? 'assertive' : 'polite', children: [(storageCritical || storageWarning) && (_jsx("span", { className: "text-[9px]", "aria-hidden": "true", children: "\u26A0" })), formatBytes(storageUsage.usage), " / ", formatBytes(storageUsage.quota)] }), _jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", "aria-hidden": "true", children: "|" })] })), _jsxs("span", { children: [assets.length, " asset", assets.length !== 1 ? 's' : ''] }), _jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", "aria-hidden": "true", children: "|" }), _jsxs("span", { children: [capabilities.length, " cap", capabilities.length !== 1 ? 's' : ''] }), _jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", "aria-hidden": "true", children: "|" }), _jsxs("span", { children: [nodes.length, " step", nodes.length !== 1 ? 's' : ''] })] })] }));
|
|
76
67
|
}
|
|
77
68
|
//# sourceMappingURL=StatusBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../src/components/StatusBar.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../src/components/StatusBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StatusDot - 节点状态指示圆点
|
|
3
|
+
*
|
|
4
|
+
* 根据 status 显示不同颜色,running 时带 pulse 动画。
|
|
5
|
+
* PipelineBar 与 WorkflowEditor 共享此组件。
|
|
6
|
+
*/
|
|
7
|
+
export interface StatusDotProps {
|
|
8
|
+
/** 节点状态(pending/running/success/failed/idle) */
|
|
9
|
+
status: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function StatusDot({ status }: StatusDotProps): import("react").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=StatusDot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusDot.d.ts","sourceRoot":"","sources":["../../src/components/StatusDot.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,+BAenD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export function StatusDot({ status }) {
|
|
3
|
+
const color = status === 'running'
|
|
4
|
+
? 'bg-[var(--lokvis-warning)]'
|
|
5
|
+
: status === 'success'
|
|
6
|
+
? 'bg-[var(--lokvis-success)]'
|
|
7
|
+
: status === 'failed'
|
|
8
|
+
? 'bg-[var(--lokvis-danger)]'
|
|
9
|
+
: status === 'pending'
|
|
10
|
+
? 'bg-[var(--lokvis-fg-subtle)]'
|
|
11
|
+
: 'bg-[var(--lokvis-fg-subtle)]';
|
|
12
|
+
const animate = status === 'running' ? 'animate-pulse' : '';
|
|
13
|
+
return _jsx("span", { className: `h-1.5 w-1.5 rounded-full shrink-0 ${color} ${animate}` });
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=StatusDot.js.map
|