@kurot/ui-document 0.4.1 → 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.
Files changed (90) hide show
  1. package/README.md +11 -4
  2. package/dist/kurot/assets/UIAssetRegistry.d.ts.map +1 -1
  3. package/dist/kurot/assets/UIAssetRegistry.js +4 -15
  4. package/dist/kurot/assets/UIAssetRegistry.js.map +1 -1
  5. package/dist/kurot/assets/validateUIAssetInstances.d.ts.map +1 -1
  6. package/dist/kurot/assets/validateUIAssetInstances.js +16 -13
  7. package/dist/kurot/assets/validateUIAssetInstances.js.map +1 -1
  8. package/dist/kurot/assets/validateUIAssetOverrides.d.ts.map +1 -1
  9. package/dist/kurot/assets/validateUIAssetOverrides.js +81 -12
  10. package/dist/kurot/assets/validateUIAssetOverrides.js.map +1 -1
  11. package/dist/kurot/catalog/kurot-ui-foundation.d.ts.map +1 -1
  12. package/dist/kurot/catalog/kurot-ui-foundation.js +41 -0
  13. package/dist/kurot/catalog/kurot-ui-foundation.js.map +1 -1
  14. package/dist/kurot/document/create.d.ts.map +1 -1
  15. package/dist/kurot/document/create.js +1 -5
  16. package/dist/kurot/document/create.js.map +1 -1
  17. package/dist/kurot/document/createReferences.d.ts.map +1 -1
  18. package/dist/kurot/document/createReferences.js +1 -5
  19. package/dist/kurot/document/createReferences.js.map +1 -1
  20. package/dist/kurot/document/query.d.ts.map +1 -1
  21. package/dist/kurot/document/query.js +6 -4
  22. package/dist/kurot/document/query.js.map +1 -1
  23. package/dist/kurot/editing/UIOperation.d.ts +2 -1
  24. package/dist/kurot/editing/UIOperation.d.ts.map +1 -1
  25. package/dist/kurot/editing/diffUIDocuments.d.ts.map +1 -1
  26. package/dist/kurot/editing/diffUIDocuments.js +1 -7
  27. package/dist/kurot/editing/diffUIDocuments.js.map +1 -1
  28. package/dist/kurot/model/UIAssetContract.d.ts +2 -1
  29. package/dist/kurot/model/UIAssetContract.d.ts.map +1 -1
  30. package/dist/kurot/schema/UIComponentDefinition.d.ts +52 -2
  31. package/dist/kurot/schema/UIComponentDefinition.d.ts.map +1 -1
  32. package/dist/kurot/schema/UIComponentDefinition.js +7 -1
  33. package/dist/kurot/schema/UIComponentDefinition.js.map +1 -1
  34. package/dist/kurot/schema/UIComponentRegistry.d.ts.map +1 -1
  35. package/dist/kurot/schema/UIComponentRegistry.js +42 -10
  36. package/dist/kurot/schema/UIComponentRegistry.js.map +1 -1
  37. package/dist/kurot/schema/index.d.ts +2 -1
  38. package/dist/kurot/schema/index.d.ts.map +1 -1
  39. package/dist/kurot/schema/index.js +1 -0
  40. package/dist/kurot/schema/index.js.map +1 -1
  41. package/dist/kurot/schema/isUIPropertyDefinitionAssignable.d.ts +6 -0
  42. package/dist/kurot/schema/isUIPropertyDefinitionAssignable.d.ts.map +1 -0
  43. package/dist/kurot/schema/isUIPropertyDefinitionAssignable.js +50 -0
  44. package/dist/kurot/schema/isUIPropertyDefinitionAssignable.js.map +1 -0
  45. package/dist/kurot/schema/matchesUIPropertyDefinition.d.ts.map +1 -1
  46. package/dist/kurot/schema/matchesUIPropertyDefinition.js +2 -3
  47. package/dist/kurot/schema/matchesUIPropertyDefinition.js.map +1 -1
  48. package/dist/kurot/schema/validateComponentDefinition.d.ts.map +1 -1
  49. package/dist/kurot/schema/validateComponentDefinition.js +71 -14
  50. package/dist/kurot/schema/validateComponentDefinition.js.map +1 -1
  51. package/dist/kurot/schema/validateUIDocumentComponents.d.ts.map +1 -1
  52. package/dist/kurot/schema/validateUIDocumentComponents.js +10 -44
  53. package/dist/kurot/schema/validateUIDocumentComponents.js.map +1 -1
  54. package/dist/kurot/serialization/UIDocumentParseError.d.ts.map +1 -1
  55. package/dist/kurot/serialization/UIDocumentParseError.js +2 -2
  56. package/dist/kurot/serialization/UIDocumentParseError.js.map +1 -1
  57. package/dist/kurot/serialization/UIDocumentValidationError.d.ts.map +1 -1
  58. package/dist/kurot/serialization/UIDocumentValidationError.js +2 -2
  59. package/dist/kurot/serialization/UIDocumentValidationError.js.map +1 -1
  60. package/dist/kurot/serialization/first-diagnostic-message.d.ts +6 -0
  61. package/dist/kurot/serialization/first-diagnostic-message.d.ts.map +1 -0
  62. package/dist/kurot/serialization/first-diagnostic-message.js +7 -0
  63. package/dist/kurot/serialization/first-diagnostic-message.js.map +1 -0
  64. package/dist/kurot/serialization/json.d.ts.map +1 -1
  65. package/dist/kurot/serialization/json.js +10 -15
  66. package/dist/kurot/serialization/json.js.map +1 -1
  67. package/dist/kurot/shared/strings.d.ts +18 -0
  68. package/dist/kurot/shared/strings.d.ts.map +1 -0
  69. package/dist/kurot/shared/strings.js +32 -0
  70. package/dist/kurot/shared/strings.js.map +1 -0
  71. package/dist/kurot/validation/UIDiagnostic.d.ts +1 -1
  72. package/dist/kurot/validation/UIDiagnostic.d.ts.map +1 -1
  73. package/dist/kurot/validation/skinPartNames.d.ts +6 -0
  74. package/dist/kurot/validation/skinPartNames.d.ts.map +1 -0
  75. package/dist/kurot/validation/skinPartNames.js +50 -0
  76. package/dist/kurot/validation/skinPartNames.js.map +1 -0
  77. package/dist/kurot/validation/validateUIAssetContract.d.ts.map +1 -1
  78. package/dist/kurot/validation/validateUIAssetContract.js +34 -22
  79. package/dist/kurot/validation/validateUIAssetContract.js.map +1 -1
  80. package/dist/kurot/validation/validateUIAssetModes.d.ts.map +1 -1
  81. package/dist/kurot/validation/validateUIAssetModes.js +4 -10
  82. package/dist/kurot/validation/validateUIAssetModes.js.map +1 -1
  83. package/dist/kurot/validation/validateUIDocument.d.ts.map +1 -1
  84. package/dist/kurot/validation/validateUIDocument.js +12 -8
  85. package/dist/kurot/validation/validateUIDocument.js.map +1 -1
  86. package/dist/kurot/validation/validationHelpers.d.ts +4 -0
  87. package/dist/kurot/validation/validationHelpers.d.ts.map +1 -1
  88. package/dist/kurot/validation/validationHelpers.js +11 -0
  89. package/dist/kurot/validation/validationHelpers.js.map +1 -1
  90. package/package.json +1 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@ Headless semantic document foundation for Kurot UI tooling. It is intended to
4
4
  provide one format and one mutation model shared by the future visual UI
5
5
  builder, `@kurot/cli`, and Agent-driven UI generation.
6
6
 
7
- > **Early development (0.4.x).** The reusable authoring model and headless
7
+ > **Early development (0.5.x).** The reusable authoring model and headless
8
8
  > editing kernel are implemented, but the schema remains pre-1.0 and is not yet
9
9
  > a production file format.
10
10
 
@@ -60,7 +60,7 @@ the corresponding `@kurot/ui` class.
60
60
  runtime-neutral states, and authoring variants;
61
61
  - typed external data fields, named one-way property bindings, and bounded
62
62
  semantic actions;
63
- - optional numeric transitions on state property overrides;
63
+ - optional numeric transitions on appearance-state property overrides;
64
64
  - compact reusable instances containing an asset reference and only their
65
65
  parameter values, variant, part overrides, and projected Slot content;
66
66
  - typed project resource and design-token references;
@@ -75,9 +75,10 @@ the corresponding `@kurot/ui` class.
75
75
  - validated JSON parsing and deterministic serialization with sorted property
76
76
  keys;
77
77
  - runtime-independent component definitions and an isolated component registry;
78
+ - inherited appearance-state, native-part, and emitted-event capabilities;
78
79
  - abstract base definitions, single-parent inheritance, deterministic schema
79
80
  resolution, and derived property overrides;
80
- - optional validation of registered component types, known property categories,
81
+ - validation of registered component types, known property categories,
81
82
  required properties, child policies, and abstract types;
82
83
  - union-valued properties, enum values, numeric ranges, integer constraints,
83
84
  serializable defaults, editor-facing semantic formats, and accepted resource
@@ -230,6 +231,12 @@ States and variants live in asset contracts rather than untyped component
230
231
  properties. Compatibility-shaped `currentState`, `skinName`, and
231
232
  `hostComponentKey` are not canonical authoring fields.
232
233
 
234
+ Component Schemas also declare whether a type accepts an appearance, the exact
235
+ native states that appearance may define, required typed parts, and semantic
236
+ events available to actions. Binding compatibility is directional: the entire
237
+ source value domain must fit the destination rather than merely sharing one
238
+ possible type.
239
+
233
240
  See [Architecture](./docs/architecture.md) for the current contracts and
234
241
  package boundaries.
235
242
 
@@ -247,7 +254,7 @@ or network I/O, or model-provider integration. Those concerns belong to
247
254
  `@kurot/ui`, the visual builder, CLI orchestration, and Agent adapters
248
255
  respectively.
249
256
 
250
- `@kurot/ui-runtime@0.3.x` validates and materializes format-version-2 assets,
257
+ `@kurot/ui-runtime@0.4.x` validates and materializes format-version-2 assets,
251
258
  including reusable instances, parameter bindings, Slots, component variants,
252
259
  part overrides, design tokens, resource hooks, and native appearance
253
260
  skins/states. It also executes the bounded data, action, and transition
@@ -1 +1 @@
1
- {"version":3,"file":"UIAssetRegistry.d.ts","sourceRoot":"","sources":["../../../src/kurot/assets/UIAssetRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAczD,OAAO,KAAK,EACX,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,0BAA0B,CAAC;AAKlC;;GAEG;AACH,qBAAa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8C;IAEtE;;OAEG;IACI,aAAa,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;IAYhD;;OAEG;IACI,gBAAgB,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI;IAW/D;;OAEG;IACI,aAAa,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI;IAmB/D;;OAEG;IACI,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAInD;;OAEG;IACI,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAIjE;;OAEG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;IAIjE;;OAEG;IACI,UAAU,IAAI,SAAS,UAAU,EAAE;IAI1C;;OAEG;IACI,aAAa,IAAI,SAAS,oBAAoB,EAAE;IAIvD;;OAEG;IACI,UAAU,IAAI,SAAS,uBAAuB,EAAE;CAGvD"}
1
+ {"version":3,"file":"UIAssetRegistry.d.ts","sourceRoot":"","sources":["../../../src/kurot/assets/UIAssetRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAczD,OAAO,KAAK,EACX,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,0BAA0B,CAAC;AAMlC;;GAEG;AACH,qBAAa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8C;IAEtE;;OAEG;IACI,aAAa,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;IAYhD;;OAEG;IACI,gBAAgB,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI;IAW/D;;OAEG;IACI,aAAa,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI;IAmB/D;;OAEG;IACI,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAInD;;OAEG;IACI,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAIjE;;OAEG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;IAIjE;;OAEG;IACI,UAAU,IAAI,SAAS,UAAU,EAAE;IAI1C;;OAEG;IACI,aAAa,IAAI,SAAS,oBAAoB,EAAE;IAIvD;;OAEG;IACI,UAAU,IAAI,SAAS,uBAAuB,EAAE;CAGvD"}
@@ -2,6 +2,7 @@ import { UI_DESIGN_TOKEN_TYPES, UI_RESOURCE_TYPES, } from '../model/UIReference.
2
2
  import { UIDocumentValidationError } from '../serialization/UIDocumentValidationError.js';
3
3
  import { validateUIDocument } from '../validation/validateUIDocument.js';
4
4
  import { validatePropertyValue } from '../validation/validationHelpers.js';
5
+ import { assertNonEmptyString, compareStrings } from '../shared/strings.js';
5
6
  const RESOURCE_TYPES = new Set(UI_RESOURCE_TYPES);
6
7
  const TOKEN_TYPES = new Set(UI_DESIGN_TOKEN_TYPES);
7
8
  /**
@@ -19,7 +20,7 @@ export class UIAssetRegistry {
19
20
  if (diagnostics.length > 0) {
20
21
  throw new UIDocumentValidationError(diagnostics);
21
22
  }
22
- assertNonEmpty(document.id, 'UI asset id');
23
+ assertNonEmptyString(document.id, 'UI asset id');
23
24
  if (this._assets.has(document.id)) {
24
25
  throw new Error(`UI asset "${document.id}" is already registered.`);
25
26
  }
@@ -29,7 +30,7 @@ export class UIAssetRegistry {
29
30
  * Registers one project resource without replacing an existing key.
30
31
  */
31
32
  registerResource(definition) {
32
- assertNonEmpty(definition.key, 'UI resource key');
33
+ assertNonEmptyString(definition.key, 'UI resource key');
33
34
  if (!RESOURCE_TYPES.has(definition.resourceType)) {
34
35
  throw new Error(`Unsupported UI resource type "${String(definition.resourceType)}".`);
35
36
  }
@@ -42,7 +43,7 @@ export class UIAssetRegistry {
42
43
  * Registers one project design token without replacing an existing key.
43
44
  */
44
45
  registerToken(definition) {
45
- assertNonEmpty(definition.key, 'UI design token key');
46
+ assertNonEmptyString(definition.key, 'UI design token key');
46
47
  if (!TOKEN_TYPES.has(definition.tokenType)) {
47
48
  throw new Error(`Unsupported UI design token type "${String(definition.tokenType)}".`);
48
49
  }
@@ -94,18 +95,6 @@ export class UIAssetRegistry {
94
95
  return [...this._tokens.values()].sort((a, b) => compareStrings(a.key, b.key));
95
96
  }
96
97
  }
97
- function assertNonEmpty(value, label) {
98
- if (typeof value !== 'string' || value.trim().length === 0) {
99
- throw new Error(`${label} must be a non-empty string.`);
100
- }
101
- }
102
- function compareStrings(a, b) {
103
- if (a < b)
104
- return -1;
105
- if (a > b)
106
- return 1;
107
- return 0;
108
- }
109
98
  function matchesTokenValue(tokenType, value) {
110
99
  switch (tokenType) {
111
100
  case 'color':
@@ -1 +1 @@
1
- {"version":3,"file":"UIAssetRegistry.js","sourceRoot":"","sources":["../../../src/kurot/assets/UIAssetRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UIAssetRegistry.js","sourceRoot":"","sources":["../../../src/kurot/assets/UIAssetRegistry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateUIAssetInstances.d.ts","sourceRoot":"","sources":["../../../src/kurot/assets/validateUIAssetInstances.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D;;GAEG;AACH,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,mBAAmB,GAC7B,YAAY,EAAE,CAOhB"}
1
+ {"version":3,"file":"validateUIAssetInstances.d.ts","sourceRoot":"","sources":["../../../src/kurot/assets/validateUIAssetInstances.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D;;GAEG;AACH,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,mBAAmB,GAC7B,YAAY,EAAE,CAOhB"}
@@ -33,6 +33,7 @@ function validateAppearance(node, path, registry, diagnostics) {
33
33
  function validateInstance(node, path, registry, components, diagnostics) {
34
34
  if (!node.instance)
35
35
  return;
36
+ const instance = node.instance;
36
37
  if (node.children.length > 0) {
37
38
  addUIDiagnostic(diagnostics, 'invalid-component-instance', `${path}.children`, 'Component instances accept projected children through declared slots only.');
38
39
  }
@@ -45,13 +46,13 @@ function validateInstance(node, path, registry, components, diagnostics) {
45
46
  addUIDiagnostic(diagnostics, 'invalid-component-source', `${path}.instance.source`, `UI asset "${source.id}" does not publish component type ${node.type}.`);
46
47
  return;
47
48
  }
48
- validateParameters(node, path, source, diagnostics);
49
- validateVariant(node, path, source, diagnostics);
50
- validateSlots(node, path, source, diagnostics);
51
- validateOverrides(node, path, source, components, diagnostics);
49
+ validateParameters(instance, node, path, source, diagnostics);
50
+ validateVariant(instance, node, path, source, diagnostics);
51
+ validateSlots(instance, node, path, source, diagnostics);
52
+ validateOverrides(instance, node, path, source, components, diagnostics);
52
53
  }
53
- function validateParameters(node, path, source, diagnostics) {
54
- const values = node.instance.parameters;
54
+ function validateParameters(instance, node, path, source, diagnostics) {
55
+ const values = instance.parameters;
55
56
  for (const [name, definition] of Object.entries(source.contract.parameters)) {
56
57
  if (Object.hasOwn(values, name))
57
58
  continue;
@@ -69,14 +70,14 @@ function validateParameters(node, path, source, diagnostics) {
69
70
  }
70
71
  }
71
72
  }
72
- function validateVariant(node, path, source, diagnostics) {
73
- const variant = node.instance.variant;
73
+ function validateVariant(instance, node, path, source, diagnostics) {
74
+ const variant = instance.variant;
74
75
  if (variant === undefined || Object.hasOwn(source.contract.variants, variant))
75
76
  return;
76
77
  addUIDiagnostic(diagnostics, 'unknown-variant', `${path}.instance.variant`, `Variant "${variant}" is not published by ${node.type}.`);
77
78
  }
78
- function validateSlots(node, path, source, diagnostics) {
79
- const values = node.instance.slots;
79
+ function validateSlots(instance, node, path, source, diagnostics) {
80
+ const values = instance.slots;
80
81
  for (const [name, definition] of Object.entries(source.contract.slots)) {
81
82
  if (!definition.required || (values[name]?.length ?? 0) > 0)
82
83
  continue;
@@ -92,15 +93,17 @@ function validateSlots(node, path, source, diagnostics) {
92
93
  }
93
94
  }
94
95
  }
95
- function validateOverrides(node, path, source, components, diagnostics) {
96
- for (let index = 0; index < node.instance.overrides.length; index++) {
97
- const override = node.instance.overrides[index];
96
+ function validateOverrides(instance, node, path, source, components, diagnostics) {
97
+ for (let index = 0; index < instance.overrides.length; index++) {
98
+ const override = instance.overrides[index];
98
99
  const part = source.contract.parts[override.part];
99
100
  const overridePath = `${path}.instance.overrides[${index}]`;
100
101
  if (!part) {
101
102
  addUIDiagnostic(diagnostics, 'unknown-part', `${overridePath}.part`, `Part "${override.part}" is not published by ${node.type}.`);
102
103
  continue;
103
104
  }
105
+ // Missing part targets and unresolvable part schemas are reported by
106
+ // the contract validators; only property compatibility is checked here.
104
107
  const target = findUINode(source.root, part.nodeId);
105
108
  if (!target)
106
109
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"validateUIAssetInstances.js","sourceRoot":"","sources":["../../../src/kurot/assets/validateUIAssetInstances.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateUIAssetInstances.js","sourceRoot":"","sources":["../../../src/kurot/assets/validateUIAssetInstances.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateUIAssetOverrides.d.ts","sourceRoot":"","sources":["../../../src/kurot/assets/validateUIAssetOverrides.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAM5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlE;;GAEG;AACH,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,mBAAmB,GAC7B,YAAY,EAAE,CAOhB"}
1
+ {"version":3,"file":"validateUIAssetOverrides.d.ts","sourceRoot":"","sources":["../../../src/kurot/assets/validateUIAssetOverrides.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAO5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlE;;GAEG;AACH,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,mBAAmB,GAC7B,YAAY,EAAE,CAShB"}
@@ -1,4 +1,7 @@
1
1
  import { findUINode } from '../document/query.js';
2
+ import { isUIDesignTokenReference } from '../model/UIReference.js';
3
+ import { toValueTypes } from '../schema/UIComponentDefinition.js';
4
+ import { isUIPropertyDefinitionAssignable } from '../schema/isUIPropertyDefinitionAssignable.js';
2
5
  import { matchesUIPropertyDefinition } from '../schema/matchesUIPropertyDefinition.js';
3
6
  import { addUIDiagnostic } from '../validation/validationHelpers.js';
4
7
  /**
@@ -8,6 +11,8 @@ export function validateUIAssetOverrides(document, components) {
8
11
  const diagnostics = [];
9
12
  validateParameterBindings(document, components, diagnostics);
10
13
  validateDataBindings(document, components, diagnostics);
14
+ validateActions(document, components, diagnostics);
15
+ validateAppearanceContract(document, components, diagnostics);
11
16
  validateModes(document, 'states', components, diagnostics);
12
17
  validateModes(document, 'variants', components, diagnostics);
13
18
  return diagnostics;
@@ -32,29 +37,33 @@ function validateDataBinding(document, binding, name, components, diagnostics) {
32
37
  return;
33
38
  }
34
39
  const sourceProperty = document.contract.dataFields?.[binding.source];
35
- if (!sourceProperty || propertyTypesOverlap(sourceProperty, targetProperty))
40
+ if (!sourceProperty || isUIPropertyDefinitionAssignable(sourceProperty, targetProperty)) {
36
41
  return;
42
+ }
37
43
  addUIDiagnostic(diagnostics, 'invalid-component-property', `${path}.source`, `Data field "${binding.source}" is not compatible with ${target.type}.${binding.property}.`);
38
44
  }
39
- function propertyTypesOverlap(source, target) {
40
- const sourceTypes = new Set(toValueTypes(source.valueType));
41
- return toValueTypes(target.valueType).some(type => sourceTypes.has(type));
42
- }
43
- function toValueTypes(value) {
44
- return Array.isArray(value) ? value : [value];
45
- }
46
45
  function validateParameterBindings(document, components, diagnostics) {
47
46
  for (const [name, parameter] of Object.entries(document.contract.parameters)) {
48
47
  const bindings = parameter.bindings ?? [];
49
48
  for (let index = 0; index < bindings.length; index++) {
50
49
  const binding = bindings[index];
51
50
  const target = findUINode(document.root, binding.targetId);
52
- if (!target)
51
+ if (!target) {
53
52
  continue;
53
+ }
54
54
  const definition = components.resolve(target.type);
55
- if (!definition || definition.properties[binding.property])
55
+ if (!definition) {
56
56
  continue;
57
- addUIDiagnostic(diagnostics, 'unknown-component-property', `$.contract.parameters.${name}.bindings[${index}].property`, `Property "${binding.property}" is not defined for ${target.type}.`);
57
+ }
58
+ const targetProperty = definition.properties[binding.property];
59
+ if (!targetProperty) {
60
+ addUIDiagnostic(diagnostics, 'unknown-component-property', `$.contract.parameters.${name}.bindings[${index}].property`, `Property "${binding.property}" is not defined for ${target.type}.`);
61
+ continue;
62
+ }
63
+ if (isUIPropertyDefinitionAssignable(parameter, targetProperty)) {
64
+ continue;
65
+ }
66
+ addUIDiagnostic(diagnostics, 'invalid-component-property', `$.contract.parameters.${name}.bindings[${index}]`, `Parameter "${name}" is not compatible with ${target.type}.${binding.property}.`);
58
67
  }
59
68
  }
60
69
  }
@@ -73,7 +82,8 @@ function validateUIPropertyOverride(document, override, path, components, diagno
73
82
  addUIDiagnostic(diagnostics, 'unknown-component-property', `${path}.property`, `Property "${override.property}" is not defined for ${target.type}.`);
74
83
  return;
75
84
  }
76
- if (override.transition && !supportsNumericTransition(property)) {
85
+ if (override.transition &&
86
+ (!supportsNumericTransition(property) || !isNumericTransitionValue(override.value))) {
77
87
  addUIDiagnostic(diagnostics, 'invalid-component-property', `${path}.transition`, `Transition target "${override.property}" must accept numeric values.`);
78
88
  }
79
89
  if (matchesUIPropertyDefinition(override.value, property))
@@ -83,6 +93,65 @@ function validateUIPropertyOverride(document, override, path, components, diagno
83
93
  function supportsNumericTransition(property) {
84
94
  return toValueTypes(property.valueType).includes('number');
85
95
  }
96
+ function isNumericTransitionValue(value) {
97
+ if (typeof value === 'number') {
98
+ return true;
99
+ }
100
+ return (isUIDesignTokenReference(value) &&
101
+ (value.tokenType === 'color' ||
102
+ value.tokenType === 'number' ||
103
+ value.tokenType === 'spacing'));
104
+ }
105
+ function validateActions(document, components, diagnostics) {
106
+ for (const [name, action] of Object.entries(document.contract.actions ?? {})) {
107
+ const source = findUINode(document.root, action.sourceId);
108
+ if (!source) {
109
+ continue;
110
+ }
111
+ const definition = components.resolve(source.type);
112
+ if (!definition || definition.events.includes(action.trigger)) {
113
+ continue;
114
+ }
115
+ addUIDiagnostic(diagnostics, 'invalid-asset-contract', `$.contract.actions.${name}.trigger`, `${source.type} does not emit the "${action.trigger}" semantic event.`);
116
+ }
117
+ }
118
+ function validateAppearanceContract(document, components, diagnostics) {
119
+ if (document.assetKind !== 'appearance' || !document.contract.targetType) {
120
+ return;
121
+ }
122
+ const target = components.resolve(document.contract.targetType);
123
+ if (!target || !target.appearance) {
124
+ addUIDiagnostic(diagnostics, 'invalid-component-source', '$.contract.targetType', `${document.contract.targetType} does not support appearance assets.`);
125
+ return;
126
+ }
127
+ for (const state of Object.keys(document.contract.states)) {
128
+ if (target.appearance.states?.includes(state)) {
129
+ continue;
130
+ }
131
+ addUIDiagnostic(diagnostics, 'invalid-asset-contract', `$.contract.states.${state}`, `State "${state}" is not supported by ${document.contract.targetType}.`);
132
+ }
133
+ for (const [name, part] of Object.entries(target.appearance.parts ?? {})) {
134
+ const authoredPart = document.contract.parts[name];
135
+ if (!authoredPart) {
136
+ if (part.required) {
137
+ addUIDiagnostic(diagnostics, 'invalid-asset-contract', `$.contract.parts.${name}`, `Appearance for ${document.contract.targetType} requires part "${name}".`);
138
+ }
139
+ continue;
140
+ }
141
+ if (!part.type) {
142
+ continue;
143
+ }
144
+ const node = findUINode(document.root, authoredPart.nodeId);
145
+ if (!node) {
146
+ continue;
147
+ }
148
+ const nodeType = components.resolve(node.type);
149
+ if (nodeType && (nodeType.type === part.type || nodeType.baseTypes.includes(part.type))) {
150
+ continue;
151
+ }
152
+ addUIDiagnostic(diagnostics, 'invalid-component-source', `$.contract.parts.${name}.nodeId`, `Part "${name}" must use ${part.type} or one of its derived types.`);
153
+ }
154
+ }
86
155
  function validateModes(document, key, components, diagnostics) {
87
156
  for (const [name, mode] of Object.entries(document.contract[key])) {
88
157
  for (let index = 0; index < mode.overrides.length; index++) {
@@ -1 +1 @@
1
- {"version":3,"file":"validateUIAssetOverrides.js","sourceRoot":"","sources":["../../../src/kurot/assets/validateUIAssetOverrides.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateUIAssetOverrides.js","sourceRoot":"","sources":["../../../src/kurot/assets/validateUIAssetOverrides.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"kurot-ui-foundation.d.ts","sourceRoot":"","sources":["../../../src/kurot/catalog/kurot-ui-foundation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAqHvE;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAS7E;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,mBAAmB,CAIrE"}
1
+ {"version":3,"file":"kurot-ui-foundation.d.ts","sourceRoot":"","sources":["../../../src/kurot/catalog/kurot-ui-foundation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AA8JvE;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAS7E;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,mBAAmB,CAIrE"}
@@ -7,6 +7,7 @@ const DEFINITIONS = [
7
7
  abstract: true,
8
8
  displayName: 'Display Object',
9
9
  description: 'Shared semantic base for visual objects in Kurot UI documents.',
10
+ events: ['tap'],
10
11
  properties: DISPLAY_OBJECT_PROPERTIES,
11
12
  allowUnknownProperties: false,
12
13
  },
@@ -24,6 +25,9 @@ const DEFINITIONS = [
24
25
  abstract: true,
25
26
  displayName: 'Component',
26
27
  description: 'Semantic base for skinnable Kurot UI controls.',
28
+ appearance: {
29
+ states: ['disabled'],
30
+ },
27
31
  properties: COMPONENT_PROPERTIES,
28
32
  },
29
33
  {
@@ -48,6 +52,7 @@ const DEFINITIONS = [
48
52
  displayName: 'Editable Text',
49
53
  description: 'Low-level editable text display used primarily as a TextInput appearance part.',
50
54
  children: 'none',
55
+ events: ['change'],
51
56
  properties: EDITABLE_TEXT_PROPERTIES,
52
57
  },
53
58
  {
@@ -72,6 +77,21 @@ const DEFINITIONS = [
72
77
  displayName: 'Button',
73
78
  description: 'Interactive skinnable button with label, icon, and view states.',
74
79
  children: 'none',
80
+ appearance: {
81
+ parts: {
82
+ iconDisplay: { type: 'kui.Image' },
83
+ labelDisplay: { type: 'kui.Label' },
84
+ },
85
+ states: [
86
+ 'disabled',
87
+ 'disabledAndSelected',
88
+ 'down',
89
+ 'downAndSelected',
90
+ 'up',
91
+ 'upAndSelected',
92
+ ],
93
+ },
94
+ events: ['change'],
75
95
  properties: BUTTON_PROPERTIES,
76
96
  },
77
97
  {
@@ -88,6 +108,14 @@ const DEFINITIONS = [
88
108
  displayName: 'Progress Bar',
89
109
  description: 'Skinnable visual indicator for a bounded numeric value.',
90
110
  children: 'none',
111
+ appearance: {
112
+ parts: {
113
+ labelDisplay: { type: 'kui.Label' },
114
+ thumb: { required: true, type: 'kui.Component' },
115
+ },
116
+ states: ['disabled'],
117
+ },
118
+ events: ['change'],
91
119
  properties: PROGRESS_BAR_PROPERTIES,
92
120
  },
93
121
  {
@@ -96,6 +124,19 @@ const DEFINITIONS = [
96
124
  displayName: 'Text Input',
97
125
  description: 'Skinnable single-line text entry control with prompt support.',
98
126
  children: 'none',
127
+ appearance: {
128
+ parts: {
129
+ promptDisplay: { type: 'kui.Label' },
130
+ textDisplay: { required: true, type: 'kui.EditableText' },
131
+ },
132
+ states: [
133
+ 'disabled',
134
+ 'disabledWithPrompt',
135
+ 'normal',
136
+ 'normalWithPrompt',
137
+ ],
138
+ },
139
+ events: ['change'],
99
140
  properties: TEXT_INPUT_PROPERTIES,
100
141
  },
101
142
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"kurot-ui-foundation.js","sourceRoot":"","sources":["../../../src/kurot/catalog/kurot-ui-foundation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kurot-ui-foundation.js","sourceRoot":"","sources":["../../../src/kurot/catalog/kurot-ui-foundation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/kurot/document/create.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAInE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAEhE;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAExC;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC;IAE5C;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAgBjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,UAAU,CAW7E"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/kurot/document/create.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAKnE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAEhE;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAExC;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC;IAE5C;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAgBjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,UAAU,CAW7E"}
@@ -2,6 +2,7 @@ import { UI_DOCUMENT_FORMAT_VERSION } from '../version.js';
2
2
  import { UI_DOCUMENT_KIND } from '../model/UIDocument.js';
3
3
  import { createUIAssetContract } from './createAssetContract.js';
4
4
  import { createUIComponentInstance } from './createComponentInstance.js';
5
+ import { assertNonEmpty } from '../shared/strings.js';
5
6
  /**
6
7
  * Creates a node with explicit empty property and child collections.
7
8
  */
@@ -35,9 +36,4 @@ export function createUIDocument(options) {
35
36
  root: options.root,
36
37
  };
37
38
  }
38
- function assertNonEmpty(value, label) {
39
- if (value.trim().length === 0) {
40
- throw new Error(`${label} must not be empty.`);
41
- }
42
- }
43
39
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/kurot/document/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAQ1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AA8DzE;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAA4B;IACxD,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACtC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAE1C,OAAO;QACN,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE;QACrC,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS;YACjC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QAC7C,QAAQ,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;KACvC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgC;IAChE,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAE1C,OAAO;QACN,IAAI,EAAE,gBAAgB;QACtB,aAAa,EAAE,0BAA0B;QACzC,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,QAAQ;QACxC,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC;QACjD,IAAI,EAAE,OAAO,CAAC,IAAI;KAClB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,KAAa;IACnD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAC;IAChD,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/kurot/document/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAQ1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA8DtD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAA4B;IACxD,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACtC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAE1C,OAAO;QACN,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE;QACrC,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS;YACjC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QAC7C,QAAQ,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;KACvC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgC;IAChE,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAE1C,OAAO;QACN,IAAI,EAAE,gBAAgB;QACtB,aAAa,EAAE,0BAA0B;QACzC,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,QAAQ;QACxC,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC;QACjD,IAAI,EAAE,OAAO,CAAC,IAAI;KAClB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createReferences.d.ts","sourceRoot":"","sources":["../../../src/kurot/document/createReferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAGxE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACd,qBAAqB,CAUvB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACxC,YAAY,EAAE,cAAc,EAC5B,GAAG,EAAE,MAAM,GACT,mBAAmB,CAIrB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC3C,SAAS,EAAE,iBAAiB,EAC5B,GAAG,EAAE,MAAM,GACT,sBAAsB,CAIxB"}
1
+ {"version":3,"file":"createReferences.d.ts","sourceRoot":"","sources":["../../../src/kurot/document/createReferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,MAAM,yBAAyB,CAAC;AAGjC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAGxE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACd,qBAAqB,CAUvB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACxC,YAAY,EAAE,cAAc,EAC5B,GAAG,EAAE,MAAM,GACT,mBAAmB,CAIrB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC3C,SAAS,EAAE,iBAAiB,EAC5B,GAAG,EAAE,MAAM,GACT,sBAAsB,CAIxB"}
@@ -1,3 +1,4 @@
1
+ import { assertNonEmpty } from '../shared/strings.js';
1
2
  /**
2
3
  * Creates a stable reference to another editable UI asset.
3
4
  */
@@ -35,9 +36,4 @@ export function createUIDesignTokenReference(tokenType, key) {
35
36
  assertNonEmpty(key, 'Token key');
36
37
  return { kind: 'token', tokenType, key };
37
38
  }
38
- function assertNonEmpty(value, label) {
39
- if (value.trim().length === 0) {
40
- throw new Error(`${label} must not be empty.`);
41
- }
42
- }
43
39
  //# sourceMappingURL=createReferences.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createReferences.js","sourceRoot":"","sources":["../../../src/kurot/document/createReferences.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACrD,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAC1C,OAAe,EACf,OAAgB;IAEhB,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,cAAc,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO;QACN,IAAI,EAAE,OAAO;QACb,OAAO;QACP,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;KAC7C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACxC,YAA4B,EAC5B,GAAW;IAEX,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAC9C,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACpC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC3C,SAA4B,EAC5B,GAAW;IAEX,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACxC,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,KAAa;IACnD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAC;IAChD,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"createReferences.js","sourceRoot":"","sources":["../../../src/kurot/document/createReferences.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACrD,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAC1C,OAAe,EACf,OAAgB;IAEhB,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,cAAc,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO;QACN,IAAI,EAAE,OAAO;QACb,OAAO;QACP,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;KAC7C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACxC,YAA4B,EAC5B,GAAW;IAEX,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAC9C,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACpC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC3C,SAA4B,EAC5B,GAAW;IAEX,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACxC,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AAC1C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/kurot/document/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAWhF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAevE"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/kurot/document/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAYhF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAevE"}
@@ -1,3 +1,4 @@
1
+ import { compareStrings } from '../shared/strings.js';
1
2
  /**
2
3
  * Visits a node tree in deterministic parent-before-children order.
3
4
  */
@@ -8,8 +9,9 @@ export function visitUINodes(root, visitor) {
8
9
  }
9
10
  if (!root.instance)
10
11
  return;
11
- for (const slotName of Object.keys(root.instance.slots).sort()) {
12
- for (const child of root.instance.slots[slotName]) {
12
+ // Slots are visited in sorted name order for deterministic traversal.
13
+ for (const [, children] of Object.entries(root.instance.slots).sort(([a], [b]) => compareStrings(a, b))) {
14
+ for (const child of children) {
13
15
  visitUINodes(child, visitor);
14
16
  }
15
17
  }
@@ -27,8 +29,8 @@ export function findUINode(root, id) {
27
29
  }
28
30
  if (!root.instance)
29
31
  return undefined;
30
- for (const slotName of Object.keys(root.instance.slots).sort()) {
31
- for (const child of root.instance.slots[slotName]) {
32
+ for (const [, children] of Object.entries(root.instance.slots).sort(([a], [b]) => compareStrings(a, b))) {
33
+ for (const child of children) {
32
34
  const match = findUINode(child, id);
33
35
  if (match)
34
36
  return match;