@phoenix-wing/kt-codegen 0.4.1 → 0.4.3

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 (77) hide show
  1. package/README.md +49 -5
  2. package/dist/KtCodegenApply.d.ts +9 -0
  3. package/dist/KtCodegenApply.d.ts.map +1 -1
  4. package/dist/KtCodegenApply.js +29 -2
  5. package/dist/KtCodegenApply.js.map +1 -1
  6. package/dist/KtCodegenMarker.d.ts +8 -3
  7. package/dist/KtCodegenMarker.d.ts.map +1 -1
  8. package/dist/KtCodegenMarker.js +80 -56
  9. package/dist/KtCodegenMarker.js.map +1 -1
  10. package/dist/KtCodegenRenderer.d.ts +1 -1
  11. package/dist/KtCodegenRenderer.d.ts.map +1 -1
  12. package/dist/KtCodegenRenderer.js +3 -1293
  13. package/dist/KtCodegenRenderer.js.map +1 -1
  14. package/dist/api/compatibility.d.ts +21 -0
  15. package/dist/api/compatibility.d.ts.map +1 -0
  16. package/dist/api/compatibility.js +43 -0
  17. package/dist/api/compatibility.js.map +1 -0
  18. package/dist/api/index.d.ts +1 -0
  19. package/dist/api/index.d.ts.map +1 -1
  20. package/dist/api/index.js +1 -0
  21. package/dist/api/index.js.map +1 -1
  22. package/dist/model/diagnostic.d.ts +18 -0
  23. package/dist/model/diagnostic.d.ts.map +1 -1
  24. package/dist/model/diagnostic.js.map +1 -1
  25. package/dist/renderer/caa-command-families.d.ts +4 -0
  26. package/dist/renderer/caa-command-families.d.ts.map +1 -0
  27. package/dist/renderer/caa-command-families.js +336 -0
  28. package/dist/renderer/caa-command-families.js.map +1 -0
  29. package/dist/renderer/caa-dialog-family.d.ts +5 -0
  30. package/dist/renderer/caa-dialog-family.d.ts.map +1 -0
  31. package/dist/renderer/caa-dialog-family.js +323 -0
  32. package/dist/renderer/caa-dialog-family.js.map +1 -0
  33. package/dist/renderer/caa-feature-families.d.ts +4 -0
  34. package/dist/renderer/caa-feature-families.d.ts.map +1 -0
  35. package/dist/renderer/caa-feature-families.js +250 -0
  36. package/dist/renderer/caa-feature-families.js.map +1 -0
  37. package/dist/renderer/caa-renderer.d.ts +6 -0
  38. package/dist/renderer/caa-renderer.d.ts.map +1 -0
  39. package/dist/renderer/caa-renderer.js +25 -0
  40. package/dist/renderer/caa-renderer.js.map +1 -0
  41. package/dist/renderer/cpp-parameter-family.d.ts +7 -0
  42. package/dist/renderer/cpp-parameter-family.d.ts.map +1 -0
  43. package/dist/renderer/cpp-parameter-family.js +77 -0
  44. package/dist/renderer/cpp-parameter-family.js.map +1 -0
  45. package/dist/renderer/dialog-support.d.ts +6 -0
  46. package/dist/renderer/dialog-support.d.ts.map +1 -0
  47. package/dist/renderer/dialog-support.js +16 -0
  48. package/dist/renderer/dialog-support.js.map +1 -0
  49. package/dist/renderer/family-registry.d.ts +28 -0
  50. package/dist/renderer/family-registry.d.ts.map +1 -0
  51. package/dist/renderer/family-registry.js +55 -0
  52. package/dist/renderer/family-registry.js.map +1 -0
  53. package/dist/renderer/legacy-compatibility.d.ts +16 -0
  54. package/dist/renderer/legacy-compatibility.d.ts.map +1 -0
  55. package/dist/renderer/legacy-compatibility.js +77 -0
  56. package/dist/renderer/legacy-compatibility.js.map +1 -0
  57. package/dist/renderer/qt-dialog-family.d.ts +7 -0
  58. package/dist/renderer/qt-dialog-family.d.ts.map +1 -0
  59. package/dist/renderer/qt-dialog-family.js +231 -0
  60. package/dist/renderer/qt-dialog-family.js.map +1 -0
  61. package/dist/table/KtCodegenTable.d.ts +24 -6
  62. package/dist/table/KtCodegenTable.d.ts.map +1 -1
  63. package/dist/table/KtCodegenTable.js +141 -203
  64. package/dist/table/KtCodegenTable.js.map +1 -1
  65. package/dist/table/KtCodegenTableStyle.d.ts +20 -0
  66. package/dist/table/KtCodegenTableStyle.d.ts.map +1 -0
  67. package/dist/table/KtCodegenTableStyle.js +207 -0
  68. package/dist/table/KtCodegenTableStyle.js.map +1 -0
  69. package/dist/table/KtCodegenTableViewModel.d.ts +45 -0
  70. package/dist/table/KtCodegenTableViewModel.d.ts.map +1 -0
  71. package/dist/table/KtCodegenTableViewModel.js +99 -0
  72. package/dist/table/KtCodegenTableViewModel.js.map +1 -0
  73. package/doc/KtCodegenTable/345/270/203/345/261/200/344/270/216/346/212/230/345/217/240/345/245/221/347/272/246.md +106 -0
  74. package/doc//350/207/252/345/212/250/344/273/243/347/240/201/346/240/207/350/256/260/346/211/253/346/217/217.md +8 -9
  75. package/package.json +4 -2
  76. package/tests/fixtures/contracts/apply-projection-v1.json +82 -0
  77. package/tests/fixtures/contracts/codegen-host-contract-v1.json +280 -0
@@ -0,0 +1,77 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /** 按旧 `CodeAppendNotes` 的0/1/2模式创建 Doxygen 注释。 */
3
+ export function ktCodegenRenderLegacyNotes(item, prefix, mode = 0, isParamSpecList) {
4
+ const lines = [`${prefix}/**`, `${prefix} * @brief ${item.name}`];
5
+ if (mode === 1) {
6
+ lines.push(`${prefix} * @param[in] value ${item.dataType}`, `${prefix} * @return HRESULT`);
7
+ }
8
+ else if (mode === 2) {
9
+ lines.push(`${prefix} * @return ${isParamSpecList?.(item) ? "HRESULT" : item.dataType}`);
10
+ }
11
+ if (item.author.length > 0)
12
+ lines.push(`${prefix} * @author ${item.author}`);
13
+ if (item.createDate.length > 0)
14
+ lines.push(`${prefix} * @date ${item.createDate}`);
15
+ if (item.notes.length > 0)
16
+ lines.push(`${prefix} * @note ${item.notes}`);
17
+ lines.push(`${prefix} * @id ${item.id}`, `${prefix} */`);
18
+ return lines;
19
+ }
20
+ /** 创建旧 Start 标记和 clang-format off 头部。 */
21
+ export function ktCodegenRenderLegacyStart(region) {
22
+ const prefix = region.start.linePrefix;
23
+ return [`${prefix}// ${region.start.text}`, "", `${prefix}// clang-format off`];
24
+ }
25
+ /** 创建标准旧 clang-format on 和 End 标记尾部。 */
26
+ export function ktCodegenRenderLegacyEnd(region) {
27
+ const prefix = region.start.linePrefix;
28
+ return ["", `${prefix}// clang-format on`, `${prefix}// ${region.end.text}`];
29
+ }
30
+ /** 从快照推断一个区域写回时应继续使用的换行符。 */
31
+ function ktCodegenResolveRegionEol(context, region) {
32
+ const file = context.snapshot.files.find((candidate) => candidate.path === region.path && candidate.fingerprint === region.sourceFingerprint);
33
+ if (!file)
34
+ return null;
35
+ const eol = file.eol === "crlf" || (file.eol === undefined && file.text.includes("\r\n"))
36
+ ? "\r\n"
37
+ : "\n";
38
+ const endTail = file.text.slice(region.end.markerEndOffset, region.end.lineEndOffset);
39
+ return { eol, hasFinalEol: endTail.includes("\n") || endTail.includes("\r") };
40
+ }
41
+ /** 把逻辑行组装为绑定安全区域的 artifact,或返回快照缺失诊断。 */
42
+ export function ktCodegenAppendRegionArtifact(context, region, items, lines, artifacts, diagnostics) {
43
+ const lineEnding = ktCodegenResolveRegionEol(context, region);
44
+ if (!lineEnding) {
45
+ diagnostics.push({
46
+ code: "renderer.source-snapshot-missing",
47
+ severity: "error",
48
+ message: `Marker region ${region.id} no longer has its source snapshot.`,
49
+ path: { source: "renderer", file: region.path, field: region.blockKey },
50
+ });
51
+ return;
52
+ }
53
+ const body = lines.join(lineEnding.eol);
54
+ artifacts.push({
55
+ id: `kt.codegen.artifact:${context.target}:${region.id}`,
56
+ regionId: region.id,
57
+ target: context.target,
58
+ blockKey: region.blockKey,
59
+ classId: region.classId,
60
+ content: lineEnding.hasFinalEol ? `${body}${lineEnding.eol}` : body,
61
+ sourceParameters: items.map((item) => item.paramString),
62
+ });
63
+ }
64
+ /** 兼容 family 统一产生废弃旧块告警,模板模块无需重复协议文案。 */
65
+ export function ktCodegenLegacyDeprecatedDiagnostic(region) {
66
+ return {
67
+ code: "renderer.legacy-deprecated-block",
68
+ severity: "warning",
69
+ message: `${region.blockKey} is retained for compatibility; its archived VB method is marked discarded.`,
70
+ path: {
71
+ source: "renderer",
72
+ file: region.path,
73
+ field: region.blockKey,
74
+ },
75
+ };
76
+ }
77
+ //# sourceMappingURL=legacy-compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-compatibility.js","sourceRoot":"","sources":["../../src/renderer/legacy-compatibility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { KtCodegenQtAlgorithms, KtCodegenRendererContext, KtCodegenRendererResult } from "../KtCodegenRenderer.js";
2
+ import type { KtCodegenRendererFamily } from "./family-registry.js";
3
+ export declare const KT_CODEGEN_QT_BLOCKS: readonly ["QT UPDATE DIALOG", "QT UPDATE INFORS"];
4
+ export declare const KT_CODEGEN_QT_FAMILIES: readonly [KtCodegenRendererFamily<KtCodegenQtAlgorithms>];
5
+ /** 通过 block family 注册表生成 Qt Dialog/Parameter 双向更新目标。 */
6
+ export declare function ktCodegenRenderQt(context: KtCodegenRendererContext, algorithms: KtCodegenQtAlgorithms): KtCodegenRendererResult;
7
+ //# sourceMappingURL=qt-dialog-family.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qt-dialog-family.d.ts","sourceRoot":"","sources":["../../src/renderer/qt-dialog-family.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAOpE,eAAO,MAAM,oBAAoB,mDAGgB,CAAC;AAqQlD,eAAO,MAAM,sBAAsB,2DAE2C,CAAC;AAE/E,wDAAwD;AACxD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,EACjC,UAAU,EAAE,qBAAqB,GAChC,uBAAuB,CAKzB"}
@@ -0,0 +1,231 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { ktCodegenDialogParamName, ktCodegenLegacyDialogListIndex, } from "./dialog-support.js";
3
+ import { ktCodegenRenderRegisteredFamilies } from "./family-registry.js";
4
+ import { ktCodegenRenderLegacyEnd, ktCodegenRenderLegacyStart, } from "./legacy-compatibility.js";
5
+ export const KT_CODEGEN_QT_BLOCKS = [
6
+ "QT UPDATE DIALOG",
7
+ "QT UPDATE INFORS",
8
+ ];
9
+ /** 按旧 `CreateQTUpdateDialog` 规则把共享参数写入 Qt 控件。 */
10
+ function ktCodegenRenderQtUpdateDialogLines(region, items, isPointOrVector3DType) {
11
+ const prefix = region.start.linePrefix;
12
+ const lines = ktCodegenRenderLegacyStart(region);
13
+ for (const item of items) {
14
+ lines.push("");
15
+ const dialogPointer = item.isParamDlg ? "dialogMore->" : "ui->";
16
+ const param = `parameter->${item.paramString}`;
17
+ const name = ktCodegenDialogParamName(item);
18
+ let notes = `// ${item.id}, ${item.paramString}, ${item.notes}`;
19
+ const generated = [];
20
+ if (item.componentCount <= 0) {
21
+ notes += `,NO ACTION, ${item.component},${item.componentCount}`;
22
+ }
23
+ else if (item.component === "QListWidget") {
24
+ generated.push(`${prefix}KT_AUTO_FIELD_SET_LINE(${dialogPointer}listWidget${name}, ${param});`);
25
+ }
26
+ else if (item.component === "QDoubleSpinBox" || item.component === "QSpinBox") {
27
+ const componentStem = item.component === "QDoubleSpinBox" ? "doubleSpinBox" : "spinBox";
28
+ const component = `${dialogPointer}${componentStem}${name}`;
29
+ if (isPointOrVector3DType(item.dataType)) {
30
+ const unitFactor = item.unit === "mm" ? " * 0.001" : "";
31
+ generated.push(`${prefix}${component}X->setValue(${param}.GetX()${unitFactor});`, `${prefix}${component}Y->setValue(${param}.GetY()${unitFactor});`, `${prefix}${component}Z->setValue(${param}.GetZ()${unitFactor});`);
32
+ }
33
+ else if (item.componentCount === 1) {
34
+ generated.push(`${prefix}${component}->setValue(${param});`);
35
+ }
36
+ else {
37
+ const indexSub = ktCodegenLegacyDialogListIndex(item.dataType, item.component === "QSpinBox");
38
+ if (indexSub === null) {
39
+ notes += "Data type is not suitable for auto code.";
40
+ }
41
+ else {
42
+ const unitFactor = item.unit === "mm" ? " * 0.001" : "";
43
+ for (let index = 0; index < item.componentCount; index += 1) {
44
+ generated.push(`${prefix}${component}${index}->setValue(${param}[${index + indexSub}]${unitFactor});`);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ else if (item.component.startsWith("QCheckBox")) {
50
+ const component = `${dialogPointer}checkBox${name}`;
51
+ if (item.componentCount === 1) {
52
+ generated.push(`${prefix}${component}->setChecked(${param});`);
53
+ }
54
+ else {
55
+ for (let index = 0; index < item.componentCount; index += 1) {
56
+ generated.push(`${prefix}${component}${index}->setChecked( ${param} & (1<<${index}));`);
57
+ }
58
+ }
59
+ }
60
+ else if (item.component.startsWith("QRadioButton")) {
61
+ const component = `${dialogPointer}radioButton${name}`;
62
+ const count = item.componentCount === 1 ? 2 : item.componentCount;
63
+ const lastIndex = count - 1;
64
+ generated.push(`${prefix}if (${param}>${lastIndex} || ${param}<0) ${param}=0;//Correct`);
65
+ for (let index = 0; index < count; index += 1) {
66
+ generated.push(`${prefix}${component}${index}->setChecked( ${param}==${index});`);
67
+ }
68
+ }
69
+ else if (item.component.startsWith("QComboBox")) {
70
+ const component = `${dialogPointer}comboBox${name}`;
71
+ if (item.dataType === "int" ||
72
+ item.dataType === "short" ||
73
+ item.dataType === "uint32_t") {
74
+ generated.push(`${prefix}${component}->setCurrentIndex(${param});`);
75
+ }
76
+ else if (item.dataType === "QString") {
77
+ generated.push(`${prefix}${component}->setEditText(${param});`);
78
+ }
79
+ else {
80
+ // 原 VB 使用普通字符串而非插值字符串,故输出中保留字面占位符。
81
+ generated.push(`${prefix}${component}->setEditText(QString::fromLocal8Bit({strParamSame}.str()));`);
82
+ }
83
+ }
84
+ else if (item.component === "QLineEdit") {
85
+ const component = `${dialogPointer}lineEdit${name}`;
86
+ const value = item.dataType === "KtString"
87
+ ? ` QString::fromLocal8Bit(${param}.str()) `
88
+ : param;
89
+ if (item.componentCount === 1) {
90
+ generated.push(`${prefix}${component}->setText( ${value});`);
91
+ }
92
+ else {
93
+ for (let index = 0; index < item.componentCount; index += 1) {
94
+ generated.push(`${prefix}${component}${index}->setText(${value}[${index + 1}]);`);
95
+ }
96
+ }
97
+ }
98
+ else {
99
+ const supportNote = item.component.length === 0 || item.component === "QPushButton"
100
+ ? ""
101
+ : " (Not Support)";
102
+ notes += `,NO ACTION, ${item.component}${supportNote},${item.componentCount}`;
103
+ }
104
+ lines.push(`${prefix}${notes}`, ...generated);
105
+ }
106
+ return [...lines, ...ktCodegenRenderLegacyEnd(region)];
107
+ }
108
+ /** 按旧 `CreateQTUpdateInfors` 规则把 Qt 控件值写回共享参数。 */
109
+ function ktCodegenRenderQtUpdateInforsLines(region, items, isPointOrVector3DType) {
110
+ const prefix = region.start.linePrefix;
111
+ const lines = ktCodegenRenderLegacyStart(region);
112
+ for (const item of items) {
113
+ lines.push("");
114
+ const dialogPointer = item.isParamDlg ? "dialogMore->" : "ui->";
115
+ const param = `parameter->${item.paramString}`;
116
+ const name = ktCodegenDialogParamName(item);
117
+ let notes = `// ${item.id}, ${item.paramString}, ${item.notes}`;
118
+ const generated = [];
119
+ const convertToInt = item.tcKind === "tk_integer" && item.dataType.toLowerCase() !== "int";
120
+ if (item.componentCount <= 0) {
121
+ notes += `,NO ACTION, ${item.component},${item.componentCount}`;
122
+ }
123
+ else if (item.component === "QDoubleSpinBox" || item.component === "QSpinBox") {
124
+ const componentStem = item.component === "QDoubleSpinBox" ? "doubleSpinBox" : "spinBox";
125
+ const component = `${dialogPointer}${componentStem}${name}`;
126
+ if (isPointOrVector3DType(item.dataType)) {
127
+ const unitFactor = item.unit === "mm" ? " * 1000.0" : "";
128
+ generated.push(`${prefix}${param}.SetX(${component}X->value()${unitFactor});`, `${prefix}${param}.SetY(${component}Y->value()${unitFactor});`, `${prefix}${param}.SetZ(${component}Z->value()${unitFactor});`);
129
+ }
130
+ else if (item.componentCount === 1) {
131
+ const value = `${component}->value()`;
132
+ if (item.component === "QDoubleSpinBox" && item.dataType === "int") {
133
+ generated.push(`${prefix}${param} = Kt::round(${value}); //round to int`);
134
+ }
135
+ else {
136
+ generated.push(`${prefix}${param} = ${value};`);
137
+ }
138
+ }
139
+ else {
140
+ const indexSub = ktCodegenLegacyDialogListIndex(item.dataType, true);
141
+ if (indexSub === null) {
142
+ notes += "Data type is not suitable for auto code.";
143
+ }
144
+ else {
145
+ for (let index = 0; index < item.componentCount; index += 1) {
146
+ const value = `${component}${index}->value()`;
147
+ const rounded = item.component === "QDoubleSpinBox" && item.dataType === "int"
148
+ ? `Kt::round(${value})`
149
+ : value;
150
+ generated.push(`${prefix}${param}[${index + indexSub}] = ${rounded};${rounded !== value ? " //round to int" : ""}`);
151
+ }
152
+ }
153
+ }
154
+ }
155
+ else if (item.component.startsWith("QCheckBox")) {
156
+ const component = `${dialogPointer}checkBox${name}`;
157
+ if (item.componentCount === 1) {
158
+ generated.push(`${prefix}${param} = ${component}->isChecked();`);
159
+ }
160
+ else {
161
+ generated.push(`${prefix}${param}=0;`);
162
+ for (let index = 0; index < item.componentCount; index += 1) {
163
+ generated.push(`${prefix}if (${component}${index}->isChecked()) { ${param} = ${param} | (1<<${index}); }`);
164
+ }
165
+ }
166
+ }
167
+ else if (item.component.startsWith("QRadioButton")) {
168
+ const component = `${dialogPointer}radioButton${name}`;
169
+ const count = item.componentCount === 1 ? 2 : item.componentCount;
170
+ generated.push(`${prefix}${param} = 0;//默认值0`);
171
+ for (let index = 0; index < count; index += 1) {
172
+ generated.push(`${prefix}if (${component}${index}->isChecked())`, `${prefix} ${param} = ${convertToInt ? `(${item.dataType})` : ""}${index};${convertToInt ? "}" : ""}`);
173
+ }
174
+ }
175
+ else if (item.component.startsWith("QComboBox")) {
176
+ const component = `${dialogPointer}comboBox${name}`;
177
+ if (item.dataType === "int" ||
178
+ item.dataType === "short" ||
179
+ item.dataType === "uint32_t") {
180
+ generated.push(`${prefix}${param} = ${component}->currentIndex();`);
181
+ }
182
+ else if (item.dataType === "QString") {
183
+ generated.push(`${prefix}${param} = ${component}->currentText();`);
184
+ }
185
+ else {
186
+ generated.push(`${prefix}${param} = ${component}->currentText().toLocal8Bit().constData();`);
187
+ }
188
+ }
189
+ else if (item.component === "QLineEdit") {
190
+ const component = `${dialogPointer}lineEdit${name}`;
191
+ const conversion = item.dataType === "KtString" ? ".toLocal8Bit().constData()" : "";
192
+ if (item.componentCount === 1) {
193
+ generated.push(`${prefix}${param} = ${component}->text()${conversion};`);
194
+ }
195
+ else {
196
+ for (let index = 0; index < item.componentCount; index += 1) {
197
+ generated.push(`${prefix}${param}[${index + 1}] = ${component}${index}->text()${conversion};`);
198
+ }
199
+ }
200
+ }
201
+ else {
202
+ notes += `,NO ACTION, ${item.component} (Not Support),${item.componentCount}`;
203
+ }
204
+ lines.push(`${prefix}${notes}`, ...generated);
205
+ }
206
+ return [...lines, ...ktCodegenRenderLegacyEnd(region)];
207
+ }
208
+ const qtDialogFamily = {
209
+ id: "qt.dialog",
210
+ blockKeys: KT_CODEGEN_QT_BLOCKS,
211
+ renderRegion(context, region, algorithms) {
212
+ const items = context.param.items.filter((item) => item.nameSuffix === region.nameSuffix && item.id >= 1);
213
+ return {
214
+ items,
215
+ lines: region.blockKey === "QT UPDATE DIALOG"
216
+ ? ktCodegenRenderQtUpdateDialogLines(region, items, algorithms.isPointOrVector3DType)
217
+ : ktCodegenRenderQtUpdateInforsLines(region, items, algorithms.isPointOrVector3DType),
218
+ };
219
+ },
220
+ };
221
+ export const KT_CODEGEN_QT_FAMILIES = [
222
+ qtDialogFamily,
223
+ ];
224
+ /** 通过 block family 注册表生成 Qt Dialog/Parameter 双向更新目标。 */
225
+ export function ktCodegenRenderQt(context, algorithms) {
226
+ return ktCodegenRenderRegisteredFamilies(context, algorithms, KT_CODEGEN_QT_FAMILIES, {
227
+ supportedTargets: ["qt.dialog", "qt.parameter"],
228
+ noFamilyMessage: (target) => `${target} has no registered Qt block family.`,
229
+ });
230
+ }
231
+ //# sourceMappingURL=qt-dialog-family.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qt-dialog-family.js","sourceRoot":"","sources":["../../src/renderer/qt-dialog-family.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,9 @@
1
1
  import { type KtCodegenTableColumn } from "../KtCodegenTableColumns.js";
2
2
  import type { KtCodegenTableData } from "../KtCodegenTableData.js";
3
+ import { type KtCodegenTableLayout, type KtCodegenTableOptions } from "./KtCodegenTableViewModel.js";
4
+ export type { KtCodegenTableLayout, KtCodegenTableOptions, } from "./KtCodegenTableViewModel.js";
3
5
  /** 默认 Web Component 标签名。 */
4
6
  export declare const KT_CODEGEN_TABLE_TAG_NAME = "kt-codegen-table";
5
- /** 表格 Combo 候选项;未知当前值始终会额外保留。 */
6
- export interface KtCodegenTableOptions {
7
- readonly tcKind: readonly string[];
8
- readonly catAttrInOut: readonly string[];
9
- readonly component: readonly string[];
10
- }
11
7
  /** 表格可替换的列和候选项配置。 */
12
8
  export interface KtCodegenTableConfiguration {
13
9
  readonly columns: readonly KtCodegenTableColumn[];
@@ -24,6 +20,10 @@ export interface KtCodegenTableChangeDetail {
24
20
  readonly documentRevision: number;
25
21
  readonly itemCount: number;
26
22
  }
23
+ /** 用户通过 Header disclosure button 改变折叠状态。 */
24
+ export interface KtCodegenTableCollapseChangeDetail {
25
+ readonly collapsed: boolean;
26
+ }
27
27
  export type KtCodegenTableStatus = "idle" | "saving" | "saved" | "error";
28
28
  /**
29
29
  * 独立的 Codegen 17列表格 Web Component。
@@ -32,6 +32,7 @@ export type KtCodegenTableStatus = "idle" | "saving" | "saved" | "error";
32
32
  * 交换整表,只在 clean/dirty 状态跃迁时接收 kt-codegen-table-dirty-change。
33
33
  */
34
34
  export declare class KtCodegenTable extends HTMLElement {
35
+ static get observedAttributes(): readonly string[];
35
36
  private readonly param;
36
37
  private readonly core;
37
38
  private readonly root;
@@ -40,6 +41,16 @@ export declare class KtCodegenTable extends HTMLElement {
40
41
  private options;
41
42
  constructor();
42
43
  connectedCallback(): void;
44
+ attributeChangedCallback(name: string, _oldValue: string | null, newValue: string | null): void;
45
+ /** contained 为组件内双向滚动;page 为页面自然高度和表格横向滚动。 */
46
+ get layout(): KtCodegenTableLayout;
47
+ set layout(value: KtCodegenTableLayout);
48
+ /** 是否允许用户通过 Header button 展开/收起。 */
49
+ get collapsible(): boolean;
50
+ set collapsible(value: boolean);
51
+ /** 宿主可静默控制的折叠偏好;只有 collapsible 同时存在时才隐藏内容。 */
52
+ get collapsed(): boolean;
53
+ set collapsed(value: boolean);
43
54
  configure(configuration: Partial<KtCodegenTableConfiguration>): void;
44
55
  setData(data: KtCodegenTableData): void;
45
56
  getData(): KtCodegenTableData;
@@ -55,6 +66,8 @@ export declare class KtCodegenTable extends HTMLElement {
55
66
  private changeCell;
56
67
  private selectRow;
57
68
  private handleAction;
69
+ private handleCollapseToggle;
70
+ private syncDisclosure;
58
71
  private syncSelection;
59
72
  private syncActions;
60
73
  /** 轻量复现 Qt resizeColumnsToContents;只改变组件布局,不修改表格数据。 */
@@ -71,5 +84,10 @@ declare global {
71
84
  interface HTMLElementTagNameMap {
72
85
  "kt-codegen-table": KtCodegenTable;
73
86
  }
87
+ interface HTMLElementEventMap {
88
+ "kt-codegen-table-change": CustomEvent<KtCodegenTableChangeDetail>;
89
+ "kt-codegen-table-collapse-change": CustomEvent<KtCodegenTableCollapseChangeDetail>;
90
+ "kt-codegen-table-dirty-change": CustomEvent<KtCodegenTableDirtyChangeDetail>;
91
+ }
74
92
  }
75
93
  //# sourceMappingURL=KtCodegenTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KtCodegenTable.d.ts","sourceRoot":"","sources":["../../src/table/KtCodegenTable.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,4BAA4B;AAC5B,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAE5D,iCAAiC;AACjC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,qBAAqB;AACrB,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;CACzC;AAED,6BAA6B;AAC7B,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,qCAAqC;AACrC,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAqKzE;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsC;IAC3D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8C;IAC3E,OAAO,CAAC,OAAO,CAA6D;IAC5E,OAAO,CAAC,OAAO,CAIb;;IAQF,iBAAiB,IAAI,IAAI;IAIzB,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAAG,IAAI;IAepE,OAAO,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAMvC,OAAO,IAAI,kBAAkB;IAI7B,cAAc,CAAC,gBAAgB,SAA6B,GAAG,IAAI;IAOnE,kBAAkB,IAAI,IAAI;IAO1B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO3B,SAAS,CAAC,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAO9D,OAAO,CAAC,KAAK;IAoDb,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,UAAU;IAiClB,OAAO,CAAC,UAAU;IAoElB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,WAAW;IAYnB,uDAAuD;IACvD,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,UAAU;CAanB;AAED,4CAA4C;AAC5C,wBAAgB,2BAA2B,CACzC,OAAO,SAA4B,GAClC,OAAO,cAAc,CAKvB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
1
+ {"version":3,"file":"KtCodegenTable.d.ts","sourceRoot":"","sources":["../../src/table/KtCodegenTable.ts"],"names":[],"mappings":"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"}