@kurot/cli 1.2.0 → 2.0.0

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 (154) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +115 -303
  3. package/dist/core/components/discover-components.d.ts.map +1 -1
  4. package/dist/core/components/discover-components.js +12 -11
  5. package/dist/core/components/discover-components.js.map +1 -1
  6. package/dist/core/config.d.ts +8 -16
  7. package/dist/core/config.d.ts.map +1 -1
  8. package/dist/core/config.js +12 -4
  9. package/dist/core/config.js.map +1 -1
  10. package/dist/core/dev-server.d.ts +1 -1
  11. package/dist/core/dev-server.js +13 -13
  12. package/dist/core/dev-server.js.map +1 -1
  13. package/dist/core/diagnostics/codes.d.ts +3 -6
  14. package/dist/core/diagnostics/codes.d.ts.map +1 -1
  15. package/dist/core/diagnostics/codes.js +4 -10
  16. package/dist/core/diagnostics/codes.js.map +1 -1
  17. package/dist/core/diagnostics/output.d.ts +1 -1
  18. package/dist/core/diagnostics/output.d.ts.map +1 -1
  19. package/dist/core/{exml → kui}/ast.d.ts +17 -107
  20. package/dist/core/kui/ast.d.ts.map +1 -0
  21. package/dist/core/kui/ast.js +8 -0
  22. package/dist/core/{exml → kui}/ast.js.map +1 -1
  23. package/dist/core/kui/codegen.d.ts.map +1 -0
  24. package/dist/core/{exml → kui}/codegen.js +17 -176
  25. package/dist/core/kui/codegen.js.map +1 -0
  26. package/dist/core/kui/index.d.ts +29 -0
  27. package/dist/core/kui/index.d.ts.map +1 -0
  28. package/dist/core/kui/index.js +23 -0
  29. package/dist/core/kui/index.js.map +1 -0
  30. package/dist/core/{exml/exml-diagnostics.d.ts → kui/kui-diagnostics.d.ts} +2 -2
  31. package/dist/core/kui/kui-diagnostics.d.ts.map +1 -0
  32. package/dist/core/{exml/exml-diagnostics.js → kui/kui-diagnostics.js} +4 -4
  33. package/dist/core/kui/kui-diagnostics.js.map +1 -0
  34. package/dist/core/kui/kui-parser.d.ts +7 -0
  35. package/dist/core/kui/kui-parser.d.ts.map +1 -0
  36. package/dist/core/kui/kui-parser.js +157 -0
  37. package/dist/core/kui/kui-parser.js.map +1 -0
  38. package/dist/core/{exml → kui}/registry.d.ts +3 -26
  39. package/dist/core/kui/registry.d.ts.map +1 -0
  40. package/dist/core/{exml → kui}/registry.js +12 -43
  41. package/dist/core/kui/registry.js.map +1 -0
  42. package/dist/core/{exml → kui}/skin-module-builder.d.ts +6 -6
  43. package/dist/core/kui/skin-module-builder.d.ts.map +1 -0
  44. package/dist/core/{exml → kui}/skin-module-builder.js +7 -6
  45. package/dist/core/kui/skin-module-builder.js.map +1 -0
  46. package/dist/core/{exml → kui}/skin-parts-declaration.d.ts +1 -1
  47. package/dist/core/kui/skin-parts-declaration.d.ts.map +1 -0
  48. package/dist/core/kui/skin-parts-declaration.js +182 -0
  49. package/dist/core/kui/skin-parts-declaration.js.map +1 -0
  50. package/dist/core/kui/source-location.d.ts.map +1 -0
  51. package/dist/core/kui/source-location.js.map +1 -0
  52. package/dist/core/namespace-external-plugin.d.ts +1 -1
  53. package/dist/core/namespace-external-plugin.js +1 -1
  54. package/dist/core/plugins/compile-custom-namespaces.d.ts +3 -3
  55. package/dist/core/plugins/compile-custom-namespaces.js +3 -3
  56. package/dist/core/plugins/compile-kui.d.ts +6 -0
  57. package/dist/core/plugins/compile-kui.d.ts.map +1 -0
  58. package/dist/core/plugins/compile-kui.js +143 -0
  59. package/dist/core/plugins/compile-kui.js.map +1 -0
  60. package/dist/core/plugins/copy-assets.d.ts +3 -3
  61. package/dist/core/plugins/copy-assets.d.ts.map +1 -1
  62. package/dist/core/plugins/copy-assets.js +7 -6
  63. package/dist/core/plugins/copy-assets.js.map +1 -1
  64. package/dist/core/plugins/index.d.ts +1 -1
  65. package/dist/core/plugins/index.d.ts.map +1 -1
  66. package/dist/core/plugins/index.js +3 -3
  67. package/dist/core/plugins/index.js.map +1 -1
  68. package/dist/core/project.d.ts +14 -10
  69. package/dist/core/project.d.ts.map +1 -1
  70. package/dist/core/project.js +11 -7
  71. package/dist/core/project.js.map +1 -1
  72. package/dist/core/template.js +1 -1
  73. package/dist/core/template.js.map +1 -1
  74. package/dist/define.d.ts +1 -1
  75. package/dist/define.d.ts.map +1 -1
  76. package/package.json +5 -3
  77. package/templates/game/kurot.config.ts +3 -3
  78. package/templates/game/resource/ui/skins/ButtonSkin.kui.xml +24 -0
  79. package/templates/game/resource/ui/skins/CheckBoxSkin.kui.xml +45 -0
  80. package/templates/game/resource/ui/skins/ComboBoxSkin.kui.xml +32 -0
  81. package/templates/game/resource/ui/skins/GroupSkin.kui.xml +11 -0
  82. package/templates/game/resource/ui/skins/HScrollBarSkin.kui.xml +11 -0
  83. package/templates/game/resource/ui/skins/HSliderSkin.kui.xml +13 -0
  84. package/templates/game/resource/ui/skins/ImageSkin.kui.xml +11 -0
  85. package/templates/game/resource/ui/skins/ItemRendererSkin.kui.xml +22 -0
  86. package/templates/game/resource/ui/skins/LabelSkin.kui.xml +11 -0
  87. package/templates/game/resource/ui/skins/ListSkin.kui.xml +15 -0
  88. package/templates/game/resource/ui/skins/PanelSkin.kui.xml +18 -0
  89. package/templates/game/resource/ui/skins/ProgressBarSkin.kui.xml +14 -0
  90. package/templates/game/resource/ui/skins/RadioButtonSkin.kui.xml +45 -0
  91. package/templates/game/resource/ui/skins/ScrollerSkin.kui.xml +13 -0
  92. package/templates/game/resource/ui/skins/TabBarSkin.kui.xml +12 -0
  93. package/templates/game/resource/ui/skins/TextInputSkin.kui.xml +28 -0
  94. package/templates/game/resource/ui/skins/ToggleButtonSkin.kui.xml +34 -0
  95. package/templates/game/resource/ui/skins/ToggleSwitchSkin.kui.xml +29 -0
  96. package/templates/game/resource/ui/skins/VScrollBarSkin.kui.xml +11 -0
  97. package/templates/game/resource/ui/skins/VSliderSkin.kui.xml +13 -0
  98. package/templates/game/resource/ui/skins/ViewStackSkin.kui.xml +11 -0
  99. package/dist/core/exml/ast.d.ts.map +0 -1
  100. package/dist/core/exml/ast.js +0 -8
  101. package/dist/core/exml/codegen.d.ts.map +0 -1
  102. package/dist/core/exml/codegen.js.map +0 -1
  103. package/dist/core/exml/exml-diagnostics.d.ts.map +0 -1
  104. package/dist/core/exml/exml-diagnostics.js.map +0 -1
  105. package/dist/core/exml/exml-parser.d.ts +0 -27
  106. package/dist/core/exml/exml-parser.d.ts.map +0 -1
  107. package/dist/core/exml/exml-parser.js +0 -380
  108. package/dist/core/exml/exml-parser.js.map +0 -1
  109. package/dist/core/exml/index.d.ts +0 -54
  110. package/dist/core/exml/index.d.ts.map +0 -1
  111. package/dist/core/exml/index.js +0 -51
  112. package/dist/core/exml/index.js.map +0 -1
  113. package/dist/core/exml/registry.d.ts.map +0 -1
  114. package/dist/core/exml/registry.js.map +0 -1
  115. package/dist/core/exml/skin-module-builder.d.ts.map +0 -1
  116. package/dist/core/exml/skin-module-builder.js.map +0 -1
  117. package/dist/core/exml/skin-parts-declaration.d.ts.map +0 -1
  118. package/dist/core/exml/skin-parts-declaration.js +0 -82
  119. package/dist/core/exml/skin-parts-declaration.js.map +0 -1
  120. package/dist/core/exml/source-location.d.ts.map +0 -1
  121. package/dist/core/exml/source-location.js.map +0 -1
  122. package/dist/core/exml/xml-parser.d.ts +0 -86
  123. package/dist/core/exml/xml-parser.d.ts.map +0 -1
  124. package/dist/core/exml/xml-parser.js +0 -196
  125. package/dist/core/exml/xml-parser.js.map +0 -1
  126. package/dist/core/plugins/compile-exml.d.ts +0 -14
  127. package/dist/core/plugins/compile-exml.d.ts.map +0 -1
  128. package/dist/core/plugins/compile-exml.js +0 -256
  129. package/dist/core/plugins/compile-exml.js.map +0 -1
  130. package/templates/game/resource/default.thm.json +0 -19
  131. package/templates/game/resource/skins/eui/ButtonSkin.exml +0 -16
  132. package/templates/game/resource/skins/eui/CheckBoxSkin.exml +0 -18
  133. package/templates/game/resource/skins/eui/ComboBoxSkin.exml +0 -31
  134. package/templates/game/resource/skins/eui/GroupSkin.exml +0 -4
  135. package/templates/game/resource/skins/eui/HScrollBarSkin.exml +0 -6
  136. package/templates/game/resource/skins/eui/HSliderSkin.exml +0 -7
  137. package/templates/game/resource/skins/eui/ImageSkin.exml +0 -4
  138. package/templates/game/resource/skins/eui/ItemRendererSkin.exml +0 -15
  139. package/templates/game/resource/skins/eui/LabelSkin.exml +0 -7
  140. package/templates/game/resource/skins/eui/ListSkin.exml +0 -11
  141. package/templates/game/resource/skins/eui/PanelSkin.exml +0 -15
  142. package/templates/game/resource/skins/eui/ProgressBarSkin.exml +0 -11
  143. package/templates/game/resource/skins/eui/RadioButtonSkin.exml +0 -18
  144. package/templates/game/resource/skins/eui/ScrollerSkin.exml +0 -8
  145. package/templates/game/resource/skins/eui/TabBarSkin.exml +0 -6
  146. package/templates/game/resource/skins/eui/TextInputSkin.exml +0 -22
  147. package/templates/game/resource/skins/eui/ToggleButtonSkin.exml +0 -21
  148. package/templates/game/resource/skins/eui/ToggleSwitchSkin.exml +0 -15
  149. package/templates/game/resource/skins/eui/VScrollBarSkin.exml +0 -6
  150. package/templates/game/resource/skins/eui/VSliderSkin.exml +0 -7
  151. package/templates/game/resource/skins/eui/ViewStackSkin.exml +0 -4
  152. /package/dist/core/{exml → kui}/codegen.d.ts +0 -0
  153. /package/dist/core/{exml → kui}/source-location.d.ts +0 -0
  154. /package/dist/core/{exml → kui}/source-location.js +0 -0
@@ -34,7 +34,7 @@ class CodeGenerator {
34
34
  }
35
35
  // ── Private methods ───────────────────────────────────────────────
36
36
  emitHeader() {
37
- this.line(`// Generated from ${this._ir.className || 'Skin'}.exml`);
37
+ this.line(`// Generated from ${this._ir.className || 'Skin'}.kui.xml`);
38
38
  this.line('// @generated — do not edit manually');
39
39
  this.line('');
40
40
  }
@@ -46,15 +46,8 @@ class CodeGenerator {
46
46
  }
47
47
  moduleImports.get(modulePath).add(className);
48
48
  }
49
- const hasBindings = this.hasBindingsInTree(this._ir.children);
50
- if (hasBindings) {
51
- if (!moduleImports.has('@kurot/ui')) {
52
- moduleImports.set('@kurot/ui', new Set());
53
- }
54
- moduleImports.get('@kurot/ui').add('Binding');
55
- }
56
- // Egret encodes Rectangle-valued properties such as scale9Grid as a
57
- // comma-separated EXML attribute (for example "1,3,8,8").
49
+ // KUI keeps rectangle-valued properties such as scale9Grid in the compact
50
+ // comma-separated form used by the runtime compiler.
58
51
  if (this.hasPropertyInTree('scale9Grid')) {
59
52
  if (!moduleImports.has('@kurot/core')) {
60
53
  moduleImports.set('@kurot/core', new Set());
@@ -68,11 +61,7 @@ class CodeGenerator {
68
61
  const uiImports = moduleImports.get('@kurot/ui');
69
62
  uiImports.add('State');
70
63
  uiImports.add('SetProperty');
71
- for (const state of this._ir.states) {
72
- for (const override of state.overrides) {
73
- uiImports.add(override.type);
74
- }
75
- }
64
+ uiImports.add('SetProperty');
76
65
  }
77
66
  for (const [modulePath, classes] of moduleImports) {
78
67
  const names = [...classes].sort().join(', ');
@@ -95,14 +84,11 @@ class CodeGenerator {
95
84
  this.line(`skin.height = ${this._ir.height};`);
96
85
  }
97
86
  for (const prop of this._ir.properties) {
98
- if (!prop.state) {
99
- this.emitPropertyAssignment('skin', prop.name, prop.value);
100
- }
87
+ this.emitPropertyAssignment('skin', prop.name, prop.value);
101
88
  }
102
89
  this.emitNodeDeclarations(this._ir.children);
103
- const defaultChildren = this._ir.children.filter(n => n.includeIn.length === 0 && n.excludeFrom.length === 0);
104
- if (defaultChildren.length > 0) {
105
- const childVars = defaultChildren.map(n => n.varName).join(', ');
90
+ if (this._ir.children.length > 0) {
91
+ const childVars = this._ir.children.map(n => n.varName).join(', ');
106
92
  this.line(`skin.elementsContent = [${childVars}];`);
107
93
  }
108
94
  for (const decl of this._ir.declarations) {
@@ -120,17 +106,16 @@ class CodeGenerator {
120
106
  this.emitNodeProperties(node);
121
107
  this.emitNodePropertyChildren(node);
122
108
  this.emitNodeDeclarations(node.children);
123
- const defaultPropChildren = node.children.filter(c => c.includeIn.length === 0 && c.excludeFrom.length === 0);
124
- if (defaultPropChildren.length > 0) {
109
+ if (node.children.length > 0) {
125
110
  const info = lookupComponent(node.className);
126
111
  const defaultProp = info?.defaultProperty ?? 'elementsContent';
127
112
  const isArray = info?.isArray !== false;
128
- const childVars = defaultPropChildren.map(c => c.varName).join(', ');
113
+ const childVars = node.children.map(c => c.varName).join(', ');
129
114
  if (isArray) {
130
115
  this.line(`${node.varName}.${defaultProp} = [${childVars}];`);
131
116
  }
132
117
  else {
133
- this.line(`${node.varName}.${defaultProp} = ${defaultPropChildren[0].varName};`);
118
+ this.line(`${node.varName}.${defaultProp} = ${node.children[0].varName};`);
134
119
  }
135
120
  }
136
121
  }
@@ -140,19 +125,9 @@ class CodeGenerator {
140
125
  if (node.id) {
141
126
  this.line(`skin.${node.id} = ${node.varName};`);
142
127
  }
143
- else {
144
- // Anonymous state targets still need a stable key for `skin.getPart()`.
145
- const hasStateProps = node.properties.some(p => p.state);
146
- if (hasStateProps) {
147
- this.line(`skin.${node.varName} = ${node.varName};`);
148
- }
149
- }
150
128
  }
151
129
  emitNodeProperties(node) {
152
130
  for (const prop of node.properties) {
153
- if (prop.state) {
154
- continue;
155
- }
156
131
  this.emitPropertyAssignment(node.varName, prop.name, prop.value);
157
132
  }
158
133
  }
@@ -168,46 +143,14 @@ class CodeGenerator {
168
143
  return;
169
144
  }
170
145
  }
171
- if (value.type === 'binding') {
172
- this.emitBinding(target, prop, value.expression);
173
- return;
174
- }
175
146
  this.line(`${target}.${prop} = ${this.propertyValueToJS(prop, value)};`);
176
147
  }
177
- emitBinding(target, prop, expression) {
178
- // Inner braces distinguish template bindings from simple property chains.
179
- if (expression.includes('{')) {
180
- const parts = parseBindingTemplate(expression);
181
- if (parts.some(p => p.type === 'binding')) {
182
- const templates = [];
183
- const chainIndex = [];
184
- for (let i = 0; i < parts.length; i++) {
185
- if (parts[i].type === 'literal') {
186
- templates.push(`"${escapeJS(parts[i].value)}"`);
187
- }
188
- else {
189
- templates.push(`"${parts[i].value}"`);
190
- chainIndex.push(i);
191
- }
192
- }
193
- this.line(`Binding.bindProperties(this, [${templates.join(', ')}], [${chainIndex.join(', ')}], ${target}, "${prop}");`);
194
- }
195
- }
196
- else {
197
- this.line(`Binding.bindProperty(this, ["${expression.split('.').join('", "')}"], ${target}, "${prop}");`);
198
- }
199
- }
200
148
  emitNodePropertyChildren(node) {
201
149
  for (const pc of node.propertyChildren) {
202
150
  for (const child of pc.nodes) {
203
- if (typeof child === 'string') {
204
- this.line(`${node.varName}.${pc.propertyName} = ${JSON.stringify(child)};`);
205
- }
206
- else {
207
- this.emitNodeCreation(child);
208
- this.emitNodeProperties(child);
209
- this.line(`${node.varName}.${pc.propertyName} = ${child.varName};`);
210
- }
151
+ this.emitNodeCreation(child);
152
+ this.emitNodeProperties(child);
153
+ this.line(`${node.varName}.${pc.propertyName} = ${child.varName};`);
211
154
  }
212
155
  }
213
156
  }
@@ -221,57 +164,14 @@ class CodeGenerator {
221
164
  this.line(`skin.states = [${stateLines.join(', ')}];`);
222
165
  }
223
166
  generateStateExpr(state) {
224
- // Explicit state entries and dotted property attributes share one override list.
225
- const allOverrides = [...state.overrides];
226
- const nodeOverrides = this.collectStatePropertyOverrides(this._ir.children);
227
- for (const prop of this._ir.properties) {
228
- if (prop.state) {
229
- nodeOverrides.push({
230
- stateName: prop.state,
231
- targetId: '',
232
- propName: prop.name,
233
- value: prop.value,
234
- });
235
- }
236
- }
237
- for (const { stateName, targetId, propName, value } of nodeOverrides) {
238
- const matches = stateName === state.name || state.stateGroups.includes(stateName);
239
- if (matches) {
240
- allOverrides.push({ type: 'SetProperty', targetId, name: propName, value });
241
- }
242
- }
243
- if (allOverrides.length === 0) {
167
+ if (state.overrides.length === 0) {
244
168
  return `new State("${state.name}")`;
245
169
  }
246
- const overrides = allOverrides.map(o => this.generateOverrideExpr(o)).join(', ');
170
+ const overrides = state.overrides.map(o => this.generateOverrideExpr(o)).join(', ');
247
171
  return `new State("${state.name}", [${overrides}])`;
248
172
  }
249
173
  generateOverrideExpr(override) {
250
- switch (override.type) {
251
- case 'AddItems':
252
- return `new AddItems("${override.targetId}", "${override.destinationId}", ${override.position}, "${override.propertyName}")`;
253
- case 'SetProperty':
254
- return `new SetProperty("${override.targetId}", "${override.name}", ${this.propertyValueToJS(override.name, override.value)})`;
255
- default:
256
- return '/* unknown override */';
257
- }
258
- }
259
- collectStatePropertyOverrides(nodes) {
260
- const result = [];
261
- for (const node of nodes) {
262
- for (const prop of node.properties) {
263
- if (prop.state) {
264
- result.push({
265
- stateName: prop.state,
266
- targetId: node.id ?? node.varName,
267
- propName: prop.name,
268
- value: prop.value,
269
- });
270
- }
271
- }
272
- result.push(...this.collectStatePropertyOverrides(node.children));
273
- }
274
- return result;
174
+ return `new SetProperty("${override.targetId}", "${override.name}", ${this.propertyValueToJS(override.name, override.value)})`;
275
175
  }
276
176
  valueToJS(value) {
277
177
  switch (value.type) {
@@ -279,12 +179,6 @@ class CodeGenerator {
279
179
  return literalToJS(value);
280
180
  case 'percent':
281
181
  return String(value.value);
282
- case 'binding':
283
- return `/* binding: ${value.expression} */`;
284
- case 'ref':
285
- return value.varName;
286
- default:
287
- return 'undefined';
288
182
  }
289
183
  }
290
184
  propertyValueToJS(prop, value) {
@@ -308,20 +202,9 @@ class CodeGenerator {
308
202
  if (!className)
309
203
  return 'createSkin';
310
204
  const parts = className.split('.');
311
- const base = parts[parts.length - 1];
205
+ const base = (parts[parts.length - 1] ?? 'Skin').replace(/[^A-Za-z0-9_$]/g, '_');
312
206
  return `create${base}`;
313
207
  }
314
- hasBindingsInTree(nodes) {
315
- for (const node of nodes) {
316
- for (const prop of node.properties) {
317
- if (prop.value.type === 'binding')
318
- return true;
319
- }
320
- if (this.hasBindingsInTree(node.children))
321
- return true;
322
- }
323
- return false;
324
- }
325
208
  hasPropertyInTree(propertyName) {
326
209
  if (this._ir.properties.some(prop => prop.name === propertyName))
327
210
  return true;
@@ -347,46 +230,4 @@ function literalToJS(value) {
347
230
  return String(value.value);
348
231
  return JSON.stringify(value.value);
349
232
  }
350
- function escapeJS(s) {
351
- return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n');
352
- }
353
- /**
354
- * Parse a binding template expression.
355
- * e.g. "Hello {name}!" → [{literal: "Hello "}, {binding: "name"}, {literal: "!"}]
356
- * e.g. "{data.label}" → [{binding: "data.label"}]
357
- */
358
- function parseBindingTemplate(expr) {
359
- const parts = [];
360
- let i = 0;
361
- let current = '';
362
- while (i < expr.length) {
363
- if (expr[i] === '{') {
364
- if (current) {
365
- parts.push({ type: 'literal', value: current });
366
- current = '';
367
- }
368
- let depth = 1;
369
- let j = i + 1;
370
- while (j < expr.length && depth > 0) {
371
- if (expr[j] === '{') {
372
- depth++;
373
- }
374
- if (expr[j] === '}') {
375
- depth--;
376
- }
377
- j++;
378
- }
379
- parts.push({ type: 'binding', value: expr.slice(i + 1, j - 1) });
380
- i = j;
381
- }
382
- else {
383
- current += expr[i];
384
- i++;
385
- }
386
- }
387
- if (current) {
388
- parts.push({ type: 'literal', value: current });
389
- }
390
- return parts;
391
- }
392
233
  //# sourceMappingURL=codegen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../../src/core/kui/codegen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * KUI Skin parser and ESM factory generator.
3
+ */
4
+ import type { SkinIR } from './ast.js';
5
+ import type { CodeGenOptions } from './codegen.js';
6
+ import type { NamespaceModule } from './registry.js';
7
+ export { SourceLocator, createSourceLocator } from './source-location.js';
8
+ export type { SourcePosition } from './source-location.js';
9
+ export type { SkinIR, SkinNode, PropertyAssignment, PropertyValue, PropertyChild, LiteralValue, PercentValue, StateDef, StateOverride, StateSetProperty, UnresolvedTag, } from './ast.js';
10
+ export { lookupComponent, localName, suggestComponentTag, } from './registry.js';
11
+ export type { ComponentInfo, NamespaceModule } from './registry.js';
12
+ export { parseKUISkin } from './kui-parser.js';
13
+ export { generateCode } from './codegen.js';
14
+ export type { CodeGenOptions } from './codegen.js';
15
+ export interface CompileKUIOptions extends CodeGenOptions {
16
+ /**
17
+ * Project-defined KUI component namespaces.
18
+ */
19
+ readonly customNamespaces?: readonly NamespaceModule[];
20
+ }
21
+ /**
22
+ * Compiles one KUI Skin source string to an ESM factory module.
23
+ */
24
+ export declare function compileKUI(source: string, className?: string, options?: CompileKUIOptions): string;
25
+ /**
26
+ * Parses one KUI Skin source string into the compiler IR.
27
+ */
28
+ export declare function parseToIR(source: string, className?: string, customNamespaces?: readonly NamespaceModule[]): SkinIR;
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/kui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,YAAY,EACX,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,aAAa,GACb,MAAM,UAAU,CAAC;AAElB,OAAO,EACN,eAAe,EACf,SAAS,EACT,mBAAmB,GACnB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACxD;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;CACvD;AAED;;GAEG;AACH,wBAAgB,UAAU,CACzB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,iBAAiB,GACzB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,SAAS,CACxB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,GAAE,SAAS,eAAe,EAAO,GAC/C,MAAM,CAER"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * KUI Skin parser and ESM factory generator.
3
+ */
4
+ import { generateCode } from './codegen.js';
5
+ import { parseKUISkin } from './kui-parser.js';
6
+ export { SourceLocator, createSourceLocator } from './source-location.js';
7
+ export { lookupComponent, localName, suggestComponentTag, } from './registry.js';
8
+ export { parseKUISkin } from './kui-parser.js';
9
+ export { generateCode } from './codegen.js';
10
+ /**
11
+ * Compiles one KUI Skin source string to an ESM factory module.
12
+ */
13
+ export function compileKUI(source, className, options) {
14
+ const ir = parseKUISkin(source, className, options?.customNamespaces ?? []);
15
+ return generateCode(ir, options);
16
+ }
17
+ /**
18
+ * Parses one KUI Skin source string into the compiler IR.
19
+ */
20
+ export function parseToIR(source, className, customNamespaces = []) {
21
+ return parseKUISkin(source, className, customNamespaces);
22
+ }
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/kui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAiB1E,OAAO,EACN,eAAe,EACf,SAAS,EACT,mBAAmB,GACnB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAU5C;;GAEG;AACH,MAAM,UAAU,UAAU,CACzB,MAAc,EACd,SAAkB,EAClB,OAA2B;IAE3B,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC,CAAC;IAC5E,OAAO,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACxB,MAAc,EACd,SAAkB,EAClB,mBAA+C,EAAE;IAEjD,OAAO,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAC1D,CAAC"}
@@ -2,7 +2,7 @@ import type { Diagnostic } from '../diagnostics/index.js';
2
2
  import type { UnresolvedTag } from './ast.js';
3
3
  import type { NamespaceModule } from './registry.js';
4
4
  /**
5
- * Creates source-located diagnostics for unresolved EXML component tags.
5
+ * Creates source-located diagnostics for unresolved KUI component tags.
6
6
  */
7
7
  export declare function createUnresolvedTagDiagnostics(file: string, source: string, tags: readonly UnresolvedTag[], customNamespaces?: readonly NamespaceModule[]): readonly Diagnostic[];
8
- //# sourceMappingURL=exml-diagnostics.d.ts.map
8
+ //# sourceMappingURL=kui-diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kui-diagnostics.d.ts","sourceRoot":"","sources":["../../../src/core/kui/kui-diagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;GAEG;AACH,wBAAgB,8BAA8B,CAC7C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,aAAa,EAAE,EAC9B,gBAAgB,GAAE,SAAS,eAAe,EAAO,GAC/C,SAAS,UAAU,EAAE,CAkBvB"}
@@ -2,7 +2,7 @@ import { DIAGNOSTIC_CODES } from '../diagnostics/index.js';
2
2
  import { createSourceLocator } from './source-location.js';
3
3
  import { suggestComponentTag } from './registry.js';
4
4
  /**
5
- * Creates source-located diagnostics for unresolved EXML component tags.
5
+ * Creates source-located diagnostics for unresolved KUI component tags.
6
6
  */
7
7
  export function createUnresolvedTagDiagnostics(file, source, tags, customNamespaces = []) {
8
8
  const locator = createSourceLocator(source);
@@ -10,9 +10,9 @@ export function createUnresolvedTagDiagnostics(file, source, tags, customNamespa
10
10
  const position = locator.locate(tag.range.start);
11
11
  const suggestion = suggestComponentTag(tag.name, customNamespaces);
12
12
  return {
13
- code: DIAGNOSTIC_CODES.EXML_UNKNOWN_TAG,
13
+ code: DIAGNOSTIC_CODES.KUI_UNKNOWN_TAG,
14
14
  severity: 'warning',
15
- message: `Unknown EXML tag "${tag.name}" was dropped from the generated skin.`,
15
+ message: `Unknown KUI tag "${tag.name}" was dropped from the generated skin.`,
16
16
  location: {
17
17
  file,
18
18
  line: position.line,
@@ -23,4 +23,4 @@ export function createUnresolvedTagDiagnostics(file, source, tags, customNamespa
23
23
  };
24
24
  });
25
25
  }
26
- //# sourceMappingURL=exml-diagnostics.js.map
26
+ //# sourceMappingURL=kui-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kui-diagnostics.js","sourceRoot":"","sources":["../../../src/core/kui/kui-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAKpD;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAC7C,IAAY,EACZ,MAAc,EACd,IAA8B,EAC9B,mBAA+C,EAAE;IAEjD,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACnE,OAAO;YACN,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,oBAAoB,GAAG,CAAC,IAAI,wCAAwC;YAC7E,QAAQ,EAAE;gBACT,IAAI;gBACJ,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;aACvB;YACD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,iBAAiB,UAAU,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { SkinIR } from './ast.js';
2
+ import type { NamespaceModule } from './registry.js';
3
+ /**
4
+ * Parses a KUI Skin document into the existing skin code-generation IR.
5
+ */
6
+ export declare function parseKUISkin(source: string, className: string | undefined, customNamespaces?: readonly NamespaceModule[]): SkinIR;
7
+ //# sourceMappingURL=kui-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kui-parser.d.ts","sourceRoot":"","sources":["../../../src/core/kui/kui-parser.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAIX,MAAM,EAIN,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;GAEG;AACH,wBAAgB,YAAY,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,gBAAgB,GAAE,SAAS,eAAe,EAAO,GAC/C,MAAM,CAMR"}
@@ -0,0 +1,157 @@
1
+ import { isUIAssetReference, isUIDesignTokenReference, isUIResourceReference, parseUIDocument, } from '@kurot/ui-document';
2
+ import { localName, lookupComponent } from './registry.js';
3
+ /**
4
+ * Parses a KUI Skin document into the existing skin code-generation IR.
5
+ */
6
+ export function parseKUISkin(source, className, customNamespaces = []) {
7
+ const document = parseUIDocument(source);
8
+ if (document.assetKind !== 'appearance') {
9
+ throw new Error(`KUI compiler expected a Skin document, received ${document.assetKind}.`);
10
+ }
11
+ return new KUIParseContext(source, document, className ?? document.id, customNamespaces).parse();
12
+ }
13
+ class KUIParseContext {
14
+ _source;
15
+ _document;
16
+ _className;
17
+ _customNamespaces;
18
+ _imports = new Map([['Skin', '@kurot/ui']]);
19
+ _skinParts = [];
20
+ _unresolvedTags = [];
21
+ _partIds;
22
+ _variable = 0;
23
+ constructor(_source, _document, _className, _customNamespaces) {
24
+ this._source = _source;
25
+ this._document = _document;
26
+ this._className = _className;
27
+ this._customNamespaces = _customNamespaces;
28
+ this._partIds = new Set(Object.values(this._document.contract.parts).map(part => part.nodeId));
29
+ }
30
+ parse() {
31
+ const root = this._document.root;
32
+ if (root.type !== 'kui.Group') {
33
+ throw new Error(`KUI Skin root component must be kui.Group, received ${root.type}.`);
34
+ }
35
+ const width = numericProperty(root.properties.width);
36
+ const height = numericProperty(root.properties.height);
37
+ const rootNode = this._node(root);
38
+ return {
39
+ className: this._className,
40
+ ...(width === undefined ? {} : { width }),
41
+ ...(height === undefined ? {} : { height }),
42
+ properties: [],
43
+ imports: this._imports,
44
+ skinParts: this._skinParts,
45
+ children: rootNode === undefined ? [] : [rootNode],
46
+ propertyChildren: [],
47
+ states: this._states(),
48
+ declarations: [],
49
+ unresolvedTags: this._unresolvedTags,
50
+ };
51
+ }
52
+ _node(node) {
53
+ if (node.instance !== undefined) {
54
+ throw new Error(`KUI Skin node "${node.id}" cannot be a reusable component instance.`);
55
+ }
56
+ const tag = typeTag(node.type);
57
+ const info = lookupComponent(tag, this._customNamespaces);
58
+ if (!info) {
59
+ this._unresolvedTags.push({ name: tag, range: sourceRange(this._source, tag) });
60
+ return undefined;
61
+ }
62
+ const className = localName(tag);
63
+ this._imports.set(className, info.module);
64
+ if (this._partIds.has(node.id))
65
+ this._skinParts.push(node.id);
66
+ const propertyChildren = [];
67
+ const properties = [];
68
+ for (const [name, value] of Object.entries(node.properties)) {
69
+ const semanticChild = this._semanticChild(name, value);
70
+ if (semanticChild) {
71
+ propertyChildren.push(semanticChild);
72
+ }
73
+ else {
74
+ properties.push({ name, value: propertyValue(value) });
75
+ }
76
+ }
77
+ return {
78
+ className,
79
+ module: info.module,
80
+ varName: safeVariable(node.id, className, ++this._variable),
81
+ id: node.id,
82
+ properties,
83
+ children: node.children.map(child => this._node(child)).filter(isSkinNode),
84
+ propertyChildren,
85
+ };
86
+ }
87
+ _semanticChild(name, value) {
88
+ if (!isPlainObject(value) || typeof value.type !== 'string')
89
+ return undefined;
90
+ const properties = isPlainObject(value.properties) ? value.properties : {};
91
+ const node = this._node({
92
+ id: `_${name}${this._variable + 1}`,
93
+ type: value.type,
94
+ properties,
95
+ children: [],
96
+ });
97
+ return node === undefined ? undefined : { propertyName: name, nodes: [node] };
98
+ }
99
+ _states() {
100
+ return Object.entries(this._document.contract.states).map(([name, definition]) => ({
101
+ name,
102
+ overrides: definition.overrides.map(override => {
103
+ if (override.transition !== undefined) {
104
+ throw new Error(`Compiled KUI skins do not support transitions in state "${name}".`);
105
+ }
106
+ return {
107
+ type: 'SetProperty',
108
+ targetId: override.targetId,
109
+ name: override.property,
110
+ value: propertyValue(override.value),
111
+ };
112
+ }),
113
+ }));
114
+ }
115
+ }
116
+ function propertyValue(value) {
117
+ if (typeof value === 'string' && value.endsWith('%')) {
118
+ const percentage = Number.parseFloat(value);
119
+ if (!Number.isNaN(percentage))
120
+ return { type: 'percent', value: percentage };
121
+ }
122
+ if (isUIResourceReference(value) || isUIDesignTokenReference(value)) {
123
+ return { type: 'literal', value: value.key };
124
+ }
125
+ if (isUIAssetReference(value)) {
126
+ return { type: 'literal', value: value.assetId };
127
+ }
128
+ return { type: 'literal', value };
129
+ }
130
+ function typeTag(type) {
131
+ const separator = type.indexOf('.');
132
+ if (separator === -1)
133
+ return type;
134
+ const prefix = type.slice(0, separator);
135
+ const name = type.slice(separator + 1);
136
+ return prefix === 'kui' ? name : `${prefix}:${name}`;
137
+ }
138
+ function safeVariable(id, className, index) {
139
+ const candidate = id.replace(/[^A-Za-z0-9_$]/g, '_');
140
+ if (/^[A-Za-z_$]/.test(candidate))
141
+ return candidate;
142
+ return `_${className.charAt(0).toLowerCase()}${className.slice(1)}${index}`;
143
+ }
144
+ function sourceRange(source, tag) {
145
+ const start = Math.max(0, source.indexOf(`<${tag}`));
146
+ return { start, end: start + tag.length + 1 };
147
+ }
148
+ function numericProperty(value) {
149
+ return typeof value === 'number' ? value : undefined;
150
+ }
151
+ function isPlainObject(value) {
152
+ return typeof value === 'object' && !Array.isArray(value);
153
+ }
154
+ function isSkinNode(node) {
155
+ return node !== undefined;
156
+ }
157
+ //# sourceMappingURL=kui-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kui-parser.js","sourceRoot":"","sources":["../../../src/core/kui/kui-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,GACf,MAAM,oBAAoB,CAAC;AAW5B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAG3D;;GAEG;AACH,MAAM,UAAU,YAAY,CAC3B,MAAc,EACd,SAA6B,EAC7B,mBAA+C,EAAE;IAEjD,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,QAAQ,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,mDAAmD,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,IAAI,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;AAClG,CAAC;AAED,MAAM,eAAe;IAQF;IACA;IACA;IACA;IAVD,QAAQ,GAAG,IAAI,GAAG,CAAiB,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5D,UAAU,GAAa,EAAE,CAAC;IAC1B,eAAe,GAAoB,EAAE,CAAC;IACtC,QAAQ,CAAsB;IACvC,SAAS,GAAG,CAAC,CAAC;IAEtB,YACkB,OAAe,EACf,SAAqB,EACrB,UAAkB,EAClB,iBAA6C;QAH7C,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAAY;QACrB,eAAU,GAAV,UAAU,CAAQ;QAClB,sBAAiB,GAAjB,iBAAiB,CAA4B;QAE9D,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAChG,CAAC;IAEM,KAAK;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,uDAAuD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO;YACN,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACzC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;YAC3C,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAClD,gBAAgB,EAAE,EAAE;YACpB,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE;YACtB,YAAY,EAAE,EAAE;YAChB,cAAc,EAAE,IAAI,CAAC,eAAe;SACpC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAY;QACzB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,EAAE,4CAA4C,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAChF,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE9D,MAAM,gBAAgB,GAAoB,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAyB,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,aAAa,EAAE,CAAC;gBACnB,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACP,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;QACF,CAAC;QACD,OAAO;YACN,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC;YAC3D,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,UAAU;YACV,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;YAC1E,gBAAgB;SAChB,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,IAAY,EAAE,KAAsB;QAC1D,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC9E,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YACvB,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;YACnC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU;YACV,QAAQ,EAAE,EAAE;SACZ,CAAC,CAAC;QACH,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/E,CAAC;IAEO,OAAO;QACd,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;YAClF,IAAI;YACJ,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBAC9C,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACvC,MAAM,IAAI,KAAK,CAAC,2DAA2D,IAAI,IAAI,CAAC,CAAC;gBACtF,CAAC;gBACD,OAAO;oBACN,IAAI,EAAE,aAAsB;oBAC5B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,IAAI,EAAE,QAAQ,CAAC,QAAQ;oBACvB,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;iBACpC,CAAC;YACH,CAAC,CAAC;SACF,CAAC,CAAC,CAAC;IACL,CAAC;CACD;AAED,SAAS,aAAa,CAAC,KAAsB;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,qBAAqB,CAAC,KAAK,CAAC,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,SAAS,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACvC,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,YAAY,CAAC,EAAU,EAAE,SAAiB,EAAE,KAAa;IACjE,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACrD,IAAI,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACpD,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,GAAW;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,eAAe,CAAC,KAAkC;IAC1D,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAED,SAAS,aAAa,CAAC,KAAsB;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,UAAU,CAAC,IAA0B;IAC7C,OAAO,IAAI,KAAK,SAAS,CAAC;AAC3B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Static component registry for EXML → JS code generation.
2
+ * Static component registry for KUI → JS code generation.
3
3
  *
4
4
  * Maps local tag names such as `Button` and `Skin` to their module specifiers
5
5
  * and default properties.
@@ -19,8 +19,7 @@ export interface ComponentInfo {
19
19
  readonly isArray?: boolean;
20
20
  }
21
21
  /**
22
- * A project-defined EXML namespace, matching Egret's `xmlns:game="game.*"`
23
- * convention (see `ProjectConfig.exml.namespaces` in `@kurot/cli`).
22
+ * A project-defined KUI XML namespace.
24
23
  */
25
24
  export interface NamespaceModule {
26
25
  /**
@@ -42,10 +41,7 @@ export interface NamespaceModule {
42
41
  * Looks up a component by its tag name.
43
42
  *
44
43
  * Project-defined namespaces (`customNamespaces`) take priority when the
45
- * tag's prefix matches one: this mirrors Egret's `xmlns:game="game.*"`
46
- * convention, where the prefix alone — not the declared xmlns URI — decides
47
- * which module a tag resolves to (the same is true of the built-in `eui`/
48
- * `egret` prefixes below).
44
+ * tag's prefix matches one. The namespace prefix selects the generated module.
49
45
  *
50
46
  * @param tagName - Complete tag name, optionally including a prefix.
51
47
  * @param customNamespaces - Project-defined namespaces from `kurot.config.ts`.
@@ -83,23 +79,4 @@ export declare function localName(tagName: string): string;
83
79
  * @returns A close registered tag, or `undefined` when no candidate is reliable.
84
80
  */
85
81
  export declare function suggestComponentTag(tagName: string, customNamespaces?: readonly NamespaceModule[]): string | undefined;
86
- /**
87
- * Checks whether a tag name uses EXML property-node syntax.
88
- *
89
- * e.g. "eui:Button.label" → property "label" on `Button`.
90
- *
91
- * @param tagName - Complete tag name to inspect.
92
- * @returns Whether the tag contains a property separator.
93
- */
94
- export declare function isPropertyNode(tagName: string): boolean;
95
- /**
96
- * Parses a property-node tag such as `eui:Button.label`.
97
- *
98
- * @param tagName - Complete property-node tag name.
99
- * @returns The owner and property names, or `undefined` when the tag is not a property node.
100
- */
101
- export declare function parsePropertyNode(tagName: string): {
102
- owner: string;
103
- property: string;
104
- } | undefined;
105
82
  //# sourceMappingURL=registry.d.ts.map