@lokvis/ui-react 0.2.2 → 0.4.2

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.
Files changed (133) hide show
  1. package/dist/components/AssetPanel.d.ts.map +1 -1
  2. package/dist/components/AssetPanel.js +10 -54
  3. package/dist/components/AssetPanel.js.map +1 -1
  4. package/dist/components/Canvas.d.ts.map +1 -1
  5. package/dist/components/Canvas.js +4 -4
  6. package/dist/components/Canvas.js.map +1 -1
  7. package/dist/components/CompareSlider.d.ts +4 -3
  8. package/dist/components/CompareSlider.d.ts.map +1 -1
  9. package/dist/components/CompareSlider.js +5 -4
  10. package/dist/components/CompareSlider.js.map +1 -1
  11. package/dist/components/DownloadPanel.d.ts.map +1 -1
  12. package/dist/components/DownloadPanel.js +1 -8
  13. package/dist/components/DownloadPanel.js.map +1 -1
  14. package/dist/components/ErrorBoundary.d.ts +40 -0
  15. package/dist/components/ErrorBoundary.d.ts.map +1 -0
  16. package/dist/components/ErrorBoundary.js +52 -0
  17. package/dist/components/ErrorBoundary.js.map +1 -0
  18. package/dist/components/ExifPanel.js +1 -1
  19. package/dist/components/ExifPanel.js.map +1 -1
  20. package/dist/components/GlobalDropzone.d.ts.map +1 -1
  21. package/dist/components/GlobalDropzone.js +10 -3
  22. package/dist/components/GlobalDropzone.js.map +1 -1
  23. package/dist/components/Inspector.d.ts.map +1 -1
  24. package/dist/components/Inspector.js +10 -7
  25. package/dist/components/Inspector.js.map +1 -1
  26. package/dist/components/ParamForm.d.ts.map +1 -1
  27. package/dist/components/ParamForm.js +8 -5
  28. package/dist/components/ParamForm.js.map +1 -1
  29. package/dist/components/PipelineBar.d.ts.map +1 -1
  30. package/dist/components/PipelineBar.js +17 -26
  31. package/dist/components/PipelineBar.js.map +1 -1
  32. package/dist/components/StatusBar.d.ts.map +1 -1
  33. package/dist/components/StatusBar.js +3 -12
  34. package/dist/components/StatusBar.js.map +1 -1
  35. package/dist/components/StatusDot.d.ts +12 -0
  36. package/dist/components/StatusDot.d.ts.map +1 -0
  37. package/dist/components/StatusDot.js +15 -0
  38. package/dist/components/StatusDot.js.map +1 -0
  39. package/dist/components/ThemeToggle.js +1 -1
  40. package/dist/components/ThemeToggle.js.map +1 -1
  41. package/dist/components/ToolRunner.d.ts +53 -0
  42. package/dist/components/ToolRunner.d.ts.map +1 -0
  43. package/dist/components/ToolRunner.js +142 -0
  44. package/dist/components/ToolRunner.js.map +1 -0
  45. package/dist/components/Toolbar.js +2 -2
  46. package/dist/components/Toolbar.js.map +1 -1
  47. package/dist/components/WorkflowEditor.d.ts.map +1 -1
  48. package/dist/components/WorkflowEditor.js +31 -40
  49. package/dist/components/WorkflowEditor.js.map +1 -1
  50. package/dist/components/WorkflowTemplates.d.ts.map +1 -1
  51. package/dist/components/WorkflowTemplates.js +15 -5
  52. package/dist/components/WorkflowTemplates.js.map +1 -1
  53. package/dist/components/Workspace.d.ts +23 -1
  54. package/dist/components/Workspace.d.ts.map +1 -1
  55. package/dist/components/Workspace.js +60 -13
  56. package/dist/components/Workspace.js.map +1 -1
  57. package/dist/hooks/useCustomPresets.d.ts +98 -0
  58. package/dist/hooks/useCustomPresets.d.ts.map +1 -0
  59. package/dist/hooks/useCustomPresets.js +210 -0
  60. package/dist/hooks/useCustomPresets.js.map +1 -0
  61. package/dist/hooks/useLokvis.d.ts +19 -1
  62. package/dist/hooks/useLokvis.d.ts.map +1 -1
  63. package/dist/hooks/useLokvis.js +30 -9
  64. package/dist/hooks/useLokvis.js.map +1 -1
  65. package/dist/index.d.ts +3 -0
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +3 -0
  68. package/dist/index.js.map +1 -1
  69. package/dist/store/assets-slice.d.ts +8 -1
  70. package/dist/store/assets-slice.d.ts.map +1 -1
  71. package/dist/store/assets-slice.js +101 -54
  72. package/dist/store/assets-slice.js.map +1 -1
  73. package/dist/store/capabilities-slice.d.ts +1 -1
  74. package/dist/store/capabilities-slice.d.ts.map +1 -1
  75. package/dist/store/capabilities-slice.js +8 -1
  76. package/dist/store/capabilities-slice.js.map +1 -1
  77. package/dist/store/index.d.ts +1 -1
  78. package/dist/store/index.d.ts.map +1 -1
  79. package/dist/store/index.js +1 -1
  80. package/dist/store/index.js.map +1 -1
  81. package/dist/store/runtime-slice.d.ts.map +1 -1
  82. package/dist/store/runtime-slice.js +22 -16
  83. package/dist/store/runtime-slice.js.map +1 -1
  84. package/dist/store/subscribe-utils.d.ts +45 -0
  85. package/dist/store/subscribe-utils.d.ts.map +1 -0
  86. package/dist/store/subscribe-utils.js +69 -0
  87. package/dist/store/subscribe-utils.js.map +1 -0
  88. package/dist/store/types.d.ts +19 -11
  89. package/dist/store/types.d.ts.map +1 -1
  90. package/dist/store/types.js +0 -10
  91. package/dist/store/types.js.map +1 -1
  92. package/dist/store/workflow-slice.d.ts +1 -1
  93. package/dist/store/workflow-slice.d.ts.map +1 -1
  94. package/dist/store/workflow-slice.js +19 -51
  95. package/dist/store/workflow-slice.js.map +1 -1
  96. package/dist/utils.d.ts +24 -0
  97. package/dist/utils.d.ts.map +1 -0
  98. package/dist/utils.js +31 -0
  99. package/dist/utils.js.map +1 -0
  100. package/package.json +7 -6
  101. package/src/components/AssetPanel.tsx +18 -58
  102. package/src/components/Canvas.tsx +11 -7
  103. package/src/components/CompareSlider.tsx +13 -10
  104. package/src/components/DownloadPanel.tsx +1 -7
  105. package/src/components/ErrorBoundary.tsx +101 -0
  106. package/src/components/ExifPanel.tsx +1 -1
  107. package/src/components/GlobalDropzone.tsx +8 -3
  108. package/src/components/Inspector.tsx +24 -16
  109. package/src/components/ParamForm.tsx +12 -9
  110. package/src/components/PipelineBar.tsx +20 -27
  111. package/src/components/StatusBar.tsx +3 -10
  112. package/src/components/StatusDot.tsx +27 -0
  113. package/src/components/ThemeToggle.tsx +1 -1
  114. package/src/components/ToolRunner.tsx +352 -0
  115. package/src/components/Toolbar.tsx +2 -2
  116. package/src/components/WorkflowEditor.tsx +50 -43
  117. package/src/components/WorkflowTemplates.tsx +27 -4
  118. package/src/components/Workspace.tsx +97 -10
  119. package/src/hooks/useCustomPresets.ts +284 -0
  120. package/src/hooks/useLokvis.ts +43 -10
  121. package/src/index.ts +3 -0
  122. package/src/store/assets-slice.ts +106 -52
  123. package/src/store/capabilities-slice.ts +10 -2
  124. package/src/store/index.ts +1 -1
  125. package/src/store/runtime-slice.ts +20 -15
  126. package/src/store/subscribe-utils.ts +82 -0
  127. package/src/store/types.ts +19 -12
  128. package/src/store/workflow-slice.ts +19 -53
  129. package/src/utils.ts +41 -0
  130. package/dist/store.d.ts +0 -76
  131. package/dist/store.d.ts.map +0 -1
  132. package/dist/store.js +0 -217
  133. 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;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAaD,wBAAgB,UAAU,CAAC,EAAE,SAAc,EAAE,EAAE,eAAe,qBAyQ7D"}
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 setThumbnail = useWorkspaceStore((s) => s.setThumbnail);
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
- // B2 修复:
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
- if (!runtime)
51
- return;
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();
@@ -113,15 +69,15 @@ export function AssetPanel({ className = '' }) {
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-10 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
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
75
  ? 'border-[var(--lokvis-primary)] bg-[var(--lokvis-primary)]/10 text-[var(--lokvis-primary)]'
120
- : 'border-[var(--lokvis-border)] text-[var(--lokvis-fg-subtle)] hover:border-[var(--lokvis-primary)]/50 hover:bg-[var(--lokvis-primary)]/10/50 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'
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'
121
77
  ? 'bg-[var(--lokvis-primary)]/15 text-[var(--lokvis-primary)]'
122
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
123
79
  ? 'bg-[var(--lokvis-primary)]/15 text-[var(--lokvis-primary)]'
124
- : 'bg-[var(--lokvis-surface-muted)] text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-border)]'}`, children: TYPE_LABEL[t] }, t)))] }), _jsxs("div", { className: "relative", children: [_jsxs(Icon, { size: 11, className: "absolute left-1.5 top-1/2 -translate-y-1/2 text-[var(--lokvis-fg-subtle)] pointer-events-none", children: [_jsx("circle", { cx: "10", cy: "10", r: "6" }), _jsx("path", { d: "m20 20-5-5" })] }), _jsx("input", { type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), placeholder: "Filter by type...", "aria-label": "Filter assets by format", className: "w-full rounded bg-[var(--lokvis-surface-muted)] py-1 pl-6 pr-1.5 text-[10px] text-[var(--lokvis-fg-muted)] placeholder:text-[var(--lokvis-fg-subtle)] focus:outline-none focus:ring-1 focus:ring-[var(--lokvis-primary)]/50" })] })] })), _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) => {
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,7 +87,7 @@ 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 focus:outline-none focus:ring-2 focus:ring-[var(--lokvis-primary)]/50 ${selected
90
+ }, className: `group flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-xs transition-all ${FOCUS_RING} ${selected
135
91
  ? 'bg-[var(--lokvis-primary)]/10 ring-1 ring-[var(--lokvis-primary)]/40'
136
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();
@@ -1 +1 @@
1
- {"version":3,"file":"AssetPanel.js","sourceRoot":"","sources":["../../src/components/AssetPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AssetPanel.js","sourceRoot":"","sources":["../../src/components/AssetPanel.tsx"],"names":[],"mappings":"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"}
@@ -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;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,qBAgL3E"}
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"}
@@ -57,15 +57,15 @@ export function Canvas({ className = '', enableCompare = true }) {
57
57
  void importFiles(Array.from(e.dataTransfer.files));
58
58
  }
59
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, #d4d4d8 1px, transparent 1px)',
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-[var(--lokvis-surface)]/90 p-0.5 shadow-sm 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
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
63
  ? 'bg-[var(--lokvis-primary)]/15 text-[var(--lokvis-primary)]'
64
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
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/80 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-2xl shadow-black/10 ring-1 ring-black/5" }), _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-sm 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-sm 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
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-[var(--lokvis-primary-hover)] px-4 py-2 text-xs font-medium text-[var(--lokvis-primary-fg)] shadow-sm 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) => {
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":"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"}
1
+ {"version":3,"file":"Canvas.js","sourceRoot":"","sources":["../../src/components/Canvas.tsx"],"names":[],"mappings":"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"}
@@ -10,12 +10,13 @@
10
10
  * - 键盘:← → 调整 5% 步长(聚焦分隔条时)
11
11
  *
12
12
  * 数据来源:
13
- * - before: `store.selectedAssetId` 对应的 thumbnails(由 AssetPanel 自动生成)
13
+ * - before: `store.selectedAssetId` 对应的 thumbnails(由 store.ensureThumbnails 生成)
14
14
  * - after: `store.selectedOutputId` 对应的 thumbnails
15
15
  * - 任一缺失则不渲染(返回 null)
16
16
  *
17
- * 注:本组件只负责"展示对比",不负责生成缩略图。缩略图由 AssetPanel
18
- * effect 统一生成并存入 store.thumbnails,本组件按 assetId 取用。
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;;;;;;;;;;;;;;;;;;GAkBG;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,4BA6JnE"}
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"}
@@ -11,12 +11,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  * - 键盘:← → 调整 5% 步长(聚焦分隔条时)
12
12
  *
13
13
  * 数据来源:
14
- * - before: `store.selectedAssetId` 对应的 thumbnails(由 AssetPanel 自动生成)
14
+ * - before: `store.selectedAssetId` 对应的 thumbnails(由 store.ensureThumbnails 生成)
15
15
  * - after: `store.selectedOutputId` 对应的 thumbnails
16
16
  * - 任一缺失则不渲染(返回 null)
17
17
  *
18
- * 注:本组件只负责"展示对比",不负责生成缩略图。缩略图由 AssetPanel
19
- * effect 统一生成并存入 store.thumbnails,本组件按 assetId 取用。
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-black/5 ${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-black/60 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-black/60 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-md" }), _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-lg ring-1 ring-black/10", 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-black/60 px-1.5 py-0.5", children: [beforeAsset.metadata.dimensions.width, "\u00D7", beforeAsset.metadata.dimensions.height] })), afterAsset?.metadata.dimensions && (_jsxs("span", { className: "rounded bg-black/60 px-1.5 py-0.5", children: [afterAsset.metadata.dimensions.width, "\u00D7", afterAsset.metadata.dimensions.height] }))] }))] }));
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":"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"}
1
+ {"version":3,"file":"CompareSlider.js","sourceRoot":"","sources":["../../src/components/CompareSlider.tsx"],"names":[],"mappings":"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"}
@@ -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;AAI/B,MAAM,WAAW,kBAAkB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AA4CD,wBAAgB,aAAa,CAAC,EAAE,SAAc,EAAE,EAAE,kBAAkB,4BA0LnE"}
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"}
@@ -16,14 +16,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
16
  import * as React from 'react';
17
17
  import { Icon } from '@lokvis/ui-core';
18
18
  import { useWorkspaceStore } from '../store/index.js';
19
- /** 格式化字节数 */
20
- function formatBytes(bytes) {
21
- if (bytes < 1024)
22
- return `${bytes} B`;
23
- if (bytes < 1024 * 1024)
24
- return `${(bytes / 1024).toFixed(1)} KB`;
25
- return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;
26
- }
19
+ import { formatBytes } from '../utils.js';
27
20
  /**
28
21
  * 批量下载时每项之间的延迟毫秒数。
29
22
  *
@@ -1 +1 @@
1
- {"version":3,"file":"DownloadPanel.js","sourceRoot":"","sources":["../../src/components/DownloadPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DownloadPanel.js","sourceRoot":"","sources":["../../src/components/DownloadPanel.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;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,WAAW,EAAE,MAAM,aAAa,CAAC;AAM1C;;;;;;;;;;;GAWG;AACH,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAEnF,yBAAyB;AACzB,SAAS,WAAW,CAAC,IAAY;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACxC,yCAAyC;IACzC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACjC,CAAC;AAED,cAAc;AACd,SAAS,YAAY,CAAC,IAAU,EAAE,QAAgB;IACjD,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;IACb,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,KAAK,EAAE,CAAC;IACV,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAE,SAAS,GAAG,EAAE,EAAsB;IACnE,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAExD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE9D,iCAAiC;IACjC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACrB,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,OAAO,GAAG,EAAE;YACZ,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,CAAC,CAAC;IACF,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,8CAA8C;IAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACxC,OAAO,aAAa;aACnB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aAC5C,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAC5D,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5B,8BAA8B;IAC9B,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACrB,aAAa,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAChF,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,KAAK,YAAY,CAAC,MAAM,CAAC;IAEzF,KAAK,UAAU,iBAAiB,CAAC,EAAU;QAC3C,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC;YACL,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,iBAAiB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;YAChE,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7B,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACzB,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;QACD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACzB,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,CAAC;QACD,CAAC;IACD,CAAC;IAED,KAAK,UAAU,iBAAiB;QAChC,IAAI,CAAC,OAAO,IAAI,gBAAgB;YAAE,OAAO;QACzC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACpC,qDAAqD;QACrD,2DAA2D;QAC3D,iDAAiD;QACjD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC;YACL,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBACnC,+BAA+B;gBAC/B,IAAI,CAAC,UAAU,CAAC,OAAO;oBAAE,OAAO;gBAChC,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAAE,SAAS;gBAC5C,IAAI,CAAC;oBACL,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACjD,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACjD,MAAM,QAAQ,GAAG,iBAAiB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;oBAChE,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBAC7B,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAC9B,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;wBACzB,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrD,CAAC;oBACD,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACrC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACf,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;wBACzB,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC3D,CAAC;oBACD,YAAY;gBACZ,CAAC;YACD,CAAC;YACD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACzB,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAChC,CAAC;QACD,CAAC;gBAAS,CAAC;YACX,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACzB,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;QACD,CAAC;IACD,CAAC;IAED,SAAS,WAAW;QACpB,YAAY,EAAE,CAAC;QACf,aAAa,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,OAAO,CACP,eACA,SAAS,EAAE,mFAAmF,SAAS,EAAE,gBAC9F,eAAe,aAE1B,eAAK,SAAS,EAAC,4FAA4F,aAC3G,eAAM,SAAS,EAAC,mFAAmF,wBAE5F,EACP,gBAAM,SAAS,EAAC,yDAAyD,aACxE,eAAe,OAAG,YAAY,CAAC,MAAM,cAAK,WAAW,CAAC,SAAS,CAAC,IAC1D,IACD,EAEN,eAAK,SAAS,EAAC,mDAAmD,aACjE,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC5B,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;wBACvC,OAAO,CACP,eAEA,SAAS,EAAC,kFAAkF,aAE5F,eAAK,SAAS,EAAC,yBAAyB,aACxC,eAAM,SAAS,EAAC,2GAA2G,YAC1H,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,GAC7B,EACN,IAAI,IAAI,CACT,gBAAM,SAAS,EAAC,wDAAwD,aACvE,IAAI,CAAC,KAAK,YAAG,IAAI,CAAC,MAAM,IAClB,CACN,EACD,eAAM,SAAS,EAAC,yDAAyD,YACxE,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAC1B,IACD,EACN,cAAK,SAAS,EAAC,yBAAyB,YACxC,kBACA,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,EAC/C,SAAS,EAAE,yFACX,YAAY;4CACZ,CAAC,CAAC,4DAA4D;4CAC9D,CAAC,CAAC,gGACF,EAAE,aAEF,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,YAC9B,eAAM,CAAC,EAAC,gEAAgE,GAAG,GACpE,EACN,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,IAChC,GACH,KA/BD,KAAK,CAAC,EAAE,CAgCP,CACL,CAAC;oBACF,CAAC,CAAC,EAEF,eAAK,SAAS,EAAC,kCAAkC,aACjD,iBACA,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,iBAAiB,EAAE,EACvC,QAAQ,EAAE,gBAAgB,IAAI,aAAa,EAC3C,SAAS,EAAC,kMAAkM,YAE3M,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,GAC5C,EACT,iBACA,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,2IAA2I,sBAG5I,IACH,IACA,EAEL,KAAK,IAAI,CACV,YAAG,SAAS,EAAC,mDAAmD,EAAC,IAAI,EAAC,OAAO,YAC5E,KAAK,GACF,CACH,IACK,CACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * ErrorBoundary - React 错误边界(D6)
3
+ *
4
+ * 捕获子组件树渲染期间的运行时异常,避免整个 Workspace 白屏。
5
+ * 必须是 class 组件(React 错误边界 API 仅支持 class)。
6
+ *
7
+ * 设计:
8
+ * - 默认 fallback 使用 lokvis token,与 Workspace 错误态视觉一致
9
+ * - 可选 fallback 渲染 prop(消费方自定义 UI)
10
+ * - 可选 onError 回调(上报等);默认 console.error,不引入 sentry 等
11
+ * app 层依赖,保持 ui-react 包架构纯净(不反向依赖消费方)
12
+ * - reset() 清空 error 状态,尝试重新渲染子树
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <ErrorBoundary>
17
+ * <Workspace plugins={[...]} />
18
+ * </ErrorBoundary>
19
+ * ```
20
+ */
21
+ import * as React from 'react';
22
+ export interface ErrorBoundaryProps {
23
+ children: React.ReactNode;
24
+ /** 自定义 fallback;不传则用默认 UI */
25
+ fallback?: (error: Error, reset: () => void) => React.ReactNode;
26
+ /** 错误回调(上报等),不传则 console.error */
27
+ onError?: (error: Error, info: React.ErrorInfo) => void;
28
+ }
29
+ interface State {
30
+ error: Error | null;
31
+ }
32
+ export declare class ErrorBoundary extends React.Component<ErrorBoundaryProps, State> {
33
+ state: State;
34
+ static getDerivedStateFromError(error: Error): State;
35
+ componentDidCatch(error: Error, info: React.ErrorInfo): void;
36
+ reset: () => void;
37
+ render(): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined;
38
+ }
39
+ export {};
40
+ //# sourceMappingURL=ErrorBoundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,kBAAkB;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IAChE,kCAAkC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;CACxD;AAED,UAAU,KAAK;IACd,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACpB;AAED,qBAAa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,KAAK,CAAC;IAC5E,KAAK,EAAE,KAAK,CAAmB;IAE/B,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAIpD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS;IAQrD,KAAK,aAEH;IAEF,MAAM;CASN"}
@@ -0,0 +1,52 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * ErrorBoundary - React 错误边界(D6)
4
+ *
5
+ * 捕获子组件树渲染期间的运行时异常,避免整个 Workspace 白屏。
6
+ * 必须是 class 组件(React 错误边界 API 仅支持 class)。
7
+ *
8
+ * 设计:
9
+ * - 默认 fallback 使用 lokvis token,与 Workspace 错误态视觉一致
10
+ * - 可选 fallback 渲染 prop(消费方自定义 UI)
11
+ * - 可选 onError 回调(上报等);默认 console.error,不引入 sentry 等
12
+ * app 层依赖,保持 ui-react 包架构纯净(不反向依赖消费方)
13
+ * - reset() 清空 error 状态,尝试重新渲染子树
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * <ErrorBoundary>
18
+ * <Workspace plugins={[...]} />
19
+ * </ErrorBoundary>
20
+ * ```
21
+ */
22
+ import * as React from 'react';
23
+ export class ErrorBoundary extends React.Component {
24
+ state = { error: null };
25
+ static getDerivedStateFromError(error) {
26
+ return { error };
27
+ }
28
+ componentDidCatch(error, info) {
29
+ if (this.props.onError) {
30
+ this.props.onError(error, info);
31
+ }
32
+ else {
33
+ console.error('[lokvis ErrorBoundary]', error, info.componentStack);
34
+ }
35
+ }
36
+ reset = () => {
37
+ this.setState({ error: null });
38
+ };
39
+ render() {
40
+ if (this.state.error) {
41
+ if (this.props.fallback) {
42
+ return this.props.fallback(this.state.error, this.reset);
43
+ }
44
+ return _jsx(DefaultFallback, { error: this.state.error, onReset: this.reset });
45
+ }
46
+ return this.props.children;
47
+ }
48
+ }
49
+ function DefaultFallback({ error, onReset }) {
50
+ return (_jsx("div", { className: "flex h-full w-full items-center justify-center p-6", role: "alert", children: _jsxs("div", { className: "max-w-md rounded-xl border border-[var(--lokvis-danger)]/30 bg-[var(--lokvis-surface)] p-6 text-center shadow-[var(--lokvis-elevation-2)]", children: [_jsx("div", { className: "mx-auto mb-3 flex h-10 w-10 items-center justify-center rounded-full bg-[var(--lokvis-danger)]/15", children: _jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "text-[var(--lokvis-danger)]", children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "12", y1: "8", x2: "12", y2: "12" }), _jsx("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })] }) }), _jsx("p", { className: "font-semibold text-[var(--lokvis-fg)]", children: "Something went wrong" }), _jsx("p", { className: "mt-1.5 break-words text-sm text-[var(--lokvis-fg-muted)]", children: error.message || 'An unexpected error occurred while rendering this panel.' }), _jsx("button", { type: "button", onClick: onReset, className: "mt-4 inline-flex items-center justify-center rounded-lg bg-[var(--lokvis-primary)] px-4 py-2 text-sm font-medium text-[var(--lokvis-primary-fg)] transition-colors hover:bg-[var(--lokvis-primary-hover)]", children: "Try again" })] }) }));
51
+ }
52
+ //# sourceMappingURL=ErrorBoundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../src/components/ErrorBoundary.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B,MAAM,OAAO,aAAc,SAAQ,KAAK,CAAC,SAAoC;IAC5E,KAAK,GAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAE/B,MAAM,CAAC,wBAAwB,CAAC,KAAY;QAC5C,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,iBAAiB,CAAC,KAAY,EAAE,IAAqB;QACrD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACR,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACpE,CAAC;IACD,CAAC;IAED,KAAK,GAAG,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM;QACN,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,KAAC,eAAe,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,GAAI,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC3B,CAAC;CACD;AAED,SAAS,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,EAAyC;IACjF,OAAO,CACP,cAAK,SAAS,EAAC,oDAAoD,EAAC,IAAI,EAAC,OAAO,YAChF,eAAK,SAAS,EAAC,2IAA2I,aAC1J,cAAK,SAAS,EAAC,mGAAmG,YAClH,eACA,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,6BAA6B,aAEvC,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,GAAG,EACjC,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,EACvC,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,OAAO,EAAC,EAAE,EAAC,IAAI,GAAG,IACrC,GACA,EACN,YAAG,SAAS,EAAC,uCAAuC,qCAAyB,EAC7E,YAAG,SAAS,EAAC,0DAA0D,YACtE,KAAK,CAAC,OAAO,IAAI,0DAA0D,GACxE,EACJ,iBACA,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,2MAA2M,0BAG5M,IACH,GACA,CACL,CAAC;AACH,CAAC"}
@@ -99,6 +99,6 @@ export function ExifPanel({ className = '' }) {
99
99
  if (!isImage || !selectedAsset)
100
100
  return null;
101
101
  const rows = exif ? formatExifRows(exif) : [];
102
- return (_jsxs("div", { className: `shrink-0 border-b border-[var(--lokvis-border)] ${className}`, children: [_jsxs("button", { type: "button", onClick: () => setOpen(!open), className: "flex w-full items-center justify-between px-3 h-10 text-left transition-colors hover:bg-[var(--lokvis-surface)]", "aria-expanded": open, children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Icon, { size: 12, className: `text-[var(--lokvis-fg-subtle)] transition-transform ${open ? '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: "EXIF" })] }), loading ? (_jsx("span", { className: "text-[10px] text-[var(--lokvis-fg-subtle)]", children: "loading\u2026" })) : exif ? (_jsxs("span", { className: "font-mono text-[10px] text-[var(--lokvis-success)] bg-[var(--lokvis-success)]/10 px-1.5 py-0.5 rounded", children: [rows.length, " fields"] })) : error ? (_jsx("span", { className: "text-[10px] text-[var(--lokvis-danger)]", children: "error" })) : (_jsx("span", { className: "text-[10px] text-[var(--lokvis-fg-subtle)]", children: "none" }))] }), open && (_jsx("div", { className: "px-3 pb-3 max-h-60 overflow-y-auto", children: loading ? (_jsx("div", { className: "py-4 text-center text-[11px] text-[var(--lokvis-fg-subtle)]", children: "Reading EXIF\u2026" })) : error ? (_jsx("div", { className: "py-3 text-center", children: _jsx("p", { className: "text-[11px] text-[var(--lokvis-danger)]", children: error }) })) : rows.length === 0 ? (_jsxs("div", { className: "py-4 text-center", children: [_jsx("p", { className: "text-[11px] text-[var(--lokvis-fg-subtle)]", children: "No EXIF data" }), _jsx("p", { className: "mt-1 text-[10px] text-[var(--lokvis-fg-muted)]", children: "This image has no embedded metadata" })] })) : (_jsx("dl", { className: "space-y-1", children: rows.map((row) => (_jsxs("div", { className: "flex items-baseline justify-between gap-3 text-[11px]", children: [_jsx("dt", { className: "shrink-0 text-[var(--lokvis-fg-subtle)]", children: row.label }), _jsx("dd", { className: "truncate text-right font-mono text-[var(--lokvis-fg-muted)]", children: row.value })] }, row.label))) })) }))] }));
102
+ return (_jsxs("div", { className: `shrink-0 border-b border-[var(--lokvis-border)] ${className}`, children: [_jsxs("button", { type: "button", onClick: () => setOpen(!open), 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)]", "aria-expanded": open, children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Icon, { size: 12, className: `text-[var(--lokvis-fg-subtle)] transition-transform ${open ? '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: "EXIF" })] }), loading ? (_jsx("span", { className: "text-[10px] text-[var(--lokvis-fg-subtle)]", children: "loading\u2026" })) : exif ? (_jsxs("span", { className: "font-mono text-[10px] text-[var(--lokvis-success)] bg-[var(--lokvis-success)]/10 px-1.5 py-0.5 rounded", children: [rows.length, " fields"] })) : error ? (_jsx("span", { className: "text-[10px] text-[var(--lokvis-danger)]", children: "error" })) : (_jsx("span", { className: "text-[10px] text-[var(--lokvis-fg-subtle)]", children: "none" }))] }), open && (_jsx("div", { className: "px-3 pb-3 max-h-60 overflow-y-auto", children: loading ? (_jsx("div", { className: "py-4 text-center text-[11px] text-[var(--lokvis-fg-subtle)]", children: "Reading EXIF\u2026" })) : error ? (_jsx("div", { className: "py-3 text-center", children: _jsx("p", { className: "text-[11px] text-[var(--lokvis-danger)]", children: error }) })) : rows.length === 0 ? (_jsxs("div", { className: "py-4 text-center", children: [_jsx("p", { className: "text-[11px] text-[var(--lokvis-fg-subtle)]", children: "No EXIF data" }), _jsx("p", { className: "mt-1 text-[10px] text-[var(--lokvis-fg-muted)]", children: "This image has no embedded metadata" })] })) : (_jsx("dl", { className: "space-y-1", children: rows.map((row) => (_jsxs("div", { className: "flex items-baseline justify-between gap-3 text-[11px]", children: [_jsx("dt", { className: "shrink-0 text-[var(--lokvis-fg-subtle)]", children: row.label }), _jsx("dd", { className: "truncate text-right font-mono text-[var(--lokvis-fg-muted)]", children: row.value })] }, row.label))) })) }))] }));
103
103
  }
104
104
  //# sourceMappingURL=ExifPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExifPanel.js","sourceRoot":"","sources":["../../src/components/ExifPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExifPanel.js","sourceRoot":"","sources":["../../src/components/ExifPanel.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalDropzone.d.ts","sourceRoot":"","sources":["../../src/components/GlobalDropzone.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,mBAAmB;IACnC,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AA6BD,wBAAgB,cAAc,CAAC,EAC9B,MAAuB,EACvB,SAAc,GACd,EAAE,mBAAmB,4BAqJrB"}
1
+ {"version":3,"file":"GlobalDropzone.d.ts","sourceRoot":"","sources":["../../src/components/GlobalDropzone.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,mBAAmB;IACnC,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AA6BD,wBAAgB,cAAc,CAAC,EAC9B,MAAuB,EACvB,SAAc,GACd,EAAE,mBAAmB,4BA0JrB"}
@@ -65,6 +65,8 @@ export function GlobalDropzone({ accept = DEFAULT_ACCEPT, className = '', }) {
65
65
  // dragCounter:用计数器而非布尔,避免子元素 dragenter/dragleave 触发抖动
66
66
  const [dragCounter, setDragCounter] = React.useState(0);
67
67
  const [rejectedFiles, setRejectedFiles] = React.useState([]);
68
+ // W21.6: 持有 rejectedFiles 自动清除定时器,unmount 时 cleanup
69
+ const rejectTimerRef = React.useRef(null);
68
70
  React.useEffect(() => {
69
71
  // 阻止浏览器默认行为(打开文件 / 下载),否则 drop 不会触发
70
72
  const preventDefault = (e) => {
@@ -123,8 +125,10 @@ export function GlobalDropzone({ accept = DEFAULT_ACCEPT, className = '', }) {
123
125
  }
124
126
  if (rejected.length > 0) {
125
127
  setRejectedFiles(rejected);
126
- // 5 秒后自动清空拒绝提示
127
- setTimeout(() => setRejectedFiles([]), 5000);
128
+ // W21.6: 5 秒后自动清空拒绝提示,clear 旧 timer 避免重叠
129
+ if (rejectTimerRef.current)
130
+ clearTimeout(rejectTimerRef.current);
131
+ rejectTimerRef.current = setTimeout(() => setRejectedFiles([]), 5000);
128
132
  }
129
133
  if (accepted.length > 0) {
130
134
  void importFiles(accepted);
@@ -143,12 +147,15 @@ export function GlobalDropzone({ accept = DEFAULT_ACCEPT, className = '', }) {
143
147
  window.removeEventListener('dragover', onDragOver);
144
148
  window.removeEventListener('dragleave', onDragLeave);
145
149
  window.removeEventListener('drop', onDrop);
150
+ // W21.6: 清理 rejectedFiles 自动清除定时器
151
+ if (rejectTimerRef.current)
152
+ clearTimeout(rejectTimerRef.current);
146
153
  };
147
154
  }, [accept, importFiles, setStatus, setError]);
148
155
  const isDragging = dragCounter > 0;
149
156
  const hasRejections = rejectedFiles.length > 0;
150
157
  if (!isDragging && !hasRejections)
151
158
  return null;
152
- return (_jsxs("div", { className: `pointer-events-none fixed inset-0 z-40 flex items-center justify-center p-8 ${className}`, role: "alertdialog", "aria-live": "polite", children: [_jsx("div", { className: "absolute inset-0 bg-[var(--lokvis-primary)]/10/80 backdrop-blur-sm" }), _jsx("div", { className: `relative w-full max-w-md rounded-2xl border-2 border-dashed p-8 text-center bg-[var(--lokvis-surface)] shadow-2xl ${hasRejections ? 'border-[var(--lokvis-danger)]' : 'border-[var(--lokvis-primary)]'}`, children: hasRejections ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-[var(--lokvis-danger)]/15", children: _jsxs(Icon, { size: 24, className: "text-[var(--lokvis-danger)]", strokeWidth: 2, children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "15", y1: "9", x2: "9", y2: "15" }), _jsx("line", { x1: "9", y1: "9", x2: "15", y2: "15" })] }) }), _jsx("p", { className: "mt-3 text-sm font-semibold text-[var(--lokvis-danger)]", children: "Unsupported file type" }), _jsx("p", { className: "mt-1.5 text-xs text-[var(--lokvis-danger)]/80", children: rejectedFiles.join(', ') }), _jsxs("p", { className: "mt-2 text-[10px] text-[var(--lokvis-fg-muted)]", children: ["Accepted: ", accept || 'all files'] })] })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-[var(--lokvis-primary)]/15", children: _jsx(Icon, { size: 24, className: "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-3 text-sm font-semibold text-[var(--lokvis-primary)]", children: "Drop files to import" }), _jsx("p", { className: "mt-1 text-xs text-[var(--lokvis-fg-muted)]", children: "Files are processed locally in your browser" }), _jsxs("p", { className: "mt-2 text-[10px] text-[var(--lokvis-fg-subtle)]", children: ["Accepted: ", accept || 'all files'] })] })) })] }));
159
+ return (_jsxs("div", { className: `pointer-events-none fixed inset-0 z-40 flex items-center justify-center p-8 ${className}`, role: "alertdialog", "aria-live": "polite", children: [_jsx("div", { className: "absolute inset-0 bg-[var(--lokvis-primary)]/10/80 backdrop-blur-sm" }), _jsx("div", { className: `relative w-full max-w-md rounded-2xl border-2 border-dashed p-8 text-center bg-[var(--lokvis-surface)] shadow-[var(--lokvis-elevation-overlay)] ${hasRejections ? 'border-[var(--lokvis-danger)]' : 'border-[var(--lokvis-primary)]'}`, children: hasRejections ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-[var(--lokvis-danger)]/15", children: _jsxs(Icon, { size: 24, className: "text-[var(--lokvis-danger)]", strokeWidth: 2, children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "15", y1: "9", x2: "9", y2: "15" }), _jsx("line", { x1: "9", y1: "9", x2: "15", y2: "15" })] }) }), _jsx("p", { className: "mt-3 text-sm font-semibold text-[var(--lokvis-danger)]", children: "Unsupported file type" }), _jsx("p", { className: "mt-1.5 text-xs text-[var(--lokvis-danger)]/80", children: rejectedFiles.join(', ') }), _jsxs("p", { className: "mt-2 text-[10px] text-[var(--lokvis-fg-muted)]", children: ["Accepted: ", accept || 'all files'] })] })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-[var(--lokvis-primary)]/15", children: _jsx(Icon, { size: 24, className: "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-3 text-sm font-semibold text-[var(--lokvis-primary)]", children: "Drop files to import" }), _jsx("p", { className: "mt-1 text-xs text-[var(--lokvis-fg-muted)]", children: "Files are processed locally in your browser" }), _jsxs("p", { className: "mt-2 text-[10px] text-[var(--lokvis-fg-subtle)]", children: ["Accepted: ", accept || 'all files'] })] })) })] }));
153
160
  }
154
161
  //# sourceMappingURL=GlobalDropzone.js.map