@phoenix-wing/kt-codegen 0.5.0 → 0.5.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/ui/KtCodegenApplyReport.d.ts +72 -0
- package/dist/ui/KtCodegenApplyReport.d.ts.map +1 -0
- package/dist/ui/KtCodegenApplyReport.js +331 -0
- package/dist/ui/KtCodegenApplyReport.js.map +1 -0
- package/dist/ui/KtCodegenApplyReportModel.d.ts +73 -0
- package/dist/ui/KtCodegenApplyReportModel.d.ts.map +1 -0
- package/dist/ui/KtCodegenApplyReportModel.js +59 -0
- package/dist/ui/KtCodegenApplyReportModel.js.map +1 -0
- package/dist/ui/KtCodegenControlCatalog.d.ts +41 -0
- package/dist/ui/KtCodegenControlCatalog.d.ts.map +1 -0
- package/dist/ui/KtCodegenControlCatalog.js +365 -0
- package/dist/ui/KtCodegenControlCatalog.js.map +1 -0
- package/dist/ui/KtCodegenControlCatalogState.d.ts +54 -0
- package/dist/ui/KtCodegenControlCatalogState.d.ts.map +1 -0
- package/dist/ui/KtCodegenControlCatalogState.js +96 -0
- package/dist/ui/KtCodegenControlCatalogState.js.map +1 -0
- package/dist/ui/KtCodegenControlPanel.d.ts.map +1 -1
- package/dist/ui/KtCodegenControlPanel.js +20 -2
- package/dist/ui/KtCodegenControlPanel.js.map +1 -1
- package/dist/ui/KtCodegenControlViewModel.d.ts +9 -0
- package/dist/ui/KtCodegenControlViewModel.d.ts.map +1 -1
- package/dist/ui/KtCodegenControlViewModel.js +62 -0
- package/dist/ui/KtCodegenControlViewModel.js.map +1 -1
- package/dist/ui/KtCodegenPrimaryPanel.d.ts +2 -5
- package/dist/ui/KtCodegenPrimaryPanel.d.ts.map +1 -1
- package/dist/ui/KtCodegenPrimaryPanel.js +18 -100
- package/dist/ui/KtCodegenPrimaryPanel.js.map +1 -1
- package/dist/ui/KtCodegenPrimaryUiState.d.ts +10 -0
- package/dist/ui/KtCodegenPrimaryUiState.d.ts.map +1 -0
- package/dist/ui/KtCodegenPrimaryUiState.js +16 -0
- package/dist/ui/KtCodegenPrimaryUiState.js.map +1 -0
- package/dist/ui/KtCodegenUiContracts.d.ts +19 -0
- package/dist/ui/KtCodegenUiContracts.d.ts.map +1 -1
- package/dist/ui/index.d.ts +4 -0
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +4 -0
- package/dist/ui/index.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { KT_CODEGEN_CONTROL_CATALOG_GROUPS, ktCodegenControlCatalogBlocks, ktCodegenControlVisibleSelectionState, ktCodegenFilterControlCatalogBlocks, ktCodegenGroupControlCatalogBlocks, ktCodegenNextControlSelection, ktCodegenNextControlVisibleSelection, } from "./KtCodegenControlCatalogState.js";
|
|
3
|
+
export const KT_CODEGEN_CONTROL_CATALOG_TAG_NAME = "kt-codegen-control-catalog";
|
|
4
|
+
const STYLE = `
|
|
5
|
+
:host {
|
|
6
|
+
--pnw-codegen-border: var(--vscode-panel-border, var(--border, color-mix(in srgb, currentColor 18%, transparent)));
|
|
7
|
+
--pnw-codegen-bg: var(--vscode-editor-background, var(--sidebar-bg, #fff));
|
|
8
|
+
--pnw-codegen-head-bg: var(--vscode-sideBarSectionHeader-background, var(--panel-head-bg, #f6f6f6));
|
|
9
|
+
--pnw-codegen-muted: var(--vscode-descriptionForeground, var(--muted, #666));
|
|
10
|
+
--pnw-codegen-hover: var(--vscode-list-hoverBackground, color-mix(in srgb, currentColor 8%, transparent));
|
|
11
|
+
--pnw-codegen-focus: var(--vscode-focusBorder, var(--accent, #007acc));
|
|
12
|
+
display: block; min-height: 0; color: var(--vscode-foreground, var(--text, inherit));
|
|
13
|
+
background: var(--pnw-codegen-bg); font: 12px/1.35 var(--vscode-font-family, system-ui, sans-serif);
|
|
14
|
+
}
|
|
15
|
+
* { box-sizing: border-box; }
|
|
16
|
+
button, input, select { font: inherit; }
|
|
17
|
+
button { cursor: pointer; }
|
|
18
|
+
button:disabled, input:disabled { opacity: .55; cursor: not-allowed; }
|
|
19
|
+
button:focus-visible, input:focus-visible, select:focus-visible, summary:focus-visible { outline: 1px solid var(--pnw-codegen-focus); outline-offset: 1px; }
|
|
20
|
+
.pnw-codegen-catalog-filters { display: flex; flex-wrap: nowrap; align-items: center; gap: 5px; padding: 6px; background: var(--vscode-editorWidget-background, var(--pnw-codegen-head-bg)); border-top: 1px solid var(--pnw-codegen-border); border-bottom: 1px solid var(--pnw-codegen-border); }
|
|
21
|
+
.pnw-codegen-catalog-label { color: var(--pnw-codegen-muted); font-size: 11px; }
|
|
22
|
+
.pnw-codegen-catalog-filter { min-width: 0; min-height: 25px; padding: 2px 24px 2px 7px; color: inherit; background: var(--vscode-dropdown-background, var(--input-bg, transparent)); border: 1px solid var(--pnw-codegen-border); border-radius: 3px; }
|
|
23
|
+
.pnw-codegen-status-filter { flex: 1 1 116px; }
|
|
24
|
+
.pnw-codegen-scope-filter { flex: 1 1 104px; }
|
|
25
|
+
.pnw-codegen-output-visible, .pnw-codegen-output-one { min-height: 25px; padding: 2px; color: inherit; background: var(--vscode-button-secondaryBackground, var(--btn-bg, transparent)); border: 1px solid var(--pnw-codegen-border); border-radius: 3px; }
|
|
26
|
+
.pnw-codegen-output-visible { flex: 0 0 27px; width: 27px; font-size: 15px; }
|
|
27
|
+
.pnw-codegen-catalog-list { max-height: 290px; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable both-edges; }
|
|
28
|
+
.pnw-codegen-catalog-group { border-bottom: 1px solid var(--pnw-codegen-border); }
|
|
29
|
+
.pnw-codegen-catalog-group:last-child { border-bottom: 0; }
|
|
30
|
+
.pnw-codegen-catalog-group > summary { display: flex; align-items: center; gap: 6px; min-height: 32px; padding: 4px 8px; color: inherit; background: var(--pnw-codegen-head-bg); cursor: pointer; user-select: none; }
|
|
31
|
+
.pnw-codegen-catalog-group > summary:hover { background: var(--pnw-codegen-hover); }
|
|
32
|
+
.pnw-codegen-group-check { flex: 0 0 auto; margin: 0; }
|
|
33
|
+
.pnw-codegen-group-title { font-weight: 700; }
|
|
34
|
+
.pnw-codegen-group-count { margin-left: auto; color: var(--pnw-codegen-muted); font-size: 10px; font-weight: 400; text-align: right; }
|
|
35
|
+
.pnw-codegen-group-list { border-top: 1px solid var(--pnw-codegen-border); }
|
|
36
|
+
.pnw-codegen-catalog-row { display: grid; grid-template-columns: 22px 34px minmax(0, 1fr) auto auto auto; align-items: center; gap: 5px; min-height: 36px; padding: 3px 7px 3px 20px; border-bottom: 1px solid var(--pnw-codegen-border); }
|
|
37
|
+
.pnw-codegen-catalog-row:last-child { border-bottom: 0; }
|
|
38
|
+
.pnw-codegen-catalog-row:hover { background: var(--pnw-codegen-hover); }
|
|
39
|
+
.pnw-codegen-legacy-id { justify-self: start; padding: 1px 4px; color: var(--pnw-codegen-muted); border: 1px solid var(--pnw-codegen-border); border-radius: 999px; font-size: 10px; white-space: nowrap; }
|
|
40
|
+
.pnw-codegen-catalog-copy { min-width: 0; overflow: hidden; }
|
|
41
|
+
.pnw-codegen-title-line { display: flex; min-width: 0; align-items: center; gap: 4px; overflow: hidden; white-space: nowrap; }
|
|
42
|
+
.pnw-codegen-catalog-title, .pnw-codegen-control-words { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
43
|
+
.pnw-codegen-catalog-title { min-width: 0; font-weight: 600; }
|
|
44
|
+
.pnw-codegen-control-words { color: var(--pnw-codegen-muted); }
|
|
45
|
+
.pnw-codegen-badges { display: flex; align-items: center; justify-content: flex-end; gap: 3px; }
|
|
46
|
+
.pnw-codegen-badge { padding: 1px 4px; color: var(--pnw-codegen-muted); border: 1px solid var(--pnw-codegen-border); border-radius: 999px; font-size: 10px; white-space: nowrap; }
|
|
47
|
+
.pnw-codegen-badge.pnw-codegen-legacy, .pnw-codegen-state.pnw-codegen-missing { color: var(--vscode-editorWarning-foreground, #b45309); border-color: currentColor; }
|
|
48
|
+
.pnw-codegen-state.pnw-codegen-hit { color: var(--vscode-testing-iconPassed, #15803d); border-color: currentColor; }
|
|
49
|
+
.pnw-codegen-state.pnw-codegen-unclosed { color: var(--vscode-errorForeground, #b91c1c); border-color: currentColor; }
|
|
50
|
+
.pnw-codegen-output-one { width: 28px; }
|
|
51
|
+
.pnw-codegen-catalog-empty { padding: 12px 8px; color: var(--pnw-codegen-muted); text-align: center; }
|
|
52
|
+
:host([mode="compact"]) .pnw-codegen-catalog-list { max-height: 236px; }
|
|
53
|
+
:host([mode="compact"]) .pnw-codegen-catalog-filters { gap: 3px; padding: 3px 5px; }
|
|
54
|
+
:host([mode="compact"]) .pnw-codegen-catalog-group > summary { min-height: 28px; gap: 4px; padding: 2px 5px; }
|
|
55
|
+
:host([mode="compact"]) .pnw-codegen-catalog-row { grid-template-columns: 22px 34px minmax(0, 1fr) auto auto; gap: 4px; min-height: 32px; padding: 2px 5px 2px 12px; }
|
|
56
|
+
:host([mode="compact"]) .pnw-codegen-badges, :host([mode="compact"]) .pnw-codegen-control-words { display: none; }
|
|
57
|
+
`;
|
|
58
|
+
export class KtCodegenControlCatalog extends HTMLElement {
|
|
59
|
+
root = this.attachShadow({ mode: "open" });
|
|
60
|
+
currentModel;
|
|
61
|
+
currentDisabled = false;
|
|
62
|
+
currentOutputEnabled = false;
|
|
63
|
+
filter = { status: "all", scope: "all" };
|
|
64
|
+
singleMode = false;
|
|
65
|
+
listScrollTop = 0;
|
|
66
|
+
focusedBlockKey;
|
|
67
|
+
rowChecks = new Map();
|
|
68
|
+
groupSelection = new Map();
|
|
69
|
+
expandedGroups = new Set(KT_CODEGEN_CONTROL_CATALOG_GROUPS.map((group) => group.id));
|
|
70
|
+
get model() { return this.currentModel; }
|
|
71
|
+
set model(value) {
|
|
72
|
+
const previous = this.currentModel;
|
|
73
|
+
if (!previous?.preflight && value?.preflight)
|
|
74
|
+
this.filter = { ...this.filter, status: "hit" };
|
|
75
|
+
if (previous?.preflight && !value?.preflight)
|
|
76
|
+
this.filter = { ...this.filter, status: "all" };
|
|
77
|
+
if (value?.singleSelectionMode !== undefined)
|
|
78
|
+
this.singleMode = value.singleSelectionMode;
|
|
79
|
+
this.currentModel = value;
|
|
80
|
+
if (previous && value && this.canPatchSelection(previous, value)) {
|
|
81
|
+
this.syncSelectionPresentation();
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
this.render();
|
|
85
|
+
}
|
|
86
|
+
get disabled() { return this.currentDisabled; }
|
|
87
|
+
set disabled(value) {
|
|
88
|
+
if (this.currentDisabled === value)
|
|
89
|
+
return;
|
|
90
|
+
this.currentDisabled = value;
|
|
91
|
+
this.render();
|
|
92
|
+
}
|
|
93
|
+
get outputEnabled() { return this.currentOutputEnabled; }
|
|
94
|
+
set outputEnabled(value) {
|
|
95
|
+
if (this.currentOutputEnabled === value)
|
|
96
|
+
return;
|
|
97
|
+
this.currentOutputEnabled = value;
|
|
98
|
+
this.render();
|
|
99
|
+
}
|
|
100
|
+
connectedCallback() { this.render(); }
|
|
101
|
+
render() {
|
|
102
|
+
if (!this.isConnected)
|
|
103
|
+
return;
|
|
104
|
+
this.rowChecks.clear();
|
|
105
|
+
this.groupSelection.clear();
|
|
106
|
+
const style = document.createElement("style");
|
|
107
|
+
style.textContent = STYLE;
|
|
108
|
+
const model = this.currentModel;
|
|
109
|
+
if (!model) {
|
|
110
|
+
this.root.replaceChildren(style, this.empty("请先打开一份 Codegen JSON。"));
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const allBlocks = ktCodegenControlCatalogBlocks(model);
|
|
114
|
+
const visibleBlocks = this.visibleBlocks(model, allBlocks);
|
|
115
|
+
const selected = new Set(model.selectedBlockKeys);
|
|
116
|
+
const canonicalBlockKeys = allBlocks.map((block) => block.key);
|
|
117
|
+
const filters = document.createElement("div");
|
|
118
|
+
filters.className = "pnw-codegen-catalog-filters";
|
|
119
|
+
filters.setAttribute("aria-label", "控制符显示筛选,不改变预检和 Apply 选择");
|
|
120
|
+
if (model.preflight) {
|
|
121
|
+
const status = document.createElement("select");
|
|
122
|
+
status.className = "pnw-codegen-catalog-filter pnw-codegen-status-filter";
|
|
123
|
+
status.setAttribute("aria-label", "控制符状态");
|
|
124
|
+
status.title = "按预检状态筛选;不改变 checkbox 与 Apply 范围";
|
|
125
|
+
for (const [value, label] of [["hit", "命中"], ["unclosed", "未闭合"], ["missing", "未命中"], ["all", "全部"]]) {
|
|
126
|
+
status.append(new Option(`${label} ${this.visibleBlocks(model, allBlocks, { ...this.filter, status: value }).length}`, value));
|
|
127
|
+
}
|
|
128
|
+
status.value = this.filter.status;
|
|
129
|
+
status.onchange = () => this.setFilter({ status: status.value });
|
|
130
|
+
filters.append(status);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const label = document.createElement("span");
|
|
134
|
+
label.className = "pnw-codegen-catalog-label";
|
|
135
|
+
label.textContent = "尚未预检";
|
|
136
|
+
filters.append(label);
|
|
137
|
+
}
|
|
138
|
+
const scope = document.createElement("select");
|
|
139
|
+
scope.className = "pnw-codegen-catalog-filter pnw-codegen-scope-filter";
|
|
140
|
+
scope.setAttribute("aria-label", "控制符范围");
|
|
141
|
+
scope.title = "按控制符类型筛选;不改变 checkbox 与 Apply 范围";
|
|
142
|
+
for (const [value, label] of [["all", "全部类型"], ["cpp-only", "C++ only"], ["field-code", "Field Code"]]) {
|
|
143
|
+
scope.append(new Option(label, value));
|
|
144
|
+
}
|
|
145
|
+
scope.value = this.filter.scope;
|
|
146
|
+
scope.onchange = () => this.setFilter({ scope: scope.value });
|
|
147
|
+
filters.append(scope);
|
|
148
|
+
if (this.currentOutputEnabled) {
|
|
149
|
+
const output = document.createElement("button");
|
|
150
|
+
output.type = "button";
|
|
151
|
+
output.className = "pnw-codegen-output-visible";
|
|
152
|
+
output.textContent = "⧉";
|
|
153
|
+
output.disabled = this.currentDisabled || visibleBlocks.length === 0;
|
|
154
|
+
output.title = `输出当前筛选并复制(${visibleBlocks.length} 项);不改变预检和 Apply 选择`;
|
|
155
|
+
output.setAttribute("aria-label", output.title);
|
|
156
|
+
output.onclick = () => this.emit("kt-codegen-control-output", { scope: "visible", blockKeys: visibleBlocks.map((block) => block.key) });
|
|
157
|
+
filters.append(output);
|
|
158
|
+
}
|
|
159
|
+
const list = document.createElement("div");
|
|
160
|
+
list.className = "pnw-codegen-catalog-list";
|
|
161
|
+
list.tabIndex = 0;
|
|
162
|
+
list.onscroll = () => { this.listScrollTop = list.scrollTop; };
|
|
163
|
+
list.setAttribute("role", "tree");
|
|
164
|
+
list.setAttribute("aria-label", "Codegen 控制符目录");
|
|
165
|
+
const allGroups = ktCodegenGroupControlCatalogBlocks(allBlocks);
|
|
166
|
+
const visibleGroups = ktCodegenGroupControlCatalogBlocks(visibleBlocks);
|
|
167
|
+
for (const group of allGroups) {
|
|
168
|
+
const groupVisible = visibleGroups.find((candidate) => candidate.id === group.id)?.blocks ?? [];
|
|
169
|
+
if (!groupVisible.length)
|
|
170
|
+
continue;
|
|
171
|
+
const visibleKeys = groupVisible.map((block) => block.key);
|
|
172
|
+
const groupState = ktCodegenControlVisibleSelectionState(visibleKeys, model.selectedBlockKeys);
|
|
173
|
+
const details = document.createElement("details");
|
|
174
|
+
details.className = "pnw-codegen-catalog-group";
|
|
175
|
+
details.open = this.expandedGroups.has(group.id);
|
|
176
|
+
details.setAttribute("role", "treeitem");
|
|
177
|
+
details.setAttribute("aria-expanded", String(details.open));
|
|
178
|
+
details.ontoggle = () => {
|
|
179
|
+
if (details.open)
|
|
180
|
+
this.expandedGroups.add(group.id);
|
|
181
|
+
else
|
|
182
|
+
this.expandedGroups.delete(group.id);
|
|
183
|
+
details.setAttribute("aria-expanded", String(details.open));
|
|
184
|
+
};
|
|
185
|
+
const header = document.createElement("summary");
|
|
186
|
+
const groupCheck = document.createElement("input");
|
|
187
|
+
groupCheck.type = "checkbox";
|
|
188
|
+
groupCheck.className = "pnw-codegen-group-check";
|
|
189
|
+
groupCheck.checked = groupState.checked;
|
|
190
|
+
groupCheck.indeterminate = groupState.indeterminate;
|
|
191
|
+
groupCheck.disabled = this.currentDisabled || groupState.disabled;
|
|
192
|
+
groupCheck.setAttribute("aria-label", `选择 ${group.label} 当前可见控制符`);
|
|
193
|
+
groupCheck.onclick = (event) => event.stopPropagation();
|
|
194
|
+
groupCheck.onchange = () => this.applySelection(ktCodegenNextControlVisibleSelection(this.selection(), visibleKeys, groupCheck.checked, canonicalBlockKeys));
|
|
195
|
+
const title = document.createElement("span");
|
|
196
|
+
title.className = "pnw-codegen-group-title";
|
|
197
|
+
title.textContent = group.label;
|
|
198
|
+
const count = document.createElement("span");
|
|
199
|
+
count.className = "pnw-codegen-group-count";
|
|
200
|
+
count.textContent = this.groupCount(groupState.selectedCount, groupState.visibleCount, group.blocks.length);
|
|
201
|
+
this.groupSelection.set(group.id, { check: groupCheck, count, visibleBlockKeys: visibleKeys, totalCount: group.blocks.length });
|
|
202
|
+
header.append(groupCheck, title, count);
|
|
203
|
+
const groupList = document.createElement("div");
|
|
204
|
+
groupList.className = "pnw-codegen-group-list";
|
|
205
|
+
groupList.setAttribute("role", "group");
|
|
206
|
+
for (const block of groupVisible)
|
|
207
|
+
groupList.append(this.blockRow(block, selected, canonicalBlockKeys));
|
|
208
|
+
details.append(header, groupList);
|
|
209
|
+
list.append(details);
|
|
210
|
+
}
|
|
211
|
+
if (!visibleBlocks.length)
|
|
212
|
+
list.append(this.empty(model.preflight && this.filter.status === "hit"
|
|
213
|
+
? "当前筛选没有命中的控制符;可切换到“未闭合”或“未命中”。"
|
|
214
|
+
: "当前筛选没有控制符。"));
|
|
215
|
+
this.root.replaceChildren(style, filters, list);
|
|
216
|
+
list.scrollTop = this.listScrollTop;
|
|
217
|
+
const focusTarget = this.focusedBlockKey === undefined
|
|
218
|
+
? undefined
|
|
219
|
+
: this.rowChecks.get(this.focusedBlockKey);
|
|
220
|
+
focusTarget?.focus({ preventScroll: true });
|
|
221
|
+
}
|
|
222
|
+
blockRow(block, selected, canonicalBlockKeys) {
|
|
223
|
+
const row = document.createElement("div");
|
|
224
|
+
row.className = "pnw-codegen-catalog-row";
|
|
225
|
+
row.setAttribute("role", "treeitem");
|
|
226
|
+
const check = document.createElement("input");
|
|
227
|
+
check.type = "checkbox";
|
|
228
|
+
check.checked = selected.has(block.key);
|
|
229
|
+
check.disabled = this.currentDisabled;
|
|
230
|
+
check.setAttribute("aria-label", `选择 ${block.title} 参与预检和 Apply`);
|
|
231
|
+
this.rowChecks.set(block.key, check);
|
|
232
|
+
check.onfocus = () => { this.focusedBlockKey = block.key; };
|
|
233
|
+
check.onblur = () => { if (this.focusedBlockKey === block.key)
|
|
234
|
+
this.focusedBlockKey = undefined; };
|
|
235
|
+
check.onchange = () => {
|
|
236
|
+
this.focusedBlockKey = block.key;
|
|
237
|
+
this.applySelection(ktCodegenNextControlSelection(this.selection(), block.key, check.checked, canonicalBlockKeys));
|
|
238
|
+
};
|
|
239
|
+
const id = document.createElement("span");
|
|
240
|
+
id.className = "pnw-codegen-legacy-id";
|
|
241
|
+
id.textContent = `#${block.legacyId}`;
|
|
242
|
+
const copy = document.createElement("span");
|
|
243
|
+
copy.className = "pnw-codegen-catalog-copy";
|
|
244
|
+
copy.title = block.notes;
|
|
245
|
+
const titleLine = document.createElement("span");
|
|
246
|
+
titleLine.className = "pnw-codegen-title-line";
|
|
247
|
+
const title = document.createElement("span");
|
|
248
|
+
title.className = "pnw-codegen-catalog-title";
|
|
249
|
+
title.textContent = block.title;
|
|
250
|
+
titleLine.append(title);
|
|
251
|
+
if (block.legacyState === "legacy-deprecated") {
|
|
252
|
+
const legacy = document.createElement("span");
|
|
253
|
+
legacy.className = "pnw-codegen-badge pnw-codegen-legacy";
|
|
254
|
+
legacy.textContent = "旧兼容";
|
|
255
|
+
titleLine.append(legacy);
|
|
256
|
+
}
|
|
257
|
+
const words = document.createElement("span");
|
|
258
|
+
words.className = "pnw-codegen-control-words";
|
|
259
|
+
words.textContent = block.controlWords;
|
|
260
|
+
copy.append(titleLine, words);
|
|
261
|
+
const state = document.createElement("span");
|
|
262
|
+
state.className = `pnw-codegen-badge pnw-codegen-state pnw-codegen-${block.status}`;
|
|
263
|
+
state.textContent = this.statusLabel(block.status, block.hitCount);
|
|
264
|
+
const badges = document.createElement("span");
|
|
265
|
+
badges.className = "pnw-codegen-badges";
|
|
266
|
+
const platform = document.createElement("span");
|
|
267
|
+
platform.className = "pnw-codegen-badge";
|
|
268
|
+
platform.textContent = block.platform.toUpperCase();
|
|
269
|
+
badges.append(platform);
|
|
270
|
+
row.append(check, id, copy, state, badges);
|
|
271
|
+
if (this.currentOutputEnabled) {
|
|
272
|
+
const output = document.createElement("button");
|
|
273
|
+
output.type = "button";
|
|
274
|
+
output.className = "pnw-codegen-output-one";
|
|
275
|
+
output.textContent = "⧉";
|
|
276
|
+
output.disabled = this.currentDisabled;
|
|
277
|
+
output.title = `输出${block.title}控制块到日志并复制`;
|
|
278
|
+
output.setAttribute("aria-label", output.title);
|
|
279
|
+
output.onclick = () => this.emit("kt-codegen-control-output", { scope: "block", blockKey: block.key });
|
|
280
|
+
row.append(output);
|
|
281
|
+
}
|
|
282
|
+
return row;
|
|
283
|
+
}
|
|
284
|
+
visibleBlocks(model, blocks = ktCodegenControlCatalogBlocks(model), filter = this.filter) {
|
|
285
|
+
return ktCodegenFilterControlCatalogBlocks(blocks, model.selectedBlockKeys, filter);
|
|
286
|
+
}
|
|
287
|
+
selection() {
|
|
288
|
+
return {
|
|
289
|
+
blockKeys: this.currentModel?.selectedBlockKeys ?? [],
|
|
290
|
+
singleMode: this.currentModel?.singleSelectionMode ?? this.singleMode,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
applySelection(next) {
|
|
294
|
+
const model = this.currentModel;
|
|
295
|
+
if (!model || this.currentDisabled)
|
|
296
|
+
return;
|
|
297
|
+
this.singleMode = next.singleMode;
|
|
298
|
+
this.currentModel = { ...model, selectedBlockKeys: next.blockKeys, singleSelectionMode: next.singleMode };
|
|
299
|
+
this.emit("kt-codegen-control-selection-change", next);
|
|
300
|
+
this.syncSelectionPresentation();
|
|
301
|
+
}
|
|
302
|
+
syncSelectionPresentation() {
|
|
303
|
+
const model = this.currentModel;
|
|
304
|
+
if (!model)
|
|
305
|
+
return;
|
|
306
|
+
const selected = new Set(model.selectedBlockKeys);
|
|
307
|
+
for (const [blockKey, check] of this.rowChecks)
|
|
308
|
+
check.checked = selected.has(blockKey);
|
|
309
|
+
for (const binding of this.groupSelection.values()) {
|
|
310
|
+
const state = ktCodegenControlVisibleSelectionState(binding.visibleBlockKeys, model.selectedBlockKeys);
|
|
311
|
+
binding.check.checked = state.checked;
|
|
312
|
+
binding.check.indeterminate = state.indeterminate;
|
|
313
|
+
binding.check.disabled = this.currentDisabled || state.disabled;
|
|
314
|
+
binding.count.textContent = this.groupCount(state.selectedCount, state.visibleCount, binding.totalCount);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
canPatchSelection(previous, next) {
|
|
318
|
+
if (previous.documentId !== next.documentId
|
|
319
|
+
|| Boolean(previous.preflight) !== Boolean(next.preflight)
|
|
320
|
+
|| previous.blocks.length !== next.blocks.length)
|
|
321
|
+
return false;
|
|
322
|
+
return previous.blocks.every((block, index) => {
|
|
323
|
+
const candidate = next.blocks[index];
|
|
324
|
+
return candidate?.key === block.key
|
|
325
|
+
&& candidate.status === block.status
|
|
326
|
+
&& candidate.hitCount === block.hitCount
|
|
327
|
+
&& candidate.artifactCount === block.artifactCount;
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
setFilter(next) {
|
|
331
|
+
this.filter = { ...this.filter, ...next };
|
|
332
|
+
this.render();
|
|
333
|
+
}
|
|
334
|
+
statusLabel(status, hitCount) {
|
|
335
|
+
if (status === "hit")
|
|
336
|
+
return `${hitCount} 命中`;
|
|
337
|
+
if (status === "unclosed")
|
|
338
|
+
return "未闭合";
|
|
339
|
+
if (status === "missing")
|
|
340
|
+
return "未命中";
|
|
341
|
+
if (status === "pending")
|
|
342
|
+
return "待预检";
|
|
343
|
+
return "未选择";
|
|
344
|
+
}
|
|
345
|
+
groupCount(selected, visible, total) {
|
|
346
|
+
return `显示 ${visible}/${total} · 可见已选 ${selected}/${visible}`;
|
|
347
|
+
}
|
|
348
|
+
empty(text) {
|
|
349
|
+
const empty = document.createElement("div");
|
|
350
|
+
empty.className = "pnw-codegen-catalog-empty";
|
|
351
|
+
empty.textContent = text;
|
|
352
|
+
return empty;
|
|
353
|
+
}
|
|
354
|
+
emit(type, detail) {
|
|
355
|
+
this.dispatchEvent(new CustomEvent(type, { bubbles: true, composed: true, detail }));
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
export function ktCodegenDefineControlCatalogElement(tagName = KT_CODEGEN_CONTROL_CATALOG_TAG_NAME) {
|
|
359
|
+
const registered = customElements.get(tagName);
|
|
360
|
+
if (registered)
|
|
361
|
+
return registered;
|
|
362
|
+
customElements.define(tagName, KtCodegenControlCatalog);
|
|
363
|
+
return KtCodegenControlCatalog;
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=KtCodegenControlCatalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KtCodegenControlCatalog.js","sourceRoot":"","sources":["../../src/ui/KtCodegenControlCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type KtCodegenBlockKey } from "../blocks/legacy-blocks.js";
|
|
2
|
+
import type { KtCodegenControlBlockStateUiModel, KtCodegenControlUiModel } from "./KtCodegenUiContracts.js";
|
|
3
|
+
export type KtCodegenControlCatalogStatusFilter = "hit" | "unclosed" | "missing" | "selected" | "all";
|
|
4
|
+
export type KtCodegenControlCatalogScopeFilter = "all" | "cpp-only" | "field-code";
|
|
5
|
+
export interface KtCodegenControlCatalogFilter {
|
|
6
|
+
readonly status: KtCodegenControlCatalogStatusFilter;
|
|
7
|
+
readonly scope: KtCodegenControlCatalogScopeFilter;
|
|
8
|
+
}
|
|
9
|
+
export type KtCodegenControlCatalogGroupId = "cpp" | "qt" | "caa";
|
|
10
|
+
export declare const KT_CODEGEN_CONTROL_CATALOG_GROUPS: readonly [{
|
|
11
|
+
readonly id: "cpp";
|
|
12
|
+
readonly label: "C++";
|
|
13
|
+
}, {
|
|
14
|
+
readonly id: "qt";
|
|
15
|
+
readonly label: "Qt";
|
|
16
|
+
}, {
|
|
17
|
+
readonly id: "caa";
|
|
18
|
+
readonly label: "CAA";
|
|
19
|
+
}];
|
|
20
|
+
export interface KtCodegenControlCatalogBlockUiModel extends KtCodegenControlBlockStateUiModel {
|
|
21
|
+
readonly legacyId: number;
|
|
22
|
+
readonly platform: KtCodegenControlCatalogGroupId;
|
|
23
|
+
readonly legacyState: "active" | "legacy-deprecated";
|
|
24
|
+
readonly title: string;
|
|
25
|
+
readonly controlWords: string;
|
|
26
|
+
readonly notes: string;
|
|
27
|
+
}
|
|
28
|
+
export interface KtCodegenControlCatalogGroup {
|
|
29
|
+
readonly id: KtCodegenControlCatalogGroupId;
|
|
30
|
+
readonly label: string;
|
|
31
|
+
readonly blocks: readonly KtCodegenControlCatalogBlockUiModel[];
|
|
32
|
+
}
|
|
33
|
+
export interface KtCodegenControlVisibleSelectionState {
|
|
34
|
+
readonly checked: boolean;
|
|
35
|
+
readonly indeterminate: boolean;
|
|
36
|
+
readonly disabled: boolean;
|
|
37
|
+
readonly selectedCount: number;
|
|
38
|
+
readonly visibleCount: number;
|
|
39
|
+
}
|
|
40
|
+
export interface KtCodegenControlCatalogSelection {
|
|
41
|
+
readonly blockKeys: readonly KtCodegenBlockKey[];
|
|
42
|
+
readonly singleMode: boolean;
|
|
43
|
+
}
|
|
44
|
+
/** 把 Host 状态与 Wing 的稳定控制符元数据合成唯一的目录行模型。 */
|
|
45
|
+
export declare function ktCodegenControlCatalogBlocks(model: KtCodegenControlUiModel): readonly KtCodegenControlCatalogBlockUiModel[];
|
|
46
|
+
/** 显示筛选不改变真正参与 Preflight/Apply 的选择。 */
|
|
47
|
+
export declare function ktCodegenFilterControlCatalogBlocks(blocks: readonly KtCodegenControlCatalogBlockUiModel[], selectedBlockKeys: readonly KtCodegenBlockKey[], filter: KtCodegenControlCatalogFilter): readonly KtCodegenControlCatalogBlockUiModel[];
|
|
48
|
+
/** 目录只采用插件既有的一层 C++/Qt/CAA 分组,组内保持 legacyId 顺序。 */
|
|
49
|
+
export declare function ktCodegenGroupControlCatalogBlocks(blocks: readonly KtCodegenControlCatalogBlockUiModel[]): readonly KtCodegenControlCatalogGroup[];
|
|
50
|
+
export declare function ktCodegenControlVisibleSelectionState(visibleBlockKeys: readonly KtCodegenBlockKey[], selectedBlockKeys: readonly KtCodegenBlockKey[]): KtCodegenControlVisibleSelectionState;
|
|
51
|
+
/** 组 checkbox 只修改当前组合筛选可见项,结果恢复 canonical 顺序。 */
|
|
52
|
+
export declare function ktCodegenNextControlVisibleSelection(current: KtCodegenControlCatalogSelection, visibleBlockKeys: readonly KtCodegenBlockKey[], checked: boolean, canonicalBlockKeys: readonly KtCodegenBlockKey[]): KtCodegenControlCatalogSelection;
|
|
53
|
+
export declare function ktCodegenNextControlSelection(current: KtCodegenControlCatalogSelection, blockKey: KtCodegenBlockKey, checked: boolean, canonicalBlockKeys: readonly KtCodegenBlockKey[]): KtCodegenControlCatalogSelection;
|
|
54
|
+
//# sourceMappingURL=KtCodegenControlCatalogState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KtCodegenControlCatalogState.d.ts","sourceRoot":"","sources":["../../src/ui/KtCodegenControlCatalogState.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,iCAAiC,EACjC,uBAAuB,EACxB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,mCAAmC,GAC3C,KAAK,GACL,UAAU,GACV,SAAS,GACT,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,MAAM,kCAAkC,GAAG,KAAK,GAAG,UAAU,GAAG,YAAY,CAAC;AAEnF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE,mCAAmC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,kCAAkC,CAAC;CACpD;AAED,MAAM,MAAM,8BAA8B,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAElE,eAAO,MAAM,iCAAiC;;;;;;;;;EAO3C,CAAC;AAEJ,MAAM,WAAW,mCAAoC,SAAQ,iCAAiC;IAC5F,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,8BAA8B,CAAC;IAClD,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,mBAAmB,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,EAAE,8BAA8B,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,mCAAmC,EAAE,CAAC;CACjE;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAID,2CAA2C;AAC3C,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,uBAAuB,GAC7B,SAAS,mCAAmC,EAAE,CAgBhD;AAED,uCAAuC;AACvC,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,SAAS,mCAAmC,EAAE,EACtD,iBAAiB,EAAE,SAAS,iBAAiB,EAAE,EAC/C,MAAM,EAAE,6BAA6B,GACpC,SAAS,mCAAmC,EAAE,CAWhD;AAED,mDAAmD;AACnD,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,SAAS,mCAAmC,EAAE,GACrD,SAAS,4BAA4B,EAAE,CAMzC;AAED,wBAAgB,qCAAqC,CACnD,gBAAgB,EAAE,SAAS,iBAAiB,EAAE,EAC9C,iBAAiB,EAAE,SAAS,iBAAiB,EAAE,GAC9C,qCAAqC,CAavC;AAED,iDAAiD;AACjD,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,gCAAgC,EACzC,gBAAgB,EAAE,SAAS,iBAAiB,EAAE,EAC9C,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,GAC/C,gCAAgC,CAUlC;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,gCAAgC,EACzC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,GAC/C,gCAAgC,CASlC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { KT_CODEGEN_BLOCK_PRESENTATIONS, ktCodegenBlockKeysForPreset, } from "../KtCodegenBlockPresentation.js";
|
|
3
|
+
import { KT_CODEGEN_LEGACY_BLOCKS, } from "../blocks/legacy-blocks.js";
|
|
4
|
+
export const KT_CODEGEN_CONTROL_CATALOG_GROUPS = [
|
|
5
|
+
{ id: "cpp", label: "C++" },
|
|
6
|
+
{ id: "qt", label: "Qt" },
|
|
7
|
+
{ id: "caa", label: "CAA" },
|
|
8
|
+
];
|
|
9
|
+
const legacyByKey = new Map(KT_CODEGEN_LEGACY_BLOCKS.map((block) => [block.key, block]));
|
|
10
|
+
/** 把 Host 状态与 Wing 的稳定控制符元数据合成唯一的目录行模型。 */
|
|
11
|
+
export function ktCodegenControlCatalogBlocks(model) {
|
|
12
|
+
const stateByKey = new Map(model.blocks.map((block) => [block.key, block]));
|
|
13
|
+
return KT_CODEGEN_BLOCK_PRESENTATIONS.flatMap((presentation) => {
|
|
14
|
+
const legacy = legacyByKey.get(presentation.key);
|
|
15
|
+
const state = stateByKey.get(presentation.key);
|
|
16
|
+
if (!legacy || !state)
|
|
17
|
+
return [];
|
|
18
|
+
return [{
|
|
19
|
+
...state,
|
|
20
|
+
legacyId: presentation.legacyId,
|
|
21
|
+
platform: legacy.platform,
|
|
22
|
+
legacyState: legacy.legacyState,
|
|
23
|
+
title: presentation.title,
|
|
24
|
+
controlWords: presentation.controlWords,
|
|
25
|
+
notes: presentation.notes,
|
|
26
|
+
}];
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/** 显示筛选不改变真正参与 Preflight/Apply 的选择。 */
|
|
30
|
+
export function ktCodegenFilterControlCatalogBlocks(blocks, selectedBlockKeys, filter) {
|
|
31
|
+
const selected = new Set(selectedBlockKeys);
|
|
32
|
+
const scoped = filter.scope === "all"
|
|
33
|
+
? undefined
|
|
34
|
+
: new Set(ktCodegenBlockKeysForPreset(filter.scope));
|
|
35
|
+
return blocks.filter((block) => {
|
|
36
|
+
if (scoped && !scoped.has(block.key))
|
|
37
|
+
return false;
|
|
38
|
+
if (filter.status === "all")
|
|
39
|
+
return true;
|
|
40
|
+
if (filter.status === "selected")
|
|
41
|
+
return selected.has(block.key);
|
|
42
|
+
return block.status === filter.status;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/** 目录只采用插件既有的一层 C++/Qt/CAA 分组,组内保持 legacyId 顺序。 */
|
|
46
|
+
export function ktCodegenGroupControlCatalogBlocks(blocks) {
|
|
47
|
+
const canonical = [...blocks].sort((left, right) => left.legacyId - right.legacyId);
|
|
48
|
+
return KT_CODEGEN_CONTROL_CATALOG_GROUPS.map((group) => ({
|
|
49
|
+
...group,
|
|
50
|
+
blocks: canonical.filter((block) => block.platform === group.id),
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
export function ktCodegenControlVisibleSelectionState(visibleBlockKeys, selectedBlockKeys) {
|
|
54
|
+
const visible = new Set(visibleBlockKeys);
|
|
55
|
+
const selected = new Set(selectedBlockKeys);
|
|
56
|
+
let selectedCount = 0;
|
|
57
|
+
for (const key of visible)
|
|
58
|
+
if (selected.has(key))
|
|
59
|
+
selectedCount += 1;
|
|
60
|
+
const visibleCount = visible.size;
|
|
61
|
+
return {
|
|
62
|
+
checked: visibleCount > 0 && selectedCount === visibleCount,
|
|
63
|
+
indeterminate: selectedCount > 0 && selectedCount < visibleCount,
|
|
64
|
+
disabled: visibleCount === 0,
|
|
65
|
+
selectedCount,
|
|
66
|
+
visibleCount,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** 组 checkbox 只修改当前组合筛选可见项,结果恢复 canonical 顺序。 */
|
|
70
|
+
export function ktCodegenNextControlVisibleSelection(current, visibleBlockKeys, checked, canonicalBlockKeys) {
|
|
71
|
+
const selected = new Set(current.blockKeys);
|
|
72
|
+
for (const key of visibleBlockKeys) {
|
|
73
|
+
if (checked)
|
|
74
|
+
selected.add(key);
|
|
75
|
+
else
|
|
76
|
+
selected.delete(key);
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
blockKeys: canonicalBlockKeys.filter((key) => selected.has(key)),
|
|
80
|
+
singleMode: checked ? false : current.singleMode,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export function ktCodegenNextControlSelection(current, blockKey, checked, canonicalBlockKeys) {
|
|
84
|
+
const selected = new Set(current.blockKeys);
|
|
85
|
+
if (checked && current.singleMode)
|
|
86
|
+
selected.clear();
|
|
87
|
+
if (checked)
|
|
88
|
+
selected.add(blockKey);
|
|
89
|
+
else
|
|
90
|
+
selected.delete(blockKey);
|
|
91
|
+
return {
|
|
92
|
+
blockKeys: canonicalBlockKeys.filter((key) => selected.has(key)),
|
|
93
|
+
singleMode: current.singleMode,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=KtCodegenControlCatalogState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KtCodegenControlCatalogState.js","sourceRoot":"","sources":["../../src/ui/KtCodegenControlCatalogState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KtCodegenControlPanel.d.ts","sourceRoot":"","sources":["../../src/ui/KtCodegenControlPanel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"KtCodegenControlPanel.d.ts","sourceRoot":"","sources":["../../src/ui/KtCodegenControlPanel.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAKV,uBAAuB,EACxB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,iCAAiC,6BAA6B,CAAC;AAmE5E,qBAAa,qBAAsB,SAAQ,WAAW;IACpD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;IAC5D,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,eAAe,CAAS;IAEhC,IAAI,KAAK,IAAI,uBAAuB,GAAG,SAAS,CAA8B;IAC9E,IAAI,KAAK,CAAC,KAAK,EAAE,uBAAuB,GAAG,SAAS,EAOnD;IAED,IAAI,UAAU,IAAI,MAAM,CAAmC;IAC3D,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAG3B;IAED,iBAAiB,IAAI,IAAI;IAEzB,OAAO,CAAC,MAAM;IAiEd,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,SAAS;IAmCjB,OAAO,CAAC,UAAU;IAyDlB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,cAAc;IAoCtB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,KAAK;CAMd;AAED,wBAAgB,kCAAkC,CAChD,OAAO,SAAoC,GAC1C,OAAO,qBAAqB,CAK9B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,0BAA0B,EAAE,qBAAqB,CAAC;KACnD;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
import { KT_CODEGEN_BLOCK_PRESENTATIONS } from "../KtCodegenBlockPresentation.js";
|
|
3
|
-
import { ktCodegenClampControlSplitPercent, ktCodegenControlResultItems, ktCodegenControlUnclosedForDiagnostic, } from "./KtCodegenControlViewModel.js";
|
|
3
|
+
import { ktCodegenClampControlSplitPercent, ktCodegenControlResultBadges, ktCodegenControlResultItems, ktCodegenControlUnclosedForDiagnostic, } from "./KtCodegenControlViewModel.js";
|
|
4
4
|
export const KT_CODEGEN_CONTROL_PANEL_TAG_NAME = "kt-codegen-control-panel";
|
|
5
5
|
const STYLE = `
|
|
6
6
|
:host {
|
|
@@ -38,6 +38,14 @@ button:focus-visible, [tabindex]:focus-visible { outline: 1px solid var(--pnw-co
|
|
|
38
38
|
.pnw-codegen-heading { display: flex; min-width: 0; align-items: center; gap: 6px; overflow: hidden; }
|
|
39
39
|
.pnw-codegen-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
40
40
|
.pnw-codegen-id { flex: 0 0 auto; padding: 1px 4px; color: var(--pnw-codegen-muted); border: 1px solid var(--pnw-codegen-border); border-radius: 999px; font-size: 10px; font-weight: 500; }
|
|
41
|
+
.pnw-codegen-badges { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 4px; margin-left: auto; }
|
|
42
|
+
.pnw-codegen-badge { padding: 1px 5px; border: 1px solid currentColor; border-radius: 999px; font-size: 9px; font-weight: 600; line-height: 1.3; white-space: nowrap; }
|
|
43
|
+
.pnw-codegen-badge-info { color: var(--vscode-textLink-foreground, #2563eb); }
|
|
44
|
+
.pnw-codegen-badge-success { color: var(--vscode-testing-iconPassed, #16803c); }
|
|
45
|
+
.pnw-codegen-badge-warning { color: var(--vscode-editorWarning-foreground, #b45309); }
|
|
46
|
+
.pnw-codegen-badge-error { color: var(--vscode-errorForeground, #dc2626); }
|
|
47
|
+
.pnw-codegen-badge-muted { color: var(--pnw-codegen-muted); }
|
|
48
|
+
.pnw-codegen-row[aria-pressed="true"] .pnw-codegen-badge { color: inherit; opacity: .92; }
|
|
41
49
|
.pnw-codegen-meta { overflow: hidden; color: var(--pnw-codegen-muted); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
|
|
42
50
|
.pnw-codegen-meta.pnw-codegen-path { overflow-wrap: anywhere; white-space: normal; }
|
|
43
51
|
.pnw-codegen-splitter { position: relative; align-self: stretch; min-height: 100%; padding: 0; background: transparent; border: 0; cursor: col-resize; touch-action: none; }
|
|
@@ -187,6 +195,15 @@ export class KtCodegenControlPanel extends HTMLElement {
|
|
|
187
195
|
const location = this.diagnosticLocation(item.diagnostic);
|
|
188
196
|
meta.textContent = this.showResultPaths && location ? location : item.diagnostic.message;
|
|
189
197
|
}
|
|
198
|
+
const badges = document.createElement("span");
|
|
199
|
+
badges.className = "pnw-codegen-badges";
|
|
200
|
+
for (const badge of ktCodegenControlResultBadges(this.currentModel, item)) {
|
|
201
|
+
const node = document.createElement("span");
|
|
202
|
+
node.className = `pnw-codegen-badge pnw-codegen-badge-${badge.tone}`;
|
|
203
|
+
node.textContent = badge.label;
|
|
204
|
+
badges.append(node);
|
|
205
|
+
}
|
|
206
|
+
title.append(badges);
|
|
190
207
|
if (this.showResultPaths)
|
|
191
208
|
meta.classList.add("pnw-codegen-path");
|
|
192
209
|
row.append(title, meta);
|
|
@@ -274,7 +291,8 @@ export class KtCodegenControlPanel extends HTMLElement {
|
|
|
274
291
|
openButton(path, line) {
|
|
275
292
|
const button = document.createElement("button");
|
|
276
293
|
button.type = "button";
|
|
277
|
-
button.textContent = "
|
|
294
|
+
button.textContent = "查看源码";
|
|
295
|
+
button.title = `只读查看 ${path}:${line + 1}`;
|
|
278
296
|
button.onclick = () => this.dispatchEvent(new CustomEvent("kt-codegen-control-open", { bubbles: true, composed: true, detail: { path, line } }));
|
|
279
297
|
return button;
|
|
280
298
|
}
|