@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":"AssetPanel.d.ts","sourceRoot":"","sources":["../../src/components/AssetPanel.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"AssetPanel.d.ts","sourceRoot":"","sources":["../../src/components/AssetPanel.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,eAAe;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAaD,wBAAgB,UAAU,CAAC,EAAE,SAAc,EAAE,EAAE,eAAe,qBAiO7D"}
|
|
@@ -6,7 +6,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
* 支持拖拽导入、点击选择、缩略图预览、按类型/关键词筛选、删除(W6.5)。
|
|
7
7
|
*/
|
|
8
8
|
import * as React from 'react';
|
|
9
|
-
import { Icon } from '@lokvis/ui-core';
|
|
9
|
+
import { FOCUS_RING, Icon, Input } from '@lokvis/ui-core';
|
|
10
10
|
import { useWorkspaceStore } from '../store/index.js';
|
|
11
11
|
/** 类型筛选 chip 显示名 */
|
|
12
12
|
const TYPE_LABEL = {
|
|
@@ -25,14 +25,11 @@ export function AssetPanel({ className = '' }) {
|
|
|
25
25
|
const importFiles = useWorkspaceStore((s) => s.importFiles);
|
|
26
26
|
const selectAsset = useWorkspaceStore((s) => s.selectAsset);
|
|
27
27
|
const removeAsset = useWorkspaceStore((s) => s.removeAsset);
|
|
28
|
-
const
|
|
29
|
-
const runtime = useWorkspaceStore((s) => s.runtime);
|
|
28
|
+
const ensureThumbnails = useWorkspaceStore((s) => s.ensureThumbnails);
|
|
30
29
|
const [dragging, setDragging] = React.useState(false);
|
|
31
30
|
// W6.5 筛选:类型 + 关键词(纯 UI 状态,不入 store)
|
|
32
31
|
const [filterType, setFilterType] = React.useState('all');
|
|
33
32
|
const [searchQuery, setSearchQuery] = React.useState('');
|
|
34
|
-
// B2 修复:跟踪 in-flight exportAsset,避免同一 asset 跨 effect 重跑并发发起
|
|
35
|
-
const inflightRef = React.useRef(new Set());
|
|
36
33
|
async function handleFiles(files) {
|
|
37
34
|
if (!files)
|
|
38
35
|
return;
|
|
@@ -40,52 +37,11 @@ export function AssetPanel({ className = '' }) {
|
|
|
40
37
|
if (arr.length > 0)
|
|
41
38
|
await importFiles(arr);
|
|
42
39
|
}
|
|
43
|
-
//
|
|
44
|
-
//
|
|
45
|
-
// - cancelled flag:effect 重跑/卸载时,await 完成的 exportAsset 不再创建
|
|
46
|
-
// ObjectURL 也不 setThumbnail,避免覆盖更新值与孤儿 URL
|
|
47
|
-
// - inflightRef:同一 asset 在上一轮 effect 还在 await 时,新一轮 effect
|
|
48
|
-
// 不再重复发起(批量导入 assets 频繁变化场景)
|
|
40
|
+
// TD-5.1:缩略图生成统一在 store.ensureThumbnails 中管理(创建/替换/释放闭环)。
|
|
41
|
+
// 组件只需在 assets 变化时触发一次,inflight 去重 + 资产存在性检查在 store 内完成。
|
|
49
42
|
React.useEffect(() => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
let cancelled = false;
|
|
53
|
-
const inflight = inflightRef.current;
|
|
54
|
-
for (const asset of assets) {
|
|
55
|
-
if (thumbnails[asset.id])
|
|
56
|
-
continue;
|
|
57
|
-
if (asset.type !== 'image')
|
|
58
|
-
continue;
|
|
59
|
-
if (inflight.has(asset.id))
|
|
60
|
-
continue;
|
|
61
|
-
inflight.add(asset.id);
|
|
62
|
-
(async () => {
|
|
63
|
-
try {
|
|
64
|
-
const blob = await runtime.exportAsset(asset.id);
|
|
65
|
-
// effect 已过期或资产已删除:不创建 ObjectURL(零泄漏)
|
|
66
|
-
if (cancelled)
|
|
67
|
-
return;
|
|
68
|
-
const url = URL.createObjectURL(blob);
|
|
69
|
-
if (cancelled) {
|
|
70
|
-
// 双重检查:await 与 createObjectURL 之间可能被取消
|
|
71
|
-
URL.revokeObjectURL(url);
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
setThumbnail(asset.id, url);
|
|
75
|
-
}
|
|
76
|
-
catch {
|
|
77
|
-
// ignore export 失败
|
|
78
|
-
}
|
|
79
|
-
finally {
|
|
80
|
-
inflight.delete(asset.id);
|
|
81
|
-
}
|
|
82
|
-
})();
|
|
83
|
-
}
|
|
84
|
-
return () => {
|
|
85
|
-
cancelled = true;
|
|
86
|
-
};
|
|
87
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
88
|
-
}, [assets, runtime]);
|
|
43
|
+
ensureThumbnails();
|
|
44
|
+
}, [assets, ensureThumbnails]);
|
|
89
45
|
// 资产中实际存在的类型(仅展示有意义的 chip,避免空类型噪音)
|
|
90
46
|
const availableTypes = React.useMemo(() => {
|
|
91
47
|
const set = new Set();
|
|
@@ -106,22 +62,22 @@ export function AssetPanel({ className = '' }) {
|
|
|
106
62
|
}
|
|
107
63
|
return result;
|
|
108
64
|
}, [assets, filterType, searchQuery]);
|
|
109
|
-
return (_jsxs("aside", { className: `flex w-56 shrink-0 flex-col border-r border-
|
|
65
|
+
return (_jsxs("aside", { className: `flex w-56 shrink-0 flex-col border-r border-[var(--lokvis-border)] ${className}`, onDragOver: (e) => {
|
|
110
66
|
e.preventDefault();
|
|
111
67
|
setDragging(true);
|
|
112
68
|
}, onDragLeave: () => setDragging(false), onDrop: (e) => {
|
|
113
69
|
e.preventDefault();
|
|
114
70
|
setDragging(false);
|
|
115
71
|
void handleFiles(e.dataTransfer.files);
|
|
116
|
-
}, children: [_jsxs("div", { className: "flex items-center justify-between px-3 h-
|
|
72
|
+
}, 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: "Assets" }), _jsx("span", { className: "text-[11px] tabular-nums text-[var(--lokvis-fg-subtle)]", children: filterType === 'all' && !searchQuery
|
|
117
73
|
? assets.length
|
|
118
74
|
: `${filteredAssets.length}/${assets.length}` })] }), _jsxs("label", { className: `m-2 block cursor-pointer rounded-lg border border-dashed px-2 py-3 text-center transition-all ${dragging
|
|
119
|
-
? 'border-
|
|
120
|
-
: 'border-
|
|
121
|
-
? 'bg-
|
|
122
|
-
: 'bg-
|
|
123
|
-
? 'bg-
|
|
124
|
-
: 'bg-
|
|
75
|
+
? 'border-[var(--lokvis-primary)] bg-[var(--lokvis-primary)]/10 text-[var(--lokvis-primary)]'
|
|
76
|
+
: 'border-[var(--lokvis-border)] text-[var(--lokvis-fg-subtle)] hover:border-[var(--lokvis-primary)]/50 hover:bg-[var(--lokvis-primary)]/5 hover:text-[var(--lokvis-primary)]'}`, children: [_jsx("input", { type: "file", multiple: true, className: "hidden", onChange: (e) => handleFiles(e.target.files) }), _jsx(Icon, { size: 16, className: "mx-auto", children: _jsx("path", { d: "M12 4.5v15m7.5-7.5h-15" }) }), _jsx("span", { className: "mt-1 block text-[10px] font-medium", children: dragging ? 'Drop here' : 'Add files' })] }), assets.length > 0 && (_jsxs("div", { className: "px-2 pb-2 space-y-1.5", children: [_jsxs("div", { role: "radiogroup", "aria-label": "Filter by type", className: "flex flex-wrap gap-1", children: [_jsx("button", { type: "button", role: "radio", "aria-checked": filterType === 'all', onClick: () => setFilterType('all'), className: `rounded px-1.5 py-0.5 text-[10px] font-medium transition-colors ${filterType === 'all'
|
|
77
|
+
? 'bg-[var(--lokvis-primary)]/15 text-[var(--lokvis-primary)]'
|
|
78
|
+
: 'bg-[var(--lokvis-surface-muted)] text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-border)]'}`, children: "All" }), availableTypes.map((t) => (_jsx("button", { type: "button", role: "radio", "aria-checked": filterType === t, onClick: () => setFilterType(t), className: `rounded px-1.5 py-0.5 text-[10px] font-medium transition-colors ${filterType === t
|
|
79
|
+
? 'bg-[var(--lokvis-primary)]/15 text-[var(--lokvis-primary)]'
|
|
80
|
+
: 'bg-[var(--lokvis-surface-muted)] text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-border)]'}`, children: TYPE_LABEL[t] }, t)))] }), _jsx(Input, { size: "sm", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), placeholder: "Filter by type...", "aria-label": "Filter assets by format", className: "bg-[var(--lokvis-surface-muted)] hover:bg-[var(--lokvis-border)]/50", leadingIcon: _jsxs(Icon, { size: 11, children: [_jsx("circle", { cx: "10", cy: "10", r: "6" }), _jsx("path", { d: "m20 20-5-5" })] }) })] })), _jsx("div", { className: "flex-1 overflow-y-auto px-2 pb-2", children: assets.length === 0 ? (_jsx("p", { className: "px-1 py-4 text-center text-[10px] text-[var(--lokvis-fg-subtle)]", children: "No assets imported" })) : filteredAssets.length === 0 ? (_jsx("p", { className: "px-1 py-4 text-center text-[10px] text-[var(--lokvis-fg-subtle)]", children: "No assets match filter" })) : (_jsx("ul", { className: "space-y-1", children: filteredAssets.map((asset) => {
|
|
125
81
|
const selected = asset.id === selectedAssetId;
|
|
126
82
|
const thumb = thumbnails[asset.id];
|
|
127
83
|
return (_jsxs("li", {
|
|
@@ -131,12 +87,12 @@ export function AssetPanel({ className = '' }) {
|
|
|
131
87
|
e.preventDefault();
|
|
132
88
|
selectAsset(asset.id);
|
|
133
89
|
}
|
|
134
|
-
}, className: `group flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-xs transition-all
|
|
135
|
-
? 'bg-
|
|
136
|
-
: 'hover:bg-
|
|
90
|
+
}, className: `group flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-xs transition-all ${FOCUS_RING} ${selected
|
|
91
|
+
? 'bg-[var(--lokvis-primary)]/10 ring-1 ring-[var(--lokvis-primary)]/40'
|
|
92
|
+
: 'hover:bg-[var(--lokvis-surface)]'}`, children: [_jsx("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center overflow-hidden rounded bg-[var(--lokvis-surface-muted)]", children: thumb ? (_jsx("img", { src: thumb, alt: "", className: "h-full w-full object-cover" })) : (_jsx("span", { className: "text-[10px] font-medium text-[var(--lokvis-fg-subtle)]", children: asset.metadata.format.slice(0, 3).toUpperCase() })) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate text-[11px] font-medium", children: asset.metadata.format }), _jsxs("div", { className: "text-[10px] text-[var(--lokvis-fg-subtle)]", children: [(asset.metadata.size / 1024).toFixed(1), " KB"] })] }), _jsx("button", { type: "button", onClick: (e) => {
|
|
137
93
|
e.stopPropagation();
|
|
138
94
|
void removeAsset(asset.id);
|
|
139
|
-
}, className: "shrink-0 rounded p-0.5 text-
|
|
95
|
+
}, className: "shrink-0 rounded p-0.5 text-[var(--lokvis-fg-subtle)] opacity-0 transition-all hover:bg-[var(--lokvis-danger)]/10 hover:text-[var(--lokvis-danger)] focus:opacity-100 group-hover:opacity-100", "aria-label": `Remove asset ${asset.metadata.format}`, children: _jsx(Icon, { size: 12, children: _jsx("path", { d: "M6 18L18 6M6 6l12 12" }) }) })] }, asset.id));
|
|
140
96
|
}) })) })] }));
|
|
141
97
|
}
|
|
142
98
|
//# sourceMappingURL=AssetPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetPanel.js","sourceRoot":"","sources":["../../src/components/AssetPanel.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"AssetPanel.js","sourceRoot":"","sources":["../../src/components/AssetPanel.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAMtD,oBAAoB;AACpB,MAAM,UAAU,GAA8B;IAC7C,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,OAAO;CAChB,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,EAAE,SAAS,GAAG,EAAE,EAAmB;IAC7D,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAEtE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,qCAAqC;IACrC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAoB,KAAK,CAAC,CAAC;IAC7E,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEzD,KAAK,UAAU,WAAW,CAAC,KAA+B;QAC1D,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,0DAA0D;IAC1D,yDAAyD;IACzD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACrB,gBAAgB,EAAE,CAAC;IACnB,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE/B,mCAAmC;IACnC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAa,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,WAAW;IACX,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC1C,IAAI,MAAM,GAAG,MAAM,CAAC;QACpB,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC;YACR,MAAM,GAAG,MAAM,CAAC,MAAM,CACtB,CAAC,CAAC,EAAE,EAAE,CACN,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC3C,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC5C,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAC;IACd,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IAEtC,OAAO,CACP,iBACA,SAAS,EAAE,sEAAsE,SAAS,EAAE,EAC5F,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,EACD,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EACrC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACd,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,WAAW,CAAC,KAAK,CAAC,CAAC;YACnB,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,aAGD,eAAK,SAAS,EAAC,yHAAyH,aACxI,eAAM,SAAS,EAAC,mFAAmF,uBAE5F,EACP,eAAM,SAAS,EAAC,yDAAyD,YACxE,UAAU,KAAK,KAAK,IAAI,CAAC,WAAW;4BACrC,CAAC,CAAC,MAAM,CAAC,MAAM;4BACf,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GACtC,IACD,EAGN,iBACA,SAAS,EAAE,iGACX,QAAQ;oBACR,CAAC,CAAC,2FAA2F;oBAC7F,CAAC,CAAC,4KACF,EAAE,aAEF,gBACA,IAAI,EAAC,MAAM,EACX,QAAQ,QACR,SAAS,EAAC,QAAQ,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAC1C,EACF,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,SAAS,YACnC,eAAM,CAAC,EAAC,wBAAwB,GAAG,GAC5B,EACP,eAAM,SAAS,EAAC,oCAAoC,YACnD,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,GAC9B,IACC,EAGP,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,eAAK,SAAS,EAAC,uBAAuB,aAEtC,eACA,IAAI,EAAC,YAAY,gBACN,gBAAgB,EAC3B,SAAS,EAAC,sBAAsB,aAEhC,iBACA,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,kBACE,UAAU,KAAK,KAAK,EAClC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,mEACX,UAAU,KAAK,KAAK;oCACpB,CAAC,CAAC,4DAA4D;oCAC9D,CAAC,CAAC,gGACF,EAAE,oBAGO,EACR,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC3B,iBAEA,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,kBACE,UAAU,KAAK,CAAC,EAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAC/B,SAAS,EAAE,mEACX,UAAU,KAAK,CAAC;oCAChB,CAAC,CAAC,4DAA4D;oCAC9D,CAAC,CAAC,gGACF,EAAE,YAED,UAAU,CAAC,CAAC,CAAC,IAXT,CAAC,CAYG,CACR,CAAC,IACI,EAEN,KAAC,KAAK,IACN,IAAI,EAAC,IAAI,EACT,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC/C,WAAW,EAAC,mBAAmB,gBACpB,yBAAyB,EACpC,SAAS,EAAC,qEAAqE,EAC/E,WAAW,EACX,MAAC,IAAI,IAAC,IAAI,EAAE,EAAE,aACd,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,GAAG,EAChC,eAAM,CAAC,EAAC,YAAY,GAAG,IAChB,GAEL,IACI,CACL,EAGD,cAAK,SAAS,EAAC,kCAAkC,YAChD,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACvB,YAAG,SAAS,EAAC,kEAAkE,mCAE3E,CACH,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAClC,YAAG,SAAS,EAAC,kEAAkE,uCAE3E,CACH,CAAC,CAAC,CAAC,CACJ,aAAI,SAAS,EAAC,WAAW,YACxB,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,KAAK,eAAe,CAAC;wBAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACnC,OAAO,CACP;4BAEA,0DAA0D;4BAC1D,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,QAAQ,kBACC,QAAQ,gBACV,gBAAgB,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EACnD,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EACpC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;gCACjB,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;oCACzC,CAAC,CAAC,cAAc,EAAE,CAAC;oCACnB,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gCACtB,CAAC;4BACD,CAAC,EACD,SAAS,EAAE,8FAA8F,UAAU,IACnH,QAAQ;gCACR,CAAC,CAAC,sEAAsE;gCACxE,CAAC,CAAC,kCACF,EAAE,aAEF,cAAK,SAAS,EAAC,4GAA4G,YAC1H,KAAK,CAAC,CAAC,CAAC,CACT,cAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC,EAAE,EAAC,SAAS,EAAC,4BAA4B,GAAG,CAChE,CAAC,CAAC,CAAC,CACJ,eAAM,SAAS,EAAC,wDAAwD,YAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAQ,CAChI,GACK,EACN,eAAK,SAAS,EAAC,gBAAgB,aAC/B,cAAK,SAAS,EAAC,kCAAkC,YAChD,KAAK,CAAC,QAAQ,CAAC,MAAM,GAChB,EACN,eAAK,SAAS,EAAC,4CAA4C,aAC1D,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAClC,IACA,EACN,iBACA,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;wCACf,CAAC,CAAC,eAAe,EAAE,CAAC;wCACpB,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oCAC3B,CAAC,EACD,SAAS,EAAC,+LAA+L,gBAC7L,gBAAgB,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,YAEnD,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,YAAE,eAAM,CAAC,EAAC,sBAAsB,GAAG,GAAO,GAC/C,KA5CJ,KAAK,CAAC,EAAE,CA6CR,CACJ,CAAC;oBACF,CAAC,CAAC,GACG,CACJ,GACK,IACE,CACP,CAAC;AACH,CAAC"}
|
|
@@ -5,15 +5,15 @@
|
|
|
5
5
|
* 工作流节点链已移至独立的 PipelineBar 组件。
|
|
6
6
|
*
|
|
7
7
|
* W9.4: 当存在 lastOutputIds 时,可切换到 CompareSlider 模式,
|
|
8
|
-
*
|
|
8
|
+
* 并排展示 before/after。
|
|
9
9
|
*/
|
|
10
10
|
import * as React from 'react';
|
|
11
11
|
export interface CanvasProps {
|
|
12
12
|
className?: string;
|
|
13
13
|
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
* 是否启用 before/after 对比模式(W9.4)。
|
|
15
|
+
* 默认 true;关闭后即使有 outputs 也只显示单图预览。
|
|
16
|
+
*/
|
|
17
17
|
enableCompare?: boolean;
|
|
18
18
|
}
|
|
19
19
|
export declare function Canvas({ className, enableCompare }: CanvasProps): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../src/components/Canvas.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,WAAW;
|
|
1
|
+
{"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../src/components/Canvas.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,WAAW;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;MAGE;IACF,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,MAAM,CAAC,EAAE,SAAc,EAAE,aAAoB,EAAE,EAAE,WAAW,qBAoL3E"}
|
|
@@ -6,7 +6,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
6
6
|
* 工作流节点链已移至独立的 PipelineBar 组件。
|
|
7
7
|
*
|
|
8
8
|
* W9.4: 当存在 lastOutputIds 时,可切换到 CompareSlider 模式,
|
|
9
|
-
*
|
|
9
|
+
* 并排展示 before/after。
|
|
10
10
|
*/
|
|
11
11
|
import * as React from 'react';
|
|
12
12
|
import { Icon } from '@lokvis/ui-core';
|
|
@@ -56,16 +56,16 @@ export function Canvas({ className = '', enableCompare = true }) {
|
|
|
56
56
|
if (e.dataTransfer.files.length > 0) {
|
|
57
57
|
void importFiles(Array.from(e.dataTransfer.files));
|
|
58
58
|
}
|
|
59
|
-
}, children: _jsxs("div", { className: "relative flex flex-1 items-center justify-center bg-
|
|
60
|
-
backgroundImage: 'radial-gradient(circle,
|
|
59
|
+
}, children: _jsxs("div", { className: "relative flex flex-1 items-center justify-center bg-[var(--lokvis-surface)]", children: [_jsx("div", { className: "absolute inset-0 opacity-[0.35]", style: {
|
|
60
|
+
backgroundImage: 'radial-gradient(circle, var(--lokvis-border) 1px, transparent 1px)',
|
|
61
61
|
backgroundSize: '20px 20px',
|
|
62
|
-
} }), canCompare && (_jsxs("div", { className: "absolute top-2 right-2 z-20 flex items-center gap-1 rounded-md bg-
|
|
63
|
-
? 'bg-
|
|
64
|
-
: 'text-
|
|
65
|
-
? 'bg-
|
|
66
|
-
: 'text-
|
|
62
|
+
} }), canCompare && (_jsxs("div", { role: "group", "aria-label": "\u5BF9\u6BD4\u6A21\u5F0F\u5207\u6362", className: "absolute top-2 right-2 z-20 flex items-center gap-1 rounded-md bg-[var(--lokvis-surface)]/90 p-0.5 shadow-[var(--lokvis-elevation-1)] backdrop-blur-sm", children: [_jsx("button", { type: "button", onClick: () => setCompareMode(false), "aria-pressed": !compareMode, className: `rounded px-2 py-1 text-[10px] font-medium transition-colors ${!compareMode
|
|
63
|
+
? 'bg-[var(--lokvis-primary)]/15 text-[var(--lokvis-primary)]'
|
|
64
|
+
: 'text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-surface-muted)]'}`, children: "Single" }), _jsx("button", { type: "button", onClick: () => setCompareMode(true), "aria-pressed": compareMode, className: `rounded px-2 py-1 text-[10px] font-medium transition-colors ${compareMode
|
|
65
|
+
? 'bg-[var(--lokvis-primary)]/15 text-[var(--lokvis-primary)]'
|
|
66
|
+
: 'text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-surface-muted)]'}`, children: "Compare" })] })), dragOver && (_jsx("div", { className: "absolute inset-4 z-10 rounded-xl border-2 border-dashed border-[var(--lokvis-primary)] bg-[var(--lokvis-primary)]/10 flex items-center justify-center", children: _jsxs("div", { className: "text-center", children: [_jsx(Icon, { size: 32, className: "mx-auto text-[var(--lokvis-primary)]", strokeWidth: 1.5, 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.5m-13.5-9L12 3m0 0 4.5 4.5M12 3v13.5" }) }), _jsx("p", { className: "mt-2 text-sm font-medium text-[var(--lokvis-primary)]", children: "Drop files to import" })] }) })), compareMode && canCompare ? (_jsx("div", { className: "relative flex max-h-[calc(100%-4rem)] max-w-[calc(100%-4rem)] items-center justify-center", children: _jsx(CompareSlider, { className: "max-h-[calc(100vh-12rem)] max-w-full" }) })) : selected ? (preview ? (_jsxs("div", { className: "relative", children: [_jsx("img", { src: preview, alt: selected.metadata.format, className: "max-h-[calc(100%-4rem)] max-w-[calc(100%-4rem)] rounded-lg object-contain shadow-[var(--lokvis-elevation-3)] ring-1 ring-[var(--lokvis-border)]/50" }), _jsx("div", { className: "absolute bottom-2 left-2 rounded-lg bg-[var(--lokvis-surface)]/90 px-2.5 py-1 text-[11px] text-[var(--lokvis-fg-muted)] shadow-[var(--lokvis-elevation-1)] backdrop-blur-sm", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "font-medium", children: selected.metadata.format.toUpperCase() }), selected.metadata.dimensions && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", children: "\u00B7" }), _jsxs("span", { children: [selected.metadata.dimensions.width, " x ", selected.metadata.dimensions.height] })] })), _jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", children: "\u00B7" }), _jsxs("span", { children: [(selected.metadata.size / 1024).toFixed(1), " KB"] })] }) })] })) : (_jsxs("div", { className: "flex flex-col items-center gap-3", children: [_jsx("div", { className: "h-28 w-28 animate-pulse rounded-xl bg-[var(--lokvis-border)]" }), _jsx("span", { className: "text-xs text-[var(--lokvis-fg-subtle)]", children: "Loading preview..." })] }))) : (_jsxs("div", { className: "relative flex flex-col items-center gap-5 px-6 text-center", children: [_jsx("div", { className: "flex h-20 w-20 items-center justify-center rounded-2xl bg-[var(--lokvis-surface)] shadow-[var(--lokvis-elevation-1)] ring-1 ring-[var(--lokvis-border)]/80", children: _jsx(Icon, { size: 36, className: "text-[var(--lokvis-fg-subtle)]", strokeWidth: 1.5, children: _jsx("path", { d: "m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z" }) }) }), _jsxs("div", { children: [_jsx("p", { className: "text-sm font-medium text-[var(--lokvis-fg-muted)]", children: "No asset selected" }), _jsx("p", { className: "mt-1.5 text-xs text-[var(--lokvis-fg-subtle)]", children: assets.length === 0
|
|
67
67
|
? 'Import files to get started, or drag them here'
|
|
68
|
-
: 'Select an asset from the left panel' })] }), assets.length === 0 && (_jsxs("label", { className: "mt-2 inline-flex items-center gap-1.5 rounded-lg bg-
|
|
68
|
+
: 'Select an asset from the left panel' })] }), assets.length === 0 && (_jsxs("label", { className: "mt-2 inline-flex items-center gap-1.5 rounded-lg bg-[var(--lokvis-primary-hover)] px-4 py-2 text-xs font-medium text-[var(--lokvis-primary-fg)] shadow-[var(--lokvis-elevation-1)] cursor-pointer transition-colors hover:bg-[var(--lokvis-primary)]", children: [_jsx(Icon, { size: 14, children: _jsx("path", { d: "M12 4.5v15m7.5-7.5h-15" }) }), "Import Files", _jsx("input", { type: "file", multiple: true, className: "hidden", onChange: (e) => {
|
|
69
69
|
if (e.target.files)
|
|
70
70
|
void importFiles(Array.from(e.target.files));
|
|
71
71
|
} })] }))] }))] }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Canvas.js","sourceRoot":"","sources":["../../src/components/Canvas.tsx"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAWnD,MAAM,UAAU,MAAM,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,aAAa,GAAG,IAAI,EAAe;
|
|
1
|
+
{"version":3,"file":"Canvas.js","sourceRoot":"","sources":["../../src/components/Canvas.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* CommandPalette - ⌘K 工具选择器(W9.2)
|
|
3
3
|
*
|
|
4
4
|
* Command Palette 风格的快捷工具入口:
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* - ⌘K / Ctrl+K 打开
|
|
6
|
+
* - ESC 关闭
|
|
7
|
+
* - 输入关键词过滤能力列表
|
|
8
|
+
* - ↑↓ 选择,Enter 添加到工作流,or 鼠标点击
|
|
9
9
|
*
|
|
10
10
|
* 数据源:`store.capabilities`,与 Inspector 右侧能力列表同源。
|
|
11
11
|
* 选中后调用 `store.addNode(cap.name)` 添加到工作流,并关闭面板。
|
|
@@ -34,9 +34,9 @@ export declare function CommandPalette({ open, onClose, className }: CommandPale
|
|
|
34
34
|
* // 或禁用快捷键(仍可受控使用 open/setOpen):
|
|
35
35
|
* const [open, setOpen] = useCommandPalette({ enabled: false });
|
|
36
36
|
* return (
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
37
|
+
* <>
|
|
38
|
+
* <CommandPalette open={open} onClose={() => setOpen(false)} />
|
|
39
|
+
* </>
|
|
40
40
|
* );
|
|
41
41
|
* ```
|
|
42
42
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/components/CommandPalette.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,mBAAmB;
|
|
1
|
+
{"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/components/CommandPalette.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,mBAAmB;IACnC,eAAe;IACf,IAAI,EAAE,OAAO,CAAC;IACd,WAAW;IACX,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAc,EAAE,EAAE,mBAAmB,qBAiOpF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,wBAAwB;IACxC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAChC,OAAO,GAAE,wBAA6B,GACpC,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAkB1D"}
|
|
@@ -3,10 +3,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
* CommandPalette - ⌘K 工具选择器(W9.2)
|
|
4
4
|
*
|
|
5
5
|
* Command Palette 风格的快捷工具入口:
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* - ⌘K / Ctrl+K 打开
|
|
7
|
+
* - ESC 关闭
|
|
8
|
+
* - 输入关键词过滤能力列表
|
|
9
|
+
* - ↑↓ 选择,Enter 添加到工作流,or 鼠标点击
|
|
10
10
|
*
|
|
11
11
|
* 数据源:`store.capabilities`,与 Inspector 右侧能力列表同源。
|
|
12
12
|
* 选中后调用 `store.addNode(cap.name)` 添加到工作流,并关闭面板。
|
|
@@ -120,18 +120,18 @@ export function CommandPalette({ open, onClose, className = '' }) {
|
|
|
120
120
|
handleSelect(cmd);
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
|
-
return (_jsx(Dialog, { open: open, onClose: onClose, size: "md", closeOnOverlay: true, children: _jsxs("div", { className: `-mx-5 -my-5 ${className}`, children: [_jsxs("div", { className: "flex items-center gap-2 border-b border-
|
|
123
|
+
return (_jsx(Dialog, { open: open, onClose: onClose, size: "md", closeOnOverlay: true, children: _jsxs("div", { className: `-mx-5 -my-5 ${className}`, children: [_jsxs("div", { className: "flex items-center gap-2 border-b border-[var(--lokvis-border)] px-4 py-3", children: [_jsxs(Icon, { size: 16, className: "text-[var(--lokvis-fg-subtle)]", children: [_jsx("circle", { cx: "11", cy: "11", r: "8" }), _jsx("path", { d: "m21 21-4.3-4.3" })] }), _jsx("input", { ref: inputRef, type: "text", value: query, onChange: (e) => setQuery(e.target.value), onKeyDown: handleKeyDown, placeholder: "Search commands or capabilities...", "aria-label": "Search commands", className: "flex-1 bg-transparent text-sm text-[var(--lokvis-fg)] placeholder:text-[var(--lokvis-fg-subtle)] focus:outline-none", autoComplete: "off", spellCheck: false }), _jsx("kbd", { className: "rounded border border-[var(--lokvis-border)] px-1.5 py-0.5 text-[9px] font-medium text-[var(--lokvis-fg-subtle)]", children: "ESC" })] }), _jsx("ul", { ref: listRef, className: "max-h-80 overflow-y-auto py-1", role: "listbox", "aria-label": "Available commands", children: filtered.length === 0 ? (_jsx("li", { className: "px-4 py-6 text-center text-xs text-[var(--lokvis-fg-subtle)]", children: "No matching commands" })) : (filtered.map((cmd, i) => {
|
|
124
124
|
const isActive = i === activeIndex;
|
|
125
125
|
const isCap = cmd.kind === 'capability';
|
|
126
126
|
const primary = isCap ? cmd.cap.name : cmd.label;
|
|
127
127
|
const secondary = isCap ? cmd.cap.description : cmd.description;
|
|
128
128
|
const disabled = !isCap && cmd.disabled;
|
|
129
129
|
return (_jsx("li", { "data-index": i, role: "option", "aria-selected": isActive, "aria-disabled": disabled, children: _jsxs("button", { type: "button", onMouseEnter: () => setActiveIndex(i), onClick: () => !disabled && handleSelect(cmd), disabled: disabled, className: `flex w-full items-center gap-3 px-4 py-2 text-left transition-colors ${isActive && !disabled
|
|
130
|
-
? 'bg-
|
|
131
|
-
: ''} ${disabled ? 'cursor-not-allowed opacity-40' : 'hover:bg-
|
|
132
|
-
? 'bg-
|
|
133
|
-
: 'bg-
|
|
134
|
-
})) }), _jsxs("div", { className: "flex items-center justify-between border-t border-
|
|
130
|
+
? 'bg-[var(--lokvis-primary)]/10'
|
|
131
|
+
: ''} ${disabled ? 'cursor-not-allowed opacity-40' : 'hover:bg-[var(--lokvis-surface)]'}`, children: [_jsx("span", { className: `flex h-6 w-6 shrink-0 items-center justify-center rounded ${isCap
|
|
132
|
+
? 'bg-[var(--lokvis-surface-muted)] text-[var(--lokvis-fg-muted)]'
|
|
133
|
+
: 'bg-[var(--lokvis-primary)]/15 text-[var(--lokvis-primary)]'}`, children: _jsx(Icon, { size: 12, strokeWidth: 2, children: isCap ? (_jsx("path", { d: "M12 4.5v15m7.5-7.5h-15" })) : (_jsx("path", { d: "M13 2L3 14h7l-1 8 10-12h-7l1-8z" })) }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("span", { className: "truncate text-xs font-medium text-[var(--lokvis-fg)]", children: primary }), isCap && (_jsx("span", { className: "shrink-0 rounded px-1 py-0.5 text-[9px] font-medium uppercase bg-[var(--lokvis-surface-muted)] text-[var(--lokvis-fg-muted)]", children: cmd.cap.performance }))] }), _jsx("p", { className: "truncate text-[10px] text-[var(--lokvis-fg-muted)]", children: secondary })] })] }) }, isCap ? `cap:${cmd.cap.name}` : `act:${cmd.id}`));
|
|
134
|
+
})) }), _jsxs("div", { className: "flex items-center justify-between border-t border-[var(--lokvis-border)] px-4 py-2 text-[10px] text-[var(--lokvis-fg-subtle)]", children: [_jsxs("span", { className: "flex items-center gap-1", children: [_jsx("kbd", { className: "rounded border border-[var(--lokvis-border)] px-1", children: "\u2191\u2193" }), _jsx("span", { children: "navigate" }), _jsx("kbd", { className: "ml-2 rounded border border-[var(--lokvis-border)] px-1", children: "\u21B5" }), _jsx("span", { children: "select" })] }), _jsxs("span", { children: [filtered.length, " command", filtered.length !== 1 ? 's' : ''] })] })] }) }));
|
|
135
135
|
}
|
|
136
136
|
export function useCommandPalette(options = {}) {
|
|
137
137
|
const { enabled = true } = options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandPalette.js","sourceRoot":"","sources":["../../src/components/CommandPalette.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAUtD,MAAM,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,GAAG,EAAE,EAAuB;
|
|
1
|
+
{"version":3,"file":"CommandPalette.js","sourceRoot":"","sources":["../../src/components/CommandPalette.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,17 +5,18 @@
|
|
|
5
5
|
* before / after 两张图。用于直观展示工作流处理效果。
|
|
6
6
|
*
|
|
7
7
|
* 交互:
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* - 鼠标拖拽分隔条(或点击容器任意位置)调整揭示比例
|
|
9
|
+
* - 触摸:touchmove 同步
|
|
10
|
+
* - 键盘:← → 调整 5% 步长(聚焦分隔条时)
|
|
11
11
|
*
|
|
12
12
|
* 数据来源:
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* - before: `store.selectedAssetId` 对应的 thumbnails(由 store.ensureThumbnails 生成)
|
|
14
|
+
* - after: `store.selectedOutputId` 对应的 thumbnails
|
|
15
|
+
* - 任一缺失则不渲染(返回 null)
|
|
16
16
|
*
|
|
17
|
-
* 注:本组件只负责"展示对比",不负责生成缩略图。缩略图由
|
|
18
|
-
*
|
|
17
|
+
* 注:本组件只负责"展示对比",不负责生成缩略图。缩略图由 store.ensureThumbnails
|
|
18
|
+
* 统一生成(TD-5.1:创建/替换/释放在 store 内闭环)并存入 store.thumbnails,
|
|
19
|
+
* 本组件按 assetId 取用。
|
|
19
20
|
*/
|
|
20
21
|
import * as React from 'react';
|
|
21
22
|
export interface CompareSliderProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompareSlider.d.ts","sourceRoot":"","sources":["../../src/components/CompareSlider.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"CompareSlider.d.ts","sourceRoot":"","sources":["../../src/components/CompareSlider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,kBAAkB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAc,EAAE,EAAE,kBAAkB,4BA+JnE"}
|
|
@@ -6,17 +6,18 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
* before / after 两张图。用于直观展示工作流处理效果。
|
|
7
7
|
*
|
|
8
8
|
* 交互:
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* - 鼠标拖拽分隔条(或点击容器任意位置)调整揭示比例
|
|
10
|
+
* - 触摸:touchmove 同步
|
|
11
|
+
* - 键盘:← → 调整 5% 步长(聚焦分隔条时)
|
|
12
12
|
*
|
|
13
13
|
* 数据来源:
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* - before: `store.selectedAssetId` 对应的 thumbnails(由 store.ensureThumbnails 生成)
|
|
15
|
+
* - after: `store.selectedOutputId` 对应的 thumbnails
|
|
16
|
+
* - 任一缺失则不渲染(返回 null)
|
|
17
17
|
*
|
|
18
|
-
* 注:本组件只负责"展示对比",不负责生成缩略图。缩略图由
|
|
19
|
-
*
|
|
18
|
+
* 注:本组件只负责"展示对比",不负责生成缩略图。缩略图由 store.ensureThumbnails
|
|
19
|
+
* 统一生成(TD-5.1:创建/替换/释放在 store 内闭环)并存入 store.thumbnails,
|
|
20
|
+
* 本组件按 assetId 取用。
|
|
20
21
|
*/
|
|
21
22
|
import * as React from 'react';
|
|
22
23
|
import { Icon } from '@lokvis/ui-core';
|
|
@@ -101,6 +102,6 @@ export function CompareSlider({ className = '' }) {
|
|
|
101
102
|
};
|
|
102
103
|
if (!beforeUrl || !afterUrl)
|
|
103
104
|
return null;
|
|
104
|
-
return (_jsxs("div", { ref: containerRef, className: `relative select-none overflow-hidden rounded-lg ring-1 ring-
|
|
105
|
+
return (_jsxs("div", { ref: containerRef, role: "group", "aria-label": "\u524D\u540E\u5BF9\u6BD4\u6ED1\u5757", className: `relative select-none overflow-hidden rounded-lg ring-1 ring-[var(--lokvis-border)]/50 ${className}`, onMouseDown: handleMouseDown, onTouchStart: handleTouchStart, children: [_jsx("img", { src: afterUrl, alt: "After", draggable: false, className: "block max-h-full max-w-full object-contain pointer-events-none" }), _jsx("div", { className: "absolute inset-0", style: { clipPath: `inset(0 ${100 - pos}% 0 0)` }, children: _jsx("img", { src: beforeUrl, alt: "Before", draggable: false, className: "block max-h-full max-w-full object-contain pointer-events-none" }) }), _jsx("span", { className: "absolute top-2 left-2 rounded bg-[var(--lokvis-scrim)] px-1.5 py-0.5 text-[10px] font-medium text-[var(--lokvis-primary-fg)]", children: "Before" }), _jsx("span", { className: "absolute top-2 right-2 rounded bg-[var(--lokvis-scrim)] px-1.5 py-0.5 text-[10px] font-medium text-[var(--lokvis-primary-fg)]", children: "After" }), _jsxs("div", { className: "absolute top-0 bottom-0 z-10 cursor-ew-resize", style: { left: `${pos}%`, transform: 'translateX(-50%)' }, role: "separator", "aria-valuenow": Math.round(pos), "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": "Comparison slider position", tabIndex: 0, onKeyDown: handleKeyDown, children: [_jsx("div", { className: "absolute inset-y-0 left-1/2 w-0.5 -translate-x-1/2 bg-[var(--lokvis-surface)] shadow-[var(--lokvis-elevation-1)]" }), _jsx("div", { className: "absolute top-1/2 left-1/2 flex h-8 w-8 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full bg-[var(--lokvis-surface)] shadow-[var(--lokvis-elevation-2)] ring-1 ring-[var(--lokvis-border)]", children: _jsx(Icon, { size: 14, className: "text-[var(--lokvis-fg-muted)]", children: _jsx("path", { d: "M9 5l-5 7 5 7M15 5l5 7-5 7" }) }) })] }), (beforeAsset || afterAsset) && (_jsxs("div", { className: "absolute bottom-2 inset-x-2 flex justify-between text-[10px] text-[var(--lokvis-primary-fg)]", children: [beforeAsset?.metadata.dimensions && (_jsxs("span", { className: "rounded bg-[var(--lokvis-scrim)] px-1.5 py-0.5", children: [beforeAsset.metadata.dimensions.width, "\u00D7", beforeAsset.metadata.dimensions.height] })), afterAsset?.metadata.dimensions && (_jsxs("span", { className: "rounded bg-[var(--lokvis-scrim)] px-1.5 py-0.5", children: [afterAsset.metadata.dimensions.width, "\u00D7", afterAsset.metadata.dimensions.height] }))] }))] }));
|
|
105
106
|
}
|
|
106
107
|
//# sourceMappingURL=CompareSlider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompareSlider.js","sourceRoot":"","sources":["../../src/components/CompareSlider.tsx"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"CompareSlider.js","sourceRoot":"","sources":["../../src/components/CompareSlider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* DownloadPanel - 工作流输出下载面板(W9.5)
|
|
3
3
|
*
|
|
4
4
|
* 展示上次工作流执行的输出资产,提供:
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* - 单项下载(从 runtime.exportAsset 取 blob,触发浏览器下载)
|
|
6
|
+
* - 全部下载(逐项触发,BATCH_DOWNLOAD_DELAY_MS 间隔,避免浏览器拦截;长期方案见该常量注释)
|
|
7
|
+
* - 清空输出列表
|
|
8
8
|
*
|
|
9
9
|
* 与 apps/playground 的 DownloadManager(独立工具页)不同:本组件是 Workspace
|
|
10
10
|
* 内嵌的轻量面板,数据来自 store.lastOutputIds(由 workflow-slice.run 写入)。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DownloadPanel.d.ts","sourceRoot":"","sources":["../../src/components/DownloadPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DownloadPanel.d.ts","sourceRoot":"","sources":["../../src/components/DownloadPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,kBAAkB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAqCD,wBAAgB,aAAa,CAAC,EAAE,SAAc,EAAE,EAAE,kBAAkB,4BA0LnE"}
|