@kurot/ui-runtime 0.1.0 → 0.2.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 (76) hide show
  1. package/README.md +24 -4
  2. package/dist/kurot/runtime/applyRuntimeProperty.d.ts +8 -0
  3. package/dist/kurot/runtime/applyRuntimeProperty.d.ts.map +1 -0
  4. package/dist/kurot/runtime/applyRuntimeProperty.js +18 -0
  5. package/dist/kurot/runtime/applyRuntimeProperty.js.map +1 -0
  6. package/dist/kurot/runtime/builtins/applyComponentProperties.d.ts.map +1 -0
  7. package/dist/kurot/runtime/builtins/applyComponentProperties.js +114 -0
  8. package/dist/kurot/runtime/builtins/applyComponentProperties.js.map +1 -0
  9. package/dist/kurot/runtime/builtins/applyContainerProperties.d.ts +7 -0
  10. package/dist/kurot/runtime/builtins/applyContainerProperties.d.ts.map +1 -0
  11. package/dist/kurot/runtime/builtins/applyContainerProperties.js +51 -0
  12. package/dist/kurot/runtime/builtins/applyContainerProperties.js.map +1 -0
  13. package/dist/kurot/runtime/builtins/applyControlProperties.d.ts +7 -0
  14. package/dist/kurot/runtime/builtins/applyControlProperties.d.ts.map +1 -0
  15. package/dist/kurot/runtime/builtins/applyControlProperties.js +39 -0
  16. package/dist/kurot/runtime/builtins/applyControlProperties.js.map +1 -0
  17. package/dist/kurot/runtime/builtins/applyDisplayProperties.d.ts.map +1 -0
  18. package/dist/kurot/runtime/{applyDisplayProperties.js → builtins/applyDisplayProperties.js} +1 -1
  19. package/dist/kurot/runtime/builtins/applyDisplayProperties.js.map +1 -0
  20. package/dist/kurot/runtime/builtins/applyTextProperties.d.ts +7 -0
  21. package/dist/kurot/runtime/builtins/applyTextProperties.d.ts.map +1 -0
  22. package/dist/kurot/runtime/builtins/applyTextProperties.js +77 -0
  23. package/dist/kurot/runtime/builtins/applyTextProperties.js.map +1 -0
  24. package/dist/kurot/runtime/{componentFactories.d.ts → builtins/componentFactories.d.ts} +1 -1
  25. package/dist/kurot/runtime/builtins/componentFactories.d.ts.map +1 -0
  26. package/dist/kurot/runtime/{componentFactories.js → builtins/componentFactories.js} +1 -1
  27. package/dist/kurot/runtime/builtins/componentFactories.js.map +1 -0
  28. package/dist/kurot/runtime/createKurotUI.d.ts.map +1 -1
  29. package/dist/kurot/runtime/createKurotUI.js +28 -51
  30. package/dist/kurot/runtime/createKurotUI.js.map +1 -1
  31. package/dist/kurot/runtime/descriptors/createLayout.d.ts.map +1 -0
  32. package/dist/kurot/runtime/{createLayout.js → descriptors/createLayout.js} +1 -1
  33. package/dist/kurot/runtime/descriptors/createLayout.js.map +1 -0
  34. package/dist/kurot/runtime/descriptors/createRectangle.d.ts.map +1 -0
  35. package/dist/kurot/runtime/{createRectangle.js → descriptors/createRectangle.js} +1 -1
  36. package/dist/kurot/runtime/descriptors/createRectangle.js.map +1 -0
  37. package/dist/kurot/runtime/index.d.ts +1 -1
  38. package/dist/kurot/runtime/index.d.ts.map +1 -1
  39. package/dist/kurot/runtime/materializeAppearance.d.ts +8 -0
  40. package/dist/kurot/runtime/materializeAppearance.d.ts.map +1 -0
  41. package/dist/kurot/runtime/materializeAppearance.js +83 -0
  42. package/dist/kurot/runtime/materializeAppearance.js.map +1 -0
  43. package/dist/kurot/runtime/materializeComponentInstance.d.ts +8 -0
  44. package/dist/kurot/runtime/materializeComponentInstance.d.ts.map +1 -0
  45. package/dist/kurot/runtime/materializeComponentInstance.js +110 -0
  46. package/dist/kurot/runtime/materializeComponentInstance.js.map +1 -0
  47. package/dist/kurot/runtime/materializeNode.d.ts +20 -0
  48. package/dist/kurot/runtime/materializeNode.d.ts.map +1 -0
  49. package/dist/kurot/runtime/materializeNode.js +77 -0
  50. package/dist/kurot/runtime/materializeNode.js.map +1 -0
  51. package/dist/kurot/runtime/resolvePropertyValue.d.ts +7 -0
  52. package/dist/kurot/runtime/resolvePropertyValue.d.ts.map +1 -0
  53. package/dist/kurot/runtime/resolvePropertyValue.js +41 -0
  54. package/dist/kurot/runtime/resolvePropertyValue.js.map +1 -0
  55. package/dist/kurot/runtime/states/createReusableComponentStateController.d.ts +7 -0
  56. package/dist/kurot/runtime/states/createReusableComponentStateController.d.ts.map +1 -0
  57. package/dist/kurot/runtime/states/createReusableComponentStateController.js +86 -0
  58. package/dist/kurot/runtime/states/createReusableComponentStateController.js.map +1 -0
  59. package/dist/kurot/runtime/types.d.ts +65 -5
  60. package/dist/kurot/runtime/types.d.ts.map +1 -1
  61. package/package.json +4 -4
  62. package/dist/kurot/runtime/applyComponentProperties.d.ts.map +0 -1
  63. package/dist/kurot/runtime/applyComponentProperties.js +0 -205
  64. package/dist/kurot/runtime/applyComponentProperties.js.map +0 -1
  65. package/dist/kurot/runtime/applyDisplayProperties.d.ts.map +0 -1
  66. package/dist/kurot/runtime/applyDisplayProperties.js.map +0 -1
  67. package/dist/kurot/runtime/componentFactories.d.ts.map +0 -1
  68. package/dist/kurot/runtime/componentFactories.js.map +0 -1
  69. package/dist/kurot/runtime/createLayout.d.ts.map +0 -1
  70. package/dist/kurot/runtime/createLayout.js.map +0 -1
  71. package/dist/kurot/runtime/createRectangle.d.ts.map +0 -1
  72. package/dist/kurot/runtime/createRectangle.js.map +0 -1
  73. /package/dist/kurot/runtime/{applyComponentProperties.d.ts → builtins/applyComponentProperties.d.ts} +0 -0
  74. /package/dist/kurot/runtime/{applyDisplayProperties.d.ts → builtins/applyDisplayProperties.d.ts} +0 -0
  75. /package/dist/kurot/runtime/{createLayout.d.ts → descriptors/createLayout.d.ts} +0 -0
  76. /package/dist/kurot/runtime/{createRectangle.d.ts → descriptors/createRectangle.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { BasicLayout, HorizontalLayout, LinearLayoutBase, TileLayout, VerticalLayout, } from '@kurot/ui';
2
- import { KurotUIRuntimeError } from './KurotUIRuntimeError.js';
2
+ import { KurotUIRuntimeError } from '../KurotUIRuntimeError.js';
3
3
  /**
4
4
  * Creates and configures a Kurot layout from a canonical layout descriptor.
5
5
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createLayout.js","sourceRoot":"","sources":["../../../../src/kurot/runtime/descriptors/createLayout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRectangle.d.ts","sourceRoot":"","sources":["../../../../src/kurot/runtime/descriptors/createRectangle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG5E;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAkB/E"}
@@ -1,5 +1,5 @@
1
1
  import { Rectangle } from '@kurot/core';
2
- import { KurotUIRuntimeError } from './KurotUIRuntimeError.js';
2
+ import { KurotUIRuntimeError } from '../KurotUIRuntimeError.js';
3
3
  /**
4
4
  * Converts a canonical rectangle object into a Kurot Rectangle instance.
5
5
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRectangle.js","sourceRoot":"","sources":["../../../../src/kurot/runtime/descriptors/createRectangle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAsB,EAAE,IAAY;IACnE,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,mBAAmB,CAC5B,mBAAmB,EACnB,uBAAuB,GAAG,qBAAqB,EAC/C,GAAG,IAAI,IAAI,GAAG,EAAE,CAChB,CAAC;QACH,CAAC;IACF,CAAC;IACD,OAAO,IAAI,SAAS,CACnB,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,EACxC,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,EACxC,wBAAwB,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,CAAC,EAC3D,wBAAwB,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,CAC7D,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAsB,EAAE,IAAY;IAC1D,IAAI,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,EAAE,8BAA8B,EAAE,IAAI,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAsB;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,aAAa,CAAC,KAAkC,EAAE,IAAY;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,EAAE,mCAAmC,EAAE,IAAI,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,wBAAwB,CAChC,KAAkC,EAClC,IAAY;IAEZ,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1C,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/B,MAAM,IAAI,mBAAmB,CAC5B,mBAAmB,EACnB,sCAAsC,EACtC,IAAI,CACJ,CAAC;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export { createKurotUI } from './createKurotUI.js';
2
2
  export { KurotUIRuntimeError } from './KurotUIRuntimeError.js';
3
- export type { CreateKurotUIOptions, KurotUIComponentAdapter, KurotUICreationResult, KurotUIRuntimeErrorCode, } from './types.js';
3
+ export type { CreateKurotUIOptions, KurotUIComponentAdapter, KurotUIResourceResolver, KurotUICreationResult, KurotUIRuntimeErrorCode, KurotUIStateController, } from './types.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kurot/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EACX,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,GACvB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kurot/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EACX,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACtB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { DisplayObject } from '@kurot/core';
2
+ import type { UINode } from '@kurot/ui-document';
3
+ import type { KurotUICreationContext } from './types.js';
4
+ /**
5
+ * Applies one reusable appearance asset as a native Kurot Skin.
6
+ */
7
+ export declare function applyAppearance(target: DisplayObject, node: UINode, hostIdentity: string, path: string, context: KurotUICreationContext): void;
8
+ //# sourceMappingURL=materializeAppearance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materializeAppearance.d.ts","sourceRoot":"","sources":["../../../src/kurot/runtime/materializeAppearance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAc,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAK7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD;;GAEG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,sBAAsB,GAC7B,IAAI,CAwBN"}
@@ -0,0 +1,83 @@
1
+ import { Component, SetProperty, Skin, State } from '@kurot/ui';
2
+ import { applyRuntimeProperty } from './applyRuntimeProperty.js';
3
+ import { materializeNode, qualifyNodeId } from './materializeNode.js';
4
+ import { KurotUIRuntimeError } from './KurotUIRuntimeError.js';
5
+ import { resolvePropertyValue } from './resolvePropertyValue.js';
6
+ /**
7
+ * Applies one reusable appearance asset as a native Kurot Skin.
8
+ */
9
+ export function applyAppearance(target, node, hostIdentity, path, context) {
10
+ if (!node.appearance)
11
+ return;
12
+ if (!(target instanceof Component)) {
13
+ throw new KurotUIRuntimeError('unsupported-appearance', `Runtime component "${node.type}" cannot host an appearance asset.`, `${path}.appearance`);
14
+ }
15
+ const appearance = requireAppearance(node.appearance.assetId, path, context);
16
+ const scope = `${hostIdentity}@appearance:${appearance.id}`;
17
+ const root = materializeNode(appearance.root, `$.assets[${JSON.stringify(appearance.id)}].root`, scope, context);
18
+ applyAppearanceVariant(node.appearance.variant, appearance, scope, context);
19
+ const skin = new Skin();
20
+ skin.elementsContent = [root];
21
+ exposeAppearanceNodes(skin, appearance.root, scope, context);
22
+ exposeParts(skin, appearance, scope, context);
23
+ skin.states = createStates(appearance, context);
24
+ target.skinName = skin;
25
+ }
26
+ function applyAppearanceVariant(name, appearance, scope, context) {
27
+ if (name === undefined)
28
+ return;
29
+ const definition = appearance.contract.variants[name];
30
+ if (!definition)
31
+ return;
32
+ const path = `$.assets[${JSON.stringify(appearance.id)}].contract.variants.${name}`;
33
+ for (let index = 0; index < definition.overrides.length; index++) {
34
+ const override = definition.overrides[index];
35
+ const identity = qualifyNodeId(scope, override.targetId);
36
+ const target = context.instances.get(identity);
37
+ const type = context.types.get(identity);
38
+ if (!target || !type)
39
+ continue;
40
+ applyRuntimeProperty(target, type, override.property, override.value, `${path}.overrides[${index}].value`, context);
41
+ }
42
+ }
43
+ function exposeAppearanceNodes(skin, node, scope, context) {
44
+ const target = context.instances.get(qualifyNodeId(scope, node.id));
45
+ if (target) {
46
+ setSkinValue(skin, node.id, target);
47
+ }
48
+ for (const child of node.children) {
49
+ exposeAppearanceNodes(skin, child, scope, context);
50
+ }
51
+ }
52
+ function exposeParts(skin, appearance, scope, context) {
53
+ const names = Object.keys(appearance.contract.parts).sort();
54
+ for (const name of names) {
55
+ const part = appearance.contract.parts[name];
56
+ const target = context.instances.get(qualifyNodeId(scope, part.nodeId));
57
+ if (target) {
58
+ setSkinValue(skin, name, target);
59
+ }
60
+ }
61
+ skin.skinParts = names;
62
+ }
63
+ function createStates(appearance, context) {
64
+ return Object.keys(appearance.contract.states)
65
+ .sort()
66
+ .map(name => {
67
+ const definition = appearance.contract.states[name];
68
+ const path = `$.assets[${JSON.stringify(appearance.id)}]`;
69
+ const overrides = definition.overrides.map((override, index) => new SetProperty(override.targetId, override.property, resolvePropertyValue(override.value, `${path}.contract.states.${name}.overrides[${index}].value`, context)));
70
+ return new State(name, overrides);
71
+ });
72
+ }
73
+ function requireAppearance(id, path, context) {
74
+ const appearance = context.assets.getAsset(id);
75
+ if (!appearance || appearance.assetKind !== 'appearance') {
76
+ throw new KurotUIRuntimeError('invalid-document', `Appearance asset "${id}" is unavailable.`, `${path}.appearance.assetId`);
77
+ }
78
+ return appearance;
79
+ }
80
+ function setSkinValue(skin, name, value) {
81
+ skin[name] = value;
82
+ }
83
+ //# sourceMappingURL=materializeAppearance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materializeAppearance.js","sourceRoot":"","sources":["../../../src/kurot/runtime/materializeAppearance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { DisplayObject } from '@kurot/core';
2
+ import type { UINode } from '@kurot/ui-document';
3
+ import type { KurotUICreationContext } from './types.js';
4
+ /**
5
+ * Materializes one reusable component reference and its instance-local changes.
6
+ */
7
+ export declare function materializeComponentInstance(node: UINode, path: string, parentScope: string, context: KurotUICreationContext): DisplayObject;
8
+ //# sourceMappingURL=materializeComponentInstance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materializeComponentInstance.d.ts","sourceRoot":"","sources":["../../../src/kurot/runtime/materializeComponentInstance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAIX,MAAM,EACN,MAAM,oBAAoB,CAAC;AAW5B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD;;GAEG;AACH,wBAAgB,4BAA4B,CAC3C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,sBAAsB,GAC7B,aAAa,CAoCf"}
@@ -0,0 +1,110 @@
1
+ import { applyRuntimeProperty } from './applyRuntimeProperty.js';
2
+ import { applyAppearance } from './materializeAppearance.js';
3
+ import { appendRuntimeChild, applyNodeProperties, materializeNode, qualifyNodeId, } from './materializeNode.js';
4
+ import { KurotUIRuntimeError } from './KurotUIRuntimeError.js';
5
+ import { createReusableComponentStateController } from './states/createReusableComponentStateController.js';
6
+ /**
7
+ * Materializes one reusable component reference and its instance-local changes.
8
+ */
9
+ export function materializeComponentInstance(node, path, parentScope, context) {
10
+ const specification = requireInstance(node);
11
+ const source = requireComponentAsset(specification, path, context);
12
+ const identity = qualifyNodeId(parentScope, node.id);
13
+ const sourcePath = `$.assets[${JSON.stringify(source.id)}].root`;
14
+ const root = materializeNode(source.root, sourcePath, identity, context);
15
+ context.instances.set(identity, root);
16
+ context.types.set(identity, node.type);
17
+ applyVariant(specification, source.contract, identity, path, context);
18
+ applyParameters(specification, source.contract, identity, path, context);
19
+ applyOverrides(specification, source.contract, identity, path, context);
20
+ projectSlots(specification, source, identity, parentScope, path, context);
21
+ applyNodeProperties(root, node, path, context);
22
+ if (node.appearance) {
23
+ applyAppearance(root, node, identity, path, context);
24
+ }
25
+ if (Object.keys(source.contract.states).length > 0) {
26
+ context.stateControllers.set(identity, createReusableComponentStateController(source.contract, identity, `$.assets[${JSON.stringify(source.id)}].contract`, context));
27
+ }
28
+ return root;
29
+ }
30
+ function applyVariant(instance, contract, scope, path, context) {
31
+ if (!instance.variant)
32
+ return;
33
+ const variant = contract.variants[instance.variant];
34
+ if (!variant)
35
+ return;
36
+ for (let index = 0; index < variant.overrides.length; index++) {
37
+ const override = variant.overrides[index];
38
+ applyScopedProperty(scope, override.targetId, override.property, override.value, `${path}.instance.variant`, context);
39
+ }
40
+ }
41
+ function applyParameters(instance, contract, scope, path, context) {
42
+ for (const name of Object.keys(contract.parameters).sort()) {
43
+ const definition = contract.parameters[name];
44
+ const value = instance.parameters[name] ?? definition.defaultValue;
45
+ if (value === undefined)
46
+ continue;
47
+ for (const binding of definition.bindings ?? []) {
48
+ applyScopedProperty(scope, binding.targetId, binding.property, value, `${path}.instance.parameters.${name}`, context);
49
+ }
50
+ }
51
+ }
52
+ function applyOverrides(instance, contract, scope, path, context) {
53
+ for (let index = 0; index < instance.overrides.length; index++) {
54
+ const override = instance.overrides[index];
55
+ const part = contract.parts[override.part];
56
+ if (!part)
57
+ continue;
58
+ applyScopedProperty(scope, part.nodeId, override.property, override.value, `${path}.instance.overrides[${index}].value`, context);
59
+ }
60
+ }
61
+ function projectSlots(instance, source, componentScope, parentScope, path, context) {
62
+ for (const name of Object.keys(instance.slots).sort()) {
63
+ const slot = source.contract.slots[name];
64
+ if (!slot)
65
+ continue;
66
+ const target = context.instances.get(qualifyNodeId(componentScope, slot.nodeId));
67
+ const targetNode = findNode(source.root, slot.nodeId);
68
+ if (!target || !targetNode)
69
+ continue;
70
+ const adapter = context.adapters[targetNode.type];
71
+ const nodes = instance.slots[name];
72
+ for (let index = 0; index < nodes.length; index++) {
73
+ const childPath = `${path}.instance.slots.${name}[${index}]`;
74
+ const child = materializeNode(nodes[index], childPath, parentScope, context);
75
+ appendRuntimeChild(target, child, targetNode.type, childPath, adapter);
76
+ }
77
+ }
78
+ }
79
+ function applyScopedProperty(scope, targetId, property, value, path, context) {
80
+ const target = context.instances.get(qualifyNodeId(scope, targetId));
81
+ if (!target)
82
+ return;
83
+ const type = context.types.get(qualifyNodeId(scope, targetId));
84
+ if (!type)
85
+ return;
86
+ applyRuntimeProperty(target, type, property, value, path, context);
87
+ }
88
+ function requireComponentAsset(instance, path, context) {
89
+ const source = context.assets.getAsset(instance.source.assetId);
90
+ if (!source || source.assetKind !== 'component') {
91
+ throw new KurotUIRuntimeError('invalid-document', `Reusable component asset "${instance.source.assetId}" is unavailable.`, `${path}.instance.source.assetId`);
92
+ }
93
+ return source;
94
+ }
95
+ function requireInstance(node) {
96
+ if (node.instance)
97
+ return node.instance;
98
+ throw new Error('Expected reusable component instance.');
99
+ }
100
+ function findNode(root, id) {
101
+ if (root.id === id)
102
+ return root;
103
+ for (const child of root.children) {
104
+ const match = findNode(child, id);
105
+ if (match)
106
+ return match;
107
+ }
108
+ return undefined;
109
+ }
110
+ //# sourceMappingURL=materializeComponentInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materializeComponentInstance.js","sourceRoot":"","sources":["../../../src/kurot/runtime/materializeComponentInstance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { DisplayObject } from '@kurot/core';
2
+ import type { UINode } from '@kurot/ui-document';
3
+ import type { KurotUIComponentAdapter, KurotUICreationContext } from './types.js';
4
+ /**
5
+ * Materializes one semantic node, including nested reusable instances.
6
+ */
7
+ export declare function materializeNode(node: UINode, path: string, scope: string, context: KurotUICreationContext): DisplayObject;
8
+ /**
9
+ * Returns a collision-free runtime identity for a node inside a component scope.
10
+ */
11
+ export declare function qualifyNodeId(scope: string, nodeId: string): string;
12
+ /**
13
+ * Applies the node's explicitly authored properties in stable name order.
14
+ */
15
+ export declare function applyNodeProperties(target: DisplayObject, node: UINode, path: string, context: KurotUICreationContext): void;
16
+ /**
17
+ * Attaches a materialized child through a built-in or project adapter contract.
18
+ */
19
+ export declare function appendRuntimeChild(parent: DisplayObject, child: DisplayObject, parentType: string, path: string, adapter?: KurotUIComponentAdapter): void;
20
+ //# sourceMappingURL=materializeNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materializeNode.d.ts","sourceRoot":"","sources":["../../../src/kurot/runtime/materializeNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAMjD,OAAO,KAAK,EACX,uBAAuB,EACvB,sBAAsB,EACtB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,eAAe,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,sBAAsB,GAC7B,aAAa,CAmBf;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,sBAAsB,GAC7B,IAAI,CAWN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,uBAAuB,GAC/B,IAAI,CAcN"}
@@ -0,0 +1,77 @@
1
+ import { Group } from '@kurot/ui';
2
+ import { applyRuntimeProperty } from './applyRuntimeProperty.js';
3
+ import { applyAppearance } from './materializeAppearance.js';
4
+ import { materializeComponentInstance } from './materializeComponentInstance.js';
5
+ import { getBuiltInFactory } from './builtins/componentFactories.js';
6
+ import { KurotUIRuntimeError } from './KurotUIRuntimeError.js';
7
+ /**
8
+ * Materializes one semantic node, including nested reusable instances.
9
+ */
10
+ export function materializeNode(node, path, scope, context) {
11
+ if (node.instance) {
12
+ return materializeComponentInstance(node, path, scope, context);
13
+ }
14
+ const identity = qualifyNodeId(scope, node.id);
15
+ const adapter = context.adapters[node.type];
16
+ const instance = createInstance(node, path, adapter);
17
+ registerInstance(identity, instance, node.type, path, context);
18
+ applyNodeProperties(instance, node, path, context);
19
+ for (let index = 0; index < node.children.length; index++) {
20
+ const childPath = `${path}.children[${index}]`;
21
+ const child = materializeNode(node.children[index], childPath, scope, context);
22
+ appendRuntimeChild(instance, child, node.type, childPath, adapter);
23
+ }
24
+ if (node.appearance) {
25
+ applyAppearance(instance, node, identity, path, context);
26
+ }
27
+ return instance;
28
+ }
29
+ /**
30
+ * Returns a collision-free runtime identity for a node inside a component scope.
31
+ */
32
+ export function qualifyNodeId(scope, nodeId) {
33
+ return scope ? `${scope}/${nodeId}` : nodeId;
34
+ }
35
+ /**
36
+ * Applies the node's explicitly authored properties in stable name order.
37
+ */
38
+ export function applyNodeProperties(target, node, path, context) {
39
+ for (const name of Object.keys(node.properties).sort()) {
40
+ applyRuntimeProperty(target, node.type, name, node.properties[name], `${path}.properties.${name}`, context);
41
+ }
42
+ }
43
+ /**
44
+ * Attaches a materialized child through a built-in or project adapter contract.
45
+ */
46
+ export function appendRuntimeChild(parent, child, parentType, path, adapter) {
47
+ if (adapter?.appendChild) {
48
+ adapter.appendChild(parent, child, path);
49
+ return;
50
+ }
51
+ if (parent instanceof Group) {
52
+ parent.addChild(child);
53
+ return;
54
+ }
55
+ throw new KurotUIRuntimeError('unsupported-children', `Runtime component "${parentType}" cannot attach document children.`, path);
56
+ }
57
+ function createInstance(node, path, adapter) {
58
+ const factory = adapter?.create ?? getBuiltInFactory(node.type);
59
+ if (!factory) {
60
+ throw new KurotUIRuntimeError('unsupported-component', `No runtime adapter is registered for component type "${node.type}".`, `${path}.type`);
61
+ }
62
+ try {
63
+ return factory();
64
+ }
65
+ catch (error) {
66
+ const detail = error instanceof Error ? ` ${error.message}` : '';
67
+ throw new KurotUIRuntimeError('component-construction-failed', `Failed to construct component type "${node.type}".${detail}`, `${path}.type`);
68
+ }
69
+ }
70
+ function registerInstance(identity, instance, type, path, context) {
71
+ if (context.instances.has(identity)) {
72
+ throw new KurotUIRuntimeError('invalid-document', `Runtime node identity "${identity}" is duplicated.`, `${path}.id`);
73
+ }
74
+ context.instances.set(identity, instance);
75
+ context.types.set(identity, type);
76
+ }
77
+ //# sourceMappingURL=materializeNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materializeNode.js","sourceRoot":"","sources":["../../../src/kurot/runtime/materializeNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { UIPropertyValue } from '@kurot/ui-document';
2
+ import type { KurotUICreationContext } from './types.js';
3
+ /**
4
+ * Resolves nested token and resource references into runtime property values.
5
+ */
6
+ export declare function resolvePropertyValue(value: UIPropertyValue, path: string, context: KurotUICreationContext): UIPropertyValue;
7
+ //# sourceMappingURL=resolvePropertyValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvePropertyValue.d.ts","sourceRoot":"","sources":["../../../src/kurot/runtime/resolvePropertyValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGX,eAAe,EAEf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,sBAAsB,GAC7B,eAAe,CAsBjB"}
@@ -0,0 +1,41 @@
1
+ import { KurotUIRuntimeError } from './KurotUIRuntimeError.js';
2
+ /**
3
+ * Resolves nested token and resource references into runtime property values.
4
+ */
5
+ export function resolvePropertyValue(value, path, context) {
6
+ if (isPropertyArray(value)) {
7
+ return value.map((item, index) => resolvePropertyValue(item, `${path}[${index}]`, context));
8
+ }
9
+ if (typeof value !== 'object')
10
+ return value;
11
+ if (isTokenReference(value)) {
12
+ const definition = context.assets.getToken(value.key);
13
+ if (!definition)
14
+ throw unresolvedReference('design token', value.key, path);
15
+ return resolvePropertyValue(definition.value, path, context);
16
+ }
17
+ if (isResourceReference(value)) {
18
+ const definition = context.assets.getResource(value.key);
19
+ if (!definition)
20
+ throw unresolvedReference('resource', value.key, path);
21
+ return context.resolveResource(value, definition);
22
+ }
23
+ const resolved = {};
24
+ for (const key of Object.keys(value).sort()) {
25
+ resolved[key] = resolvePropertyValue(value[key], `${path}.${key}`, context);
26
+ }
27
+ return resolved;
28
+ }
29
+ function isPropertyArray(value) {
30
+ return Array.isArray(value);
31
+ }
32
+ function isTokenReference(value) {
33
+ return value.kind === 'token' && typeof value.key === 'string';
34
+ }
35
+ function isResourceReference(value) {
36
+ return value.kind === 'resource' && typeof value.key === 'string';
37
+ }
38
+ function unresolvedReference(kind, key, path) {
39
+ return new KurotUIRuntimeError('invalid-property', `Cannot resolve UI ${kind} "${key}".`, path);
40
+ }
41
+ //# sourceMappingURL=resolvePropertyValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvePropertyValue.js","sourceRoot":"","sources":["../../../src/kurot/runtime/resolvePropertyValue.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D;;GAEG;AACH,MAAM,UAAU,oBAAoB,CACnC,KAAsB,EACtB,IAAY,EACZ,OAA+B;IAE/B,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAChC,oBAAoB,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,OAAO,CAAC,CACxD,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU;YAAE,MAAM,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5E,OAAO,oBAAoB,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU;YAAE,MAAM,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxE,OAAO,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,QAAQ,GAAoC,EAAE,CAAC;IACrD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7C,QAAQ,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CACvB,KAAsB;IAEtB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAuB;IAChD,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC;AAChE,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAuB;IACnD,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC;AACnE,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,GAAW,EAAE,IAAY;IACnE,OAAO,IAAI,mBAAmB,CAC7B,kBAAkB,EAClB,qBAAqB,IAAI,KAAK,GAAG,IAAI,EACrC,IAAI,CACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { UIAssetContract } from '@kurot/ui-document';
2
+ import type { KurotUICreationContext, KurotUIStateController } from '../types.js';
3
+ /**
4
+ * Creates a state controller over one fully initialized reusable instance.
5
+ */
6
+ export declare function createReusableComponentStateController(contract: UIAssetContract, scope: string, contractPath: string, context: KurotUICreationContext): KurotUIStateController;
7
+ //# sourceMappingURL=createReusableComponentStateController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createReusableComponentStateController.d.ts","sourceRoot":"","sources":["../../../../src/kurot/runtime/states/createReusableComponentStateController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,oBAAoB,CAAC;AAI9E,OAAO,KAAK,EACX,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,aAAa,CAAC;AAQrB;;GAEG;AACH,wBAAgB,sCAAsC,CACrD,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,sBAAsB,GAC7B,sBAAsB,CAuDxB"}
@@ -0,0 +1,86 @@
1
+ import { applyRuntimeProperty } from '../applyRuntimeProperty.js';
2
+ import { KurotUIRuntimeError } from '../KurotUIRuntimeError.js';
3
+ import { qualifyNodeId } from '../materializeNode.js';
4
+ /**
5
+ * Creates a state controller over one fully initialized reusable instance.
6
+ */
7
+ export function createReusableComponentStateController(contract, scope, contractPath, context) {
8
+ const states = Object.keys(contract.states).sort();
9
+ let currentState;
10
+ let backups = [];
11
+ return {
12
+ get currentState() {
13
+ return currentState;
14
+ },
15
+ states: Object.freeze(states),
16
+ setState(name) {
17
+ const definition = contract.states[name];
18
+ if (!definition) {
19
+ throw new KurotUIRuntimeError('unknown-state', `Reusable component state "${name}" is not declared.`, `${contractPath}.states`);
20
+ }
21
+ if (currentState === name)
22
+ return;
23
+ const previousState = currentState;
24
+ const previousDefinition = previousState
25
+ ? contract.states[previousState]
26
+ : undefined;
27
+ restoreProperties(backups);
28
+ backups = [];
29
+ currentState = undefined;
30
+ try {
31
+ backups = applyStateOverrides(definition.overrides, scope, `${contractPath}.states.${name}`, context);
32
+ currentState = name;
33
+ }
34
+ catch (error) {
35
+ if (previousState && previousDefinition) {
36
+ backups = applyStateOverrides(previousDefinition.overrides, scope, `${contractPath}.states.${previousState}`, context);
37
+ currentState = previousState;
38
+ }
39
+ throw error;
40
+ }
41
+ },
42
+ clearState() {
43
+ if (currentState === undefined)
44
+ return;
45
+ restoreProperties(backups);
46
+ backups = [];
47
+ currentState = undefined;
48
+ },
49
+ };
50
+ }
51
+ function applyStateOverrides(overrides, scope, path, context) {
52
+ const backups = new Map();
53
+ try {
54
+ for (let index = 0; index < overrides.length; index++) {
55
+ const override = overrides[index];
56
+ const identity = qualifyNodeId(scope, override.targetId);
57
+ const target = context.instances.get(identity);
58
+ const type = context.types.get(identity);
59
+ if (!target || !type)
60
+ continue;
61
+ const key = `${identity}\u0000${override.property}`;
62
+ if (!backups.has(key)) {
63
+ backups.set(key, {
64
+ property: override.property,
65
+ target,
66
+ value: Reflect.get(target, override.property),
67
+ });
68
+ }
69
+ applyRuntimeProperty(target, type, override.property, override.value, `${path}.overrides[${index}].value`, context);
70
+ }
71
+ }
72
+ catch (error) {
73
+ restoreProperties([...backups.values()]);
74
+ throw error;
75
+ }
76
+ return [...backups.values()];
77
+ }
78
+ function restoreProperties(backups) {
79
+ for (let index = backups.length - 1; index >= 0; index--) {
80
+ const backup = backups[index];
81
+ if (!backup)
82
+ continue;
83
+ Reflect.set(backup.target, backup.property, backup.value);
84
+ }
85
+ }
86
+ //# sourceMappingURL=createReusableComponentStateController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createReusableComponentStateController.js","sourceRoot":"","sources":["../../../../src/kurot/runtime/states/createReusableComponentStateController.ts"],"names":[],"mappings":"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"}