@kurot/ui-runtime 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -4
- package/dist/kurot/runtime/applyRuntimeProperty.d.ts +8 -0
- package/dist/kurot/runtime/applyRuntimeProperty.d.ts.map +1 -0
- package/dist/kurot/runtime/applyRuntimeProperty.js +18 -0
- package/dist/kurot/runtime/applyRuntimeProperty.js.map +1 -0
- package/dist/kurot/runtime/builtins/applyComponentProperties.d.ts.map +1 -0
- package/dist/kurot/runtime/builtins/applyComponentProperties.js +114 -0
- package/dist/kurot/runtime/builtins/applyComponentProperties.js.map +1 -0
- package/dist/kurot/runtime/builtins/applyContainerProperties.d.ts +7 -0
- package/dist/kurot/runtime/builtins/applyContainerProperties.d.ts.map +1 -0
- package/dist/kurot/runtime/builtins/applyContainerProperties.js +51 -0
- package/dist/kurot/runtime/builtins/applyContainerProperties.js.map +1 -0
- package/dist/kurot/runtime/builtins/applyControlProperties.d.ts +7 -0
- package/dist/kurot/runtime/builtins/applyControlProperties.d.ts.map +1 -0
- package/dist/kurot/runtime/builtins/applyControlProperties.js +39 -0
- package/dist/kurot/runtime/builtins/applyControlProperties.js.map +1 -0
- package/dist/kurot/runtime/builtins/applyDisplayProperties.d.ts.map +1 -0
- package/dist/kurot/runtime/{applyDisplayProperties.js → builtins/applyDisplayProperties.js} +1 -1
- package/dist/kurot/runtime/builtins/applyDisplayProperties.js.map +1 -0
- package/dist/kurot/runtime/builtins/applyTextProperties.d.ts +7 -0
- package/dist/kurot/runtime/builtins/applyTextProperties.d.ts.map +1 -0
- package/dist/kurot/runtime/builtins/applyTextProperties.js +77 -0
- package/dist/kurot/runtime/builtins/applyTextProperties.js.map +1 -0
- package/dist/kurot/runtime/{componentFactories.d.ts → builtins/componentFactories.d.ts} +1 -1
- package/dist/kurot/runtime/builtins/componentFactories.d.ts.map +1 -0
- package/dist/kurot/runtime/{componentFactories.js → builtins/componentFactories.js} +1 -1
- package/dist/kurot/runtime/builtins/componentFactories.js.map +1 -0
- package/dist/kurot/runtime/createKurotUI.d.ts.map +1 -1
- package/dist/kurot/runtime/createKurotUI.js +24 -54
- package/dist/kurot/runtime/createKurotUI.js.map +1 -1
- package/dist/kurot/runtime/descriptors/createLayout.d.ts.map +1 -0
- package/dist/kurot/runtime/{createLayout.js → descriptors/createLayout.js} +1 -1
- package/dist/kurot/runtime/descriptors/createLayout.js.map +1 -0
- package/dist/kurot/runtime/descriptors/createRectangle.d.ts.map +1 -0
- package/dist/kurot/runtime/{createRectangle.js → descriptors/createRectangle.js} +1 -1
- package/dist/kurot/runtime/descriptors/createRectangle.js.map +1 -0
- package/dist/kurot/runtime/index.d.ts +1 -1
- package/dist/kurot/runtime/index.d.ts.map +1 -1
- package/dist/kurot/runtime/materializeAppearance.d.ts +8 -0
- package/dist/kurot/runtime/materializeAppearance.d.ts.map +1 -0
- package/dist/kurot/runtime/materializeAppearance.js +62 -0
- package/dist/kurot/runtime/materializeAppearance.js.map +1 -0
- package/dist/kurot/runtime/materializeComponentInstance.d.ts +8 -0
- package/dist/kurot/runtime/materializeComponentInstance.d.ts.map +1 -0
- package/dist/kurot/runtime/materializeComponentInstance.js +105 -0
- package/dist/kurot/runtime/materializeComponentInstance.js.map +1 -0
- package/dist/kurot/runtime/materializeNode.d.ts +20 -0
- package/dist/kurot/runtime/materializeNode.d.ts.map +1 -0
- package/dist/kurot/runtime/materializeNode.js +76 -0
- package/dist/kurot/runtime/materializeNode.js.map +1 -0
- package/dist/kurot/runtime/resolvePropertyValue.d.ts +7 -0
- package/dist/kurot/runtime/resolvePropertyValue.d.ts.map +1 -0
- package/dist/kurot/runtime/resolvePropertyValue.js +41 -0
- package/dist/kurot/runtime/resolvePropertyValue.js.map +1 -0
- package/dist/kurot/runtime/types.d.ts +36 -5
- package/dist/kurot/runtime/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/kurot/runtime/applyComponentProperties.d.ts.map +0 -1
- package/dist/kurot/runtime/applyComponentProperties.js +0 -205
- package/dist/kurot/runtime/applyComponentProperties.js.map +0 -1
- package/dist/kurot/runtime/applyDisplayProperties.d.ts.map +0 -1
- package/dist/kurot/runtime/applyDisplayProperties.js.map +0 -1
- package/dist/kurot/runtime/componentFactories.d.ts.map +0 -1
- package/dist/kurot/runtime/componentFactories.js.map +0 -1
- package/dist/kurot/runtime/createLayout.d.ts.map +0 -1
- package/dist/kurot/runtime/createLayout.js.map +0 -1
- package/dist/kurot/runtime/createRectangle.d.ts.map +0 -1
- package/dist/kurot/runtime/createRectangle.js.map +0 -1
- /package/dist/kurot/runtime/{applyComponentProperties.d.ts → builtins/applyComponentProperties.d.ts} +0 -0
- /package/dist/kurot/runtime/{applyDisplayProperties.d.ts → builtins/applyDisplayProperties.d.ts} +0 -0
- /package/dist/kurot/runtime/{createLayout.d.ts → descriptors/createLayout.d.ts} +0 -0
- /package/dist/kurot/runtime/{createRectangle.d.ts → descriptors/createRectangle.d.ts} +0 -0
|
@@ -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"}
|
|
@@ -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, } 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,GACvB,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;AAI7D,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,CAuBN"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Component, SetProperty, Skin, State } from '@kurot/ui';
|
|
2
|
+
import { materializeNode, qualifyNodeId } from './materializeNode.js';
|
|
3
|
+
import { KurotUIRuntimeError } from './KurotUIRuntimeError.js';
|
|
4
|
+
import { resolvePropertyValue } from './resolvePropertyValue.js';
|
|
5
|
+
/**
|
|
6
|
+
* Applies one reusable appearance asset as a native Kurot Skin.
|
|
7
|
+
*/
|
|
8
|
+
export function applyAppearance(target, node, hostIdentity, path, context) {
|
|
9
|
+
if (!node.appearance)
|
|
10
|
+
return;
|
|
11
|
+
if (!(target instanceof Component)) {
|
|
12
|
+
throw new KurotUIRuntimeError('unsupported-appearance', `Runtime component "${node.type}" cannot host an appearance asset.`, `${path}.appearance`);
|
|
13
|
+
}
|
|
14
|
+
const appearance = requireAppearance(node.appearance.assetId, path, context);
|
|
15
|
+
const scope = `${hostIdentity}@appearance:${appearance.id}`;
|
|
16
|
+
const root = materializeNode(appearance.root, `$.assets[${JSON.stringify(appearance.id)}].root`, scope, context);
|
|
17
|
+
const skin = new Skin();
|
|
18
|
+
skin.elementsContent = [root];
|
|
19
|
+
exposeAppearanceNodes(skin, appearance.root, scope, context);
|
|
20
|
+
exposeParts(skin, appearance, scope, context);
|
|
21
|
+
skin.states = createStates(appearance, context);
|
|
22
|
+
target.skinName = skin;
|
|
23
|
+
}
|
|
24
|
+
function exposeAppearanceNodes(skin, node, scope, context) {
|
|
25
|
+
const target = context.instances.get(qualifyNodeId(scope, node.id));
|
|
26
|
+
if (target)
|
|
27
|
+
setSkinValue(skin, node.id, target);
|
|
28
|
+
for (const child of node.children) {
|
|
29
|
+
exposeAppearanceNodes(skin, child, scope, context);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function exposeParts(skin, appearance, scope, context) {
|
|
33
|
+
const names = Object.keys(appearance.contract.parts).sort();
|
|
34
|
+
for (const name of names) {
|
|
35
|
+
const part = appearance.contract.parts[name];
|
|
36
|
+
const target = context.instances.get(qualifyNodeId(scope, part.nodeId));
|
|
37
|
+
if (target)
|
|
38
|
+
setSkinValue(skin, name, target);
|
|
39
|
+
}
|
|
40
|
+
skin.skinParts = names;
|
|
41
|
+
}
|
|
42
|
+
function createStates(appearance, context) {
|
|
43
|
+
return Object.keys(appearance.contract.states)
|
|
44
|
+
.sort()
|
|
45
|
+
.map(name => {
|
|
46
|
+
const definition = appearance.contract.states[name];
|
|
47
|
+
const path = `$.assets[${JSON.stringify(appearance.id)}]`;
|
|
48
|
+
const overrides = definition.overrides.map((override, index) => new SetProperty(override.targetId, override.property, resolvePropertyValue(override.value, `${path}.contract.states.${name}.overrides[${index}].value`, context)));
|
|
49
|
+
return new State(name, overrides);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function requireAppearance(id, path, context) {
|
|
53
|
+
const appearance = context.assets.getAsset(id);
|
|
54
|
+
if (!appearance || appearance.assetKind !== 'appearance') {
|
|
55
|
+
throw new KurotUIRuntimeError('invalid-document', `Appearance asset "${id}" is unavailable.`, `${path}.appearance.assetId`);
|
|
56
|
+
}
|
|
57
|
+
return appearance;
|
|
58
|
+
}
|
|
59
|
+
function setSkinValue(skin, name, value) {
|
|
60
|
+
skin[name] = value;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=materializeAppearance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"materializeAppearance.js","sourceRoot":"","sources":["../../../src/kurot/runtime/materializeAppearance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE;;GAEG;AACH,MAAM,UAAU,eAAe,CAC9B,MAAqB,EACrB,IAAY,EACZ,YAAoB,EACpB,IAAY,EACZ,OAA+B;IAE/B,IAAI,CAAC,IAAI,CAAC,UAAU;QAAE,OAAO;IAC7B,IAAI,CAAC,CAAC,MAAM,YAAY,SAAS,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,mBAAmB,CAC5B,wBAAwB,EACxB,sBAAsB,IAAI,CAAC,IAAI,oCAAoC,EACnE,GAAG,IAAI,aAAa,CACpB,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,GAAG,YAAY,eAAe,UAAU,CAAC,EAAE,EAAE,CAAC;IAC5D,MAAM,IAAI,GAAG,eAAe,CAC3B,UAAU,CAAC,IAAI,EACf,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EACjD,KAAK,EACL,OAAO,CACP,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7D,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,SAAS,qBAAqB,CAC7B,IAAU,EACV,IAAY,EACZ,KAAa,EACb,OAA+B;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,IAAI,MAAM;QAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAChD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;AACF,CAAC;AAED,SAAS,WAAW,CACnB,IAAU,EACV,UAAsB,EACtB,KAAa,EACb,OAA+B;IAE/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,IAAI,MAAM;YAAE,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,CAAC;AAED,SAAS,YAAY,CACpB,UAAsB,EACtB,OAA+B;IAE/B,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;SAC5C,IAAI,EAAE;SACN,GAAG,CAAC,IAAI,CAAC,EAAE;QACX,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC;QAC1D,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAC9D,IAAI,WAAW,CACd,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,QAAQ,EACjB,oBAAoB,CACnB,QAAQ,CAAC,KAAK,EACd,GAAG,IAAI,oBAAoB,IAAI,cAAc,KAAK,SAAS,EAC3D,OAAO,CACP,CACD,CACD,CAAC;QACF,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACzB,EAAU,EACV,IAAY,EACZ,OAA+B;IAE/B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;QAC1D,MAAM,IAAI,mBAAmB,CAC5B,kBAAkB,EAClB,qBAAqB,EAAE,mBAAmB,EAC1C,GAAG,IAAI,qBAAqB,CAC5B,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,IAAU,EAAE,IAAY,EAAE,KAAoB;IAClE,IAA2C,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAC5D,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
|
+
* 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;AAU5B,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,CAuBf"}
|
|
@@ -0,0 +1,105 @@
|
|
|
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
|
+
/**
|
|
6
|
+
* Materializes one reusable component reference and its instance-local changes.
|
|
7
|
+
*/
|
|
8
|
+
export function materializeComponentInstance(node, path, parentScope, context) {
|
|
9
|
+
const specification = requireInstance(node);
|
|
10
|
+
const source = requireComponentAsset(specification, path, context);
|
|
11
|
+
const identity = qualifyNodeId(parentScope, node.id);
|
|
12
|
+
const sourcePath = `$.assets[${JSON.stringify(source.id)}].root`;
|
|
13
|
+
const root = materializeNode(source.root, sourcePath, identity, context);
|
|
14
|
+
context.instances.set(identity, root);
|
|
15
|
+
context.types.set(identity, node.type);
|
|
16
|
+
applyVariant(specification, source.contract, identity, path, context);
|
|
17
|
+
applyParameters(specification, source.contract, identity, path, context);
|
|
18
|
+
applyOverrides(specification, source.contract, identity, path, context);
|
|
19
|
+
projectSlots(specification, source, identity, parentScope, path, context);
|
|
20
|
+
applyNodeProperties(root, node, path, context);
|
|
21
|
+
if (node.appearance)
|
|
22
|
+
applyAppearance(root, node, identity, path, context);
|
|
23
|
+
return root;
|
|
24
|
+
}
|
|
25
|
+
function applyVariant(instance, contract, scope, path, context) {
|
|
26
|
+
if (!instance.variant)
|
|
27
|
+
return;
|
|
28
|
+
const variant = contract.variants[instance.variant];
|
|
29
|
+
if (!variant)
|
|
30
|
+
return;
|
|
31
|
+
for (let index = 0; index < variant.overrides.length; index++) {
|
|
32
|
+
const override = variant.overrides[index];
|
|
33
|
+
applyScopedProperty(scope, override.targetId, override.property, override.value, `${path}.instance.variant`, context);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function applyParameters(instance, contract, scope, path, context) {
|
|
37
|
+
for (const name of Object.keys(contract.parameters).sort()) {
|
|
38
|
+
const definition = contract.parameters[name];
|
|
39
|
+
const value = instance.parameters[name] ?? definition.defaultValue;
|
|
40
|
+
if (value === undefined)
|
|
41
|
+
continue;
|
|
42
|
+
for (const binding of definition.bindings ?? []) {
|
|
43
|
+
applyScopedProperty(scope, binding.targetId, binding.property, value, `${path}.instance.parameters.${name}`, context);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function applyOverrides(instance, contract, scope, path, context) {
|
|
48
|
+
for (let index = 0; index < instance.overrides.length; index++) {
|
|
49
|
+
const override = instance.overrides[index];
|
|
50
|
+
const part = contract.parts[override.part];
|
|
51
|
+
if (!part)
|
|
52
|
+
continue;
|
|
53
|
+
applyScopedProperty(scope, part.nodeId, override.property, override.value, `${path}.instance.overrides[${index}].value`, context);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function projectSlots(instance, source, componentScope, parentScope, path, context) {
|
|
57
|
+
for (const name of Object.keys(instance.slots).sort()) {
|
|
58
|
+
const slot = source.contract.slots[name];
|
|
59
|
+
if (!slot)
|
|
60
|
+
continue;
|
|
61
|
+
const target = context.instances.get(qualifyNodeId(componentScope, slot.nodeId));
|
|
62
|
+
const targetNode = findNode(source.root, slot.nodeId);
|
|
63
|
+
if (!target || !targetNode)
|
|
64
|
+
continue;
|
|
65
|
+
const adapter = context.adapters[targetNode.type];
|
|
66
|
+
const nodes = instance.slots[name];
|
|
67
|
+
for (let index = 0; index < nodes.length; index++) {
|
|
68
|
+
const childPath = `${path}.instance.slots.${name}[${index}]`;
|
|
69
|
+
const child = materializeNode(nodes[index], childPath, parentScope, context);
|
|
70
|
+
appendRuntimeChild(target, child, targetNode.type, childPath, adapter);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function applyScopedProperty(scope, targetId, property, value, path, context) {
|
|
75
|
+
const target = context.instances.get(qualifyNodeId(scope, targetId));
|
|
76
|
+
if (!target)
|
|
77
|
+
return;
|
|
78
|
+
const type = context.types.get(qualifyNodeId(scope, targetId));
|
|
79
|
+
if (!type)
|
|
80
|
+
return;
|
|
81
|
+
applyRuntimeProperty(target, type, property, value, path, context);
|
|
82
|
+
}
|
|
83
|
+
function requireComponentAsset(instance, path, context) {
|
|
84
|
+
const source = context.assets.getAsset(instance.source.assetId);
|
|
85
|
+
if (!source || source.assetKind !== 'component') {
|
|
86
|
+
throw new KurotUIRuntimeError('invalid-document', `Reusable component asset "${instance.source.assetId}" is unavailable.`, `${path}.instance.source.assetId`);
|
|
87
|
+
}
|
|
88
|
+
return source;
|
|
89
|
+
}
|
|
90
|
+
function requireInstance(node) {
|
|
91
|
+
if (node.instance)
|
|
92
|
+
return node.instance;
|
|
93
|
+
throw new Error('Expected reusable component instance.');
|
|
94
|
+
}
|
|
95
|
+
function findNode(root, id) {
|
|
96
|
+
if (root.id === id)
|
|
97
|
+
return root;
|
|
98
|
+
for (const child of root.children) {
|
|
99
|
+
const match = findNode(child, id);
|
|
100
|
+
if (match)
|
|
101
|
+
return match;
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
//# 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,CAiBf;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,76 @@
|
|
|
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
|
+
return instance;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Returns a collision-free runtime identity for a node inside a component scope.
|
|
30
|
+
*/
|
|
31
|
+
export function qualifyNodeId(scope, nodeId) {
|
|
32
|
+
return scope ? `${scope}/${nodeId}` : nodeId;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Applies the node's explicitly authored properties in stable name order.
|
|
36
|
+
*/
|
|
37
|
+
export function applyNodeProperties(target, node, path, context) {
|
|
38
|
+
for (const name of Object.keys(node.properties).sort()) {
|
|
39
|
+
applyRuntimeProperty(target, node.type, name, node.properties[name], `${path}.properties.${name}`, context);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Attaches a materialized child through a built-in or project adapter contract.
|
|
44
|
+
*/
|
|
45
|
+
export function appendRuntimeChild(parent, child, parentType, path, adapter) {
|
|
46
|
+
if (adapter?.appendChild) {
|
|
47
|
+
adapter.appendChild(parent, child, path);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (parent instanceof Group) {
|
|
51
|
+
parent.addChild(child);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
throw new KurotUIRuntimeError('unsupported-children', `Runtime component "${parentType}" cannot attach document children.`, path);
|
|
55
|
+
}
|
|
56
|
+
function createInstance(node, path, adapter) {
|
|
57
|
+
const factory = adapter?.create ?? getBuiltInFactory(node.type);
|
|
58
|
+
if (!factory) {
|
|
59
|
+
throw new KurotUIRuntimeError('unsupported-component', `No runtime adapter is registered for component type "${node.type}".`, `${path}.type`);
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
return factory();
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
const detail = error instanceof Error ? ` ${error.message}` : '';
|
|
66
|
+
throw new KurotUIRuntimeError('component-construction-failed', `Failed to construct component type "${node.type}".${detail}`, `${path}.type`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function registerInstance(identity, instance, type, path, context) {
|
|
70
|
+
if (context.instances.has(identity)) {
|
|
71
|
+
throw new KurotUIRuntimeError('invalid-document', `Runtime node identity "${identity}" is duplicated.`, `${path}.id`);
|
|
72
|
+
}
|
|
73
|
+
context.instances.set(identity, instance);
|
|
74
|
+
context.types.set(identity, type);
|
|
75
|
+
}
|
|
76
|
+
//# 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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { DisplayObject } from '@kurot/core';
|
|
2
|
-
import type { UIComponentRegistry, UIPropertyValue } from '@kurot/ui-document';
|
|
2
|
+
import type { UIAssetRegistry, UIComponentRegistry, UIPropertyValue, UIResourceDefinition, UIResourceReference } from '@kurot/ui-document';
|
|
3
3
|
/**
|
|
4
4
|
* Stable runtime materialization failure categories.
|
|
5
5
|
*/
|
|
6
|
-
export type KurotUIRuntimeErrorCode = 'component-construction-failed' | 'invalid-document' | 'invalid-layout' | 'invalid-property' | 'invalid-rectangle' | 'unsupported-children' | 'unsupported-component';
|
|
6
|
+
export type KurotUIRuntimeErrorCode = 'component-construction-failed' | 'invalid-document' | 'invalid-layout' | 'invalid-property' | 'invalid-rectangle' | 'unsupported-appearance' | 'unsupported-children' | 'unsupported-component';
|
|
7
7
|
/**
|
|
8
8
|
* Runtime hooks for one project-defined component type.
|
|
9
9
|
*/
|
|
@@ -22,18 +22,30 @@ export interface KurotUIComponentAdapter {
|
|
|
22
22
|
*/
|
|
23
23
|
readonly appendChild?: (parent: DisplayObject, child: DisplayObject, path: string) => void;
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolves one semantic resource reference to a runtime property value.
|
|
27
|
+
*/
|
|
28
|
+
export type KurotUIResourceResolver = (reference: UIResourceReference, definition: UIResourceDefinition) => UIPropertyValue;
|
|
25
29
|
/**
|
|
26
30
|
* Runtime customization supplied for one materialization operation.
|
|
27
31
|
*/
|
|
28
32
|
export interface CreateKurotUIOptions {
|
|
29
33
|
/**
|
|
30
|
-
* Complete semantic registry used to validate
|
|
34
|
+
* Complete semantic component registry used to validate every asset.
|
|
31
35
|
*/
|
|
32
36
|
readonly registry?: UIComponentRegistry;
|
|
37
|
+
/**
|
|
38
|
+
* Project assets, resources, and design tokens used by the root document.
|
|
39
|
+
*/
|
|
40
|
+
readonly assets?: UIAssetRegistry;
|
|
33
41
|
/**
|
|
34
42
|
* Project-defined runtime adapters keyed by canonical component type.
|
|
35
43
|
*/
|
|
36
44
|
readonly adapters?: Readonly<Record<string, KurotUIComponentAdapter>>;
|
|
45
|
+
/**
|
|
46
|
+
* Converts a registered resource reference into its browser runtime value.
|
|
47
|
+
*/
|
|
48
|
+
readonly resolveResource?: KurotUIResourceResolver;
|
|
37
49
|
}
|
|
38
50
|
/**
|
|
39
51
|
* Materialized display tree and stable node-to-instance lookup.
|
|
@@ -44,15 +56,34 @@ export interface KurotUICreationResult {
|
|
|
44
56
|
*/
|
|
45
57
|
readonly root: DisplayObject;
|
|
46
58
|
/**
|
|
47
|
-
* Runtime instances keyed by
|
|
59
|
+
* Runtime instances keyed by document node ID. Reusable component internals
|
|
60
|
+
* use slash-qualified keys such as `action/label`.
|
|
48
61
|
*/
|
|
49
62
|
readonly instances: ReadonlyMap<string, DisplayObject>;
|
|
50
63
|
}
|
|
51
64
|
/**
|
|
52
|
-
* Internal state shared while recursively materializing one
|
|
65
|
+
* Internal state shared while recursively materializing one project asset graph.
|
|
53
66
|
*/
|
|
54
67
|
export interface KurotUICreationContext {
|
|
68
|
+
/**
|
|
69
|
+
* Runtime adapters keyed by canonical component type.
|
|
70
|
+
*/
|
|
55
71
|
readonly adapters: Readonly<Record<string, KurotUIComponentAdapter>>;
|
|
72
|
+
/**
|
|
73
|
+
* Validated project catalog used to resolve every reference.
|
|
74
|
+
*/
|
|
75
|
+
readonly assets: UIAssetRegistry;
|
|
76
|
+
/**
|
|
77
|
+
* Materialized objects keyed by their runtime-qualified node identity.
|
|
78
|
+
*/
|
|
56
79
|
readonly instances: Map<string, DisplayObject>;
|
|
80
|
+
/**
|
|
81
|
+
* Application resource resolver selected for this materialization.
|
|
82
|
+
*/
|
|
83
|
+
readonly resolveResource: KurotUIResourceResolver;
|
|
84
|
+
/**
|
|
85
|
+
* Canonical component types keyed by runtime-qualified node identity.
|
|
86
|
+
*/
|
|
87
|
+
readonly types: Map<string, string>;
|
|
57
88
|
}
|
|
58
89
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/kurot/runtime/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EACX,mBAAmB,EACnB,eAAe,EACf,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAChC,+BAA+B,GAC/B,kBAAkB,GAClB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,sBAAsB,GACtB,uBAAuB,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,aAAa,CAAC;IAErC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CACxB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,MAAM,KACR,OAAO,CAAC;IAEb;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CACtB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,KACR,IAAI,CAAC;CACV;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAExC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/kurot/runtime/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EACX,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAChC,+BAA+B,GAC/B,kBAAkB,GAClB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,uBAAuB,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,aAAa,CAAC;IAErC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CACxB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,MAAM,KACR,OAAO,CAAC;IAEb;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CACtB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,KACR,IAAI,CAAC;CACV;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CACrC,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,oBAAoB,KAC5B,eAAe,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAExC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAEtE;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,uBAAuB,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAErE;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE/C;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,uBAAuB,CAAC;IAElD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kurot/ui-runtime",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Runtime materialization layer for validated Kurot UI documents",
|
|
5
5
|
"author": "Kelvin <kyia.x52@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"build": "tsc --build",
|
|
23
23
|
"dev": "tsc --watch",
|
|
24
24
|
"clean": "rm -rf dist",
|
|
25
|
-
"test": "vitest run --config vitest.config.ts",
|
|
25
|
+
"test": "tsc --project tsconfig.test.json && vitest run --config vitest.config.ts",
|
|
26
26
|
"test:watch": "vitest --config vitest.config.ts",
|
|
27
27
|
"preview": "vite --config vite.config.ts",
|
|
28
28
|
"build:preview": "vite --config vite.config.ts build",
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"@kurot/core": "^1.0.15",
|
|
33
33
|
"@kurot/ui": "^1.1.7",
|
|
34
|
-
"@kurot/ui-document": "^0.
|
|
34
|
+
"@kurot/ui-document": "^0.3.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@kurot/core": "^1.0.15",
|
|
38
38
|
"@kurot/ui": "^1.1.7",
|
|
39
|
-
"@kurot/ui-document": "^0.
|
|
39
|
+
"@kurot/ui-document": "^0.3.0",
|
|
40
40
|
"@types/node": "^22.0.0",
|
|
41
41
|
"happy-dom": "^20.8.9",
|
|
42
42
|
"typescript": "^5.6.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"applyComponentProperties.d.ts","sourceRoot":"","sources":["../../../src/kurot/runtime/applyComponentProperties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D;;GAEG;AACH,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,MAAM,GACV,OAAO,CAiBT"}
|