@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.
- package/README.md +11 -4
- package/dist/kurot/assets/UIAssetRegistry.d.ts.map +1 -1
- package/dist/kurot/assets/UIAssetRegistry.js +4 -15
- package/dist/kurot/assets/UIAssetRegistry.js.map +1 -1
- package/dist/kurot/assets/validateUIAssetInstances.d.ts.map +1 -1
- package/dist/kurot/assets/validateUIAssetInstances.js +16 -13
- package/dist/kurot/assets/validateUIAssetInstances.js.map +1 -1
- package/dist/kurot/assets/validateUIAssetOverrides.d.ts.map +1 -1
- package/dist/kurot/assets/validateUIAssetOverrides.js +81 -12
- package/dist/kurot/assets/validateUIAssetOverrides.js.map +1 -1
- package/dist/kurot/catalog/kurot-ui-foundation.d.ts.map +1 -1
- package/dist/kurot/catalog/kurot-ui-foundation.js +41 -0
- package/dist/kurot/catalog/kurot-ui-foundation.js.map +1 -1
- package/dist/kurot/document/create.d.ts.map +1 -1
- package/dist/kurot/document/create.js +1 -5
- package/dist/kurot/document/create.js.map +1 -1
- package/dist/kurot/document/createReferences.d.ts.map +1 -1
- package/dist/kurot/document/createReferences.js +1 -5
- package/dist/kurot/document/createReferences.js.map +1 -1
- package/dist/kurot/document/query.d.ts.map +1 -1
- package/dist/kurot/document/query.js +6 -4
- package/dist/kurot/document/query.js.map +1 -1
- package/dist/kurot/editing/UIOperation.d.ts +2 -1
- package/dist/kurot/editing/UIOperation.d.ts.map +1 -1
- package/dist/kurot/editing/diffUIDocuments.d.ts.map +1 -1
- package/dist/kurot/editing/diffUIDocuments.js +1 -7
- package/dist/kurot/editing/diffUIDocuments.js.map +1 -1
- package/dist/kurot/model/UIAssetContract.d.ts +2 -1
- package/dist/kurot/model/UIAssetContract.d.ts.map +1 -1
- package/dist/kurot/schema/UIComponentDefinition.d.ts +52 -2
- package/dist/kurot/schema/UIComponentDefinition.d.ts.map +1 -1
- package/dist/kurot/schema/UIComponentDefinition.js +7 -1
- package/dist/kurot/schema/UIComponentDefinition.js.map +1 -1
- package/dist/kurot/schema/UIComponentRegistry.d.ts.map +1 -1
- package/dist/kurot/schema/UIComponentRegistry.js +42 -10
- package/dist/kurot/schema/UIComponentRegistry.js.map +1 -1
- package/dist/kurot/schema/index.d.ts +2 -1
- package/dist/kurot/schema/index.d.ts.map +1 -1
- package/dist/kurot/schema/index.js +1 -0
- package/dist/kurot/schema/index.js.map +1 -1
- package/dist/kurot/schema/isUIPropertyDefinitionAssignable.d.ts +6 -0
- package/dist/kurot/schema/isUIPropertyDefinitionAssignable.d.ts.map +1 -0
- package/dist/kurot/schema/isUIPropertyDefinitionAssignable.js +50 -0
- package/dist/kurot/schema/isUIPropertyDefinitionAssignable.js.map +1 -0
- package/dist/kurot/schema/matchesUIPropertyDefinition.d.ts.map +1 -1
- package/dist/kurot/schema/matchesUIPropertyDefinition.js +2 -3
- package/dist/kurot/schema/matchesUIPropertyDefinition.js.map +1 -1
- package/dist/kurot/schema/validateComponentDefinition.d.ts.map +1 -1
- package/dist/kurot/schema/validateComponentDefinition.js +71 -14
- package/dist/kurot/schema/validateComponentDefinition.js.map +1 -1
- package/dist/kurot/schema/validateUIDocumentComponents.d.ts.map +1 -1
- package/dist/kurot/schema/validateUIDocumentComponents.js +10 -44
- package/dist/kurot/schema/validateUIDocumentComponents.js.map +1 -1
- package/dist/kurot/serialization/UIDocumentParseError.d.ts.map +1 -1
- package/dist/kurot/serialization/UIDocumentParseError.js +2 -2
- package/dist/kurot/serialization/UIDocumentParseError.js.map +1 -1
- package/dist/kurot/serialization/UIDocumentValidationError.d.ts.map +1 -1
- package/dist/kurot/serialization/UIDocumentValidationError.js +2 -2
- package/dist/kurot/serialization/UIDocumentValidationError.js.map +1 -1
- package/dist/kurot/serialization/first-diagnostic-message.d.ts +6 -0
- package/dist/kurot/serialization/first-diagnostic-message.d.ts.map +1 -0
- package/dist/kurot/serialization/first-diagnostic-message.js +7 -0
- package/dist/kurot/serialization/first-diagnostic-message.js.map +1 -0
- package/dist/kurot/serialization/json.d.ts.map +1 -1
- package/dist/kurot/serialization/json.js +10 -15
- package/dist/kurot/serialization/json.js.map +1 -1
- package/dist/kurot/shared/strings.d.ts +18 -0
- package/dist/kurot/shared/strings.d.ts.map +1 -0
- package/dist/kurot/shared/strings.js +32 -0
- package/dist/kurot/shared/strings.js.map +1 -0
- package/dist/kurot/validation/UIDiagnostic.d.ts +1 -1
- package/dist/kurot/validation/UIDiagnostic.d.ts.map +1 -1
- package/dist/kurot/validation/skinPartNames.d.ts +6 -0
- package/dist/kurot/validation/skinPartNames.d.ts.map +1 -0
- package/dist/kurot/validation/skinPartNames.js +50 -0
- package/dist/kurot/validation/skinPartNames.js.map +1 -0
- package/dist/kurot/validation/validateUIAssetContract.d.ts.map +1 -1
- package/dist/kurot/validation/validateUIAssetContract.js +34 -22
- package/dist/kurot/validation/validateUIAssetContract.js.map +1 -1
- package/dist/kurot/validation/validateUIAssetModes.d.ts.map +1 -1
- package/dist/kurot/validation/validateUIAssetModes.js +4 -10
- package/dist/kurot/validation/validateUIAssetModes.js.map +1 -1
- package/dist/kurot/validation/validateUIDocument.d.ts.map +1 -1
- package/dist/kurot/validation/validateUIDocument.js +12 -8
- package/dist/kurot/validation/validateUIDocument.js.map +1 -1
- package/dist/kurot/validation/validationHelpers.d.ts +4 -0
- package/dist/kurot/validation/validationHelpers.d.ts.map +1 -1
- package/dist/kurot/validation/validationHelpers.js +11 -0
- package/dist/kurot/validation/validationHelpers.js.map +1 -1
- 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.
|
|
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
|
-
-
|
|
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.
|
|
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;
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAMA,OAAO,EACN,qBAAqB,EACrB,iBAAiB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAE1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;
|
|
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;
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 <
|
|
97
|
-
const override =
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
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;
|
|
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 ||
|
|
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
|
|
55
|
+
if (!definition) {
|
|
56
56
|
continue;
|
|
57
|
-
|
|
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 &&
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
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;
|
|
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":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EACN,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,GACvB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACN,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,qBAAqB,EACrB,wBAAwB,GACxB,MAAM,4CAA4C,CAAC;AAEpD,MAAM,WAAW,GAAqC;IACrD;QACC,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,gBAAgB;QAC7B,WAAW,EAAE,gEAAgE;QAC7E,MAAM,EAAE,CAAC,KAAK,CAAC;QACf,UAAU,EAAE,yBAAyB;QACrC,sBAAsB,EAAE,KAAK;KAC7B;IACD;QACC,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,qBAAqB;QAC9B,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,oEAAoE;QACjF,UAAU,EAAE,uBAAuB;KACnC;IACD;QACC,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,iBAAiB;QAC1B,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE,gDAAgD;QAC7D,UAAU,EAAE;YACX,MAAM,EAAE,CAAC,UAAU,CAAC;SACpB;QACD,UAAU,EAAE,oBAAoB;KAChC;IACD;QACC,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,qDAAqD;QAClE,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE,gBAAgB;KAC5B;IACD;QACC,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,yCAAyC;QACtD,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,gBAAgB;KAC5B;IACD;QACC,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,gFAAgF;QAC7F,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,UAAU,EAAE,wBAAwB;KACpC;IACD;QACC,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,+DAA+D;QAC5E,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,gBAAgB;KAC5B;IACD;QACC,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,wDAAwD;QACrE,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,eAAe;KAC3B;IACD;QACC,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,iEAAiE;QAC9E,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE;YACX,KAAK,EAAE;gBACN,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAClC,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;aACnC;YACD,MAAM,EAAE;gBACP,UAAU;gBACV,qBAAqB;gBACrB,MAAM;gBACN,iBAAiB;gBACjB,IAAI;gBACJ,eAAe;aACf;SACD;QACD,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,UAAU,EAAE,iBAAiB;KAC7B;IACD;QACC,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,8DAA8D;QAC3E,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,wBAAwB;KACpC;IACD;QACC,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE;YACX,KAAK,EAAE;gBACN,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBACnC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE;aAChD;YACD,MAAM,EAAE,CAAC,UAAU,CAAC;SACpB;QACD,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,UAAU,EAAE,uBAAuB;KACnC;IACD;QACC,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,+DAA+D;QAC5E,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE;YACX,KAAK,EAAE;gBACN,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBACpC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE;aACzD;YACD,MAAM,EAAE;gBACP,UAAU;gBACV,oBAAoB;gBACpB,QAAQ;gBACR,kBAAkB;aAClB;SACD;QACD,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,UAAU,EAAE,qBAAqB;KACjC;CACD,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAA6B;IACtE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACtC,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mBAAmB,UAAU,CAAC,IAAI,0BAA0B,CAAC,CAAC;QAC/E,CAAC;IACF,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACtC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,+BAA+B;IAC9C,MAAM,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC3C,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACpC,OAAO,QAAQ,CAAC;AACjB,CAAC"}
|
|
@@ -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;
|
|
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;
|
|
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;
|
|
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":"
|
|
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;
|
|
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
|
-
|
|
12
|
-
|
|
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
|
|
31
|
-
for (const child of
|
|
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;
|