@kurot/ui-runtime 0.4.0 → 0.4.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/dist/kurot/runtime/assetPath.d.ts +5 -0
- package/dist/kurot/runtime/assetPath.d.ts.map +1 -0
- package/dist/kurot/runtime/assetPath.js +7 -0
- package/dist/kurot/runtime/assetPath.js.map +1 -0
- package/dist/kurot/runtime/builtins/applyButtonProperties.js +2 -15
- package/dist/kurot/runtime/builtins/applyButtonProperties.js.map +1 -1
- package/dist/kurot/runtime/builtins/applyComponentProperties.js +1 -6
- package/dist/kurot/runtime/builtins/applyComponentProperties.js.map +1 -1
- package/dist/kurot/runtime/builtins/applyDisplayObjectProperties.js +1 -19
- package/dist/kurot/runtime/builtins/applyDisplayObjectProperties.js.map +1 -1
- package/dist/kurot/runtime/builtins/applyEditableTextProperties.js +2 -15
- package/dist/kurot/runtime/builtins/applyEditableTextProperties.js.map +1 -1
- package/dist/kurot/runtime/builtins/applyGroupProperties.js +1 -14
- package/dist/kurot/runtime/builtins/applyGroupProperties.js.map +1 -1
- package/dist/kurot/runtime/builtins/applyImageProperties.js +3 -11
- package/dist/kurot/runtime/builtins/applyImageProperties.js.map +1 -1
- package/dist/kurot/runtime/builtins/applyLabelProperties.js +1 -19
- package/dist/kurot/runtime/builtins/applyLabelProperties.js.map +1 -1
- package/dist/kurot/runtime/builtins/applyProgressBarProperties.js +2 -10
- package/dist/kurot/runtime/builtins/applyProgressBarProperties.js.map +1 -1
- package/dist/kurot/runtime/builtins/applyRectProperties.js +1 -9
- package/dist/kurot/runtime/builtins/applyRectProperties.js.map +1 -1
- package/dist/kurot/runtime/builtins/applyTextInputProperties.js +2 -20
- package/dist/kurot/runtime/builtins/applyTextInputProperties.js.map +1 -1
- package/dist/kurot/runtime/builtins/applyUIComponentProperties.d.ts.map +1 -1
- package/dist/kurot/runtime/builtins/applyUIComponentProperties.js +2 -14
- package/dist/kurot/runtime/builtins/applyUIComponentProperties.js.map +1 -1
- package/dist/kurot/runtime/builtins/valueGuards.d.ts +18 -0
- package/dist/kurot/runtime/builtins/valueGuards.d.ts.map +1 -0
- package/dist/kurot/runtime/builtins/valueGuards.js +32 -0
- package/dist/kurot/runtime/builtins/valueGuards.js.map +1 -0
- package/dist/kurot/runtime/createKurotUI.d.ts.map +1 -1
- package/dist/kurot/runtime/createKurotUI.js +14 -2
- package/dist/kurot/runtime/createKurotUI.js.map +1 -1
- package/dist/kurot/runtime/descriptors/createLayout.js.map +1 -1
- package/dist/kurot/runtime/dynamics/activateRuntimeContract.d.ts +1 -1
- package/dist/kurot/runtime/dynamics/activateRuntimeContract.d.ts.map +1 -1
- package/dist/kurot/runtime/dynamics/activateRuntimeContract.js +3 -3
- package/dist/kurot/runtime/dynamics/activateRuntimeContract.js.map +1 -1
- package/dist/kurot/runtime/dynamics/createDataController.d.ts.map +1 -1
- package/dist/kurot/runtime/dynamics/createDataController.js +5 -38
- package/dist/kurot/runtime/dynamics/createDataController.js.map +1 -1
- package/dist/kurot/runtime/dynamics/registerSemanticActions.d.ts +1 -1
- package/dist/kurot/runtime/dynamics/registerSemanticActions.d.ts.map +1 -1
- package/dist/kurot/runtime/dynamics/registerSemanticActions.js +6 -5
- package/dist/kurot/runtime/dynamics/registerSemanticActions.js.map +1 -1
- package/dist/kurot/runtime/materializeAppearance.d.ts.map +1 -1
- package/dist/kurot/runtime/materializeAppearance.js +7 -9
- package/dist/kurot/runtime/materializeAppearance.js.map +1 -1
- package/dist/kurot/runtime/materializeComponentInstance.d.ts.map +1 -1
- package/dist/kurot/runtime/materializeComponentInstance.js +10 -5
- package/dist/kurot/runtime/materializeComponentInstance.js.map +1 -1
- package/dist/kurot/runtime/propertyTransaction.d.ts +62 -0
- package/dist/kurot/runtime/propertyTransaction.d.ts.map +1 -0
- package/dist/kurot/runtime/propertyTransaction.js +150 -0
- package/dist/kurot/runtime/propertyTransaction.js.map +1 -0
- package/dist/kurot/runtime/states/createReusableComponentStateController.d.ts.map +1 -1
- package/dist/kurot/runtime/states/createReusableComponentStateController.js +27 -36
- package/dist/kurot/runtime/states/createReusableComponentStateController.js.map +1 -1
- package/dist/kurot/runtime/transitions/TransitionSetProperty.js +1 -1
- package/dist/kurot/runtime/transitions/TransitionSetProperty.js.map +1 -1
- package/dist/kurot/runtime/types.d.ts +10 -5
- package/dist/kurot/runtime/types.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activateRuntimeContract.d.ts","sourceRoot":"","sources":["../../../../src/kurot/runtime/dynamics/activateRuntimeContract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D;;GAEG;AACH,wBAAgB,uBAAuB,CACtC,
|
|
1
|
+
{"version":3,"file":"activateRuntimeContract.d.ts","sourceRoot":"","sources":["../../../../src/kurot/runtime/dynamics/activateRuntimeContract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D;;GAEG;AACH,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,sBAAsB,EAC/B,WAAW,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAM,GACzD,IAAI,CAUN"}
|
|
@@ -3,9 +3,9 @@ import { registerSemanticActions } from './registerSemanticActions.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* Activates the dynamic Contract owned by one fully materialized asset tree.
|
|
5
5
|
*/
|
|
6
|
-
export function activateRuntimeContract(
|
|
7
|
-
const controller = createDataController(
|
|
6
|
+
export function activateRuntimeContract(asset, scope, context, initialData = {}) {
|
|
7
|
+
const controller = createDataController(asset.contract, asset.id, scope, context, initialData);
|
|
8
8
|
context.dataControllers.set(scope, controller);
|
|
9
|
-
registerSemanticActions(
|
|
9
|
+
registerSemanticActions(asset, scope, context);
|
|
10
10
|
}
|
|
11
11
|
//# sourceMappingURL=activateRuntimeContract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activateRuntimeContract.js","sourceRoot":"","sources":["../../../../src/kurot/runtime/dynamics/activateRuntimeContract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACtC,
|
|
1
|
+
{"version":3,"file":"activateRuntimeContract.js","sourceRoot":"","sources":["../../../../src/kurot/runtime/dynamics/activateRuntimeContract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACtC,KAAiB,EACjB,KAAa,EACb,OAA+B,EAC/B,cAAyD,EAAE;IAE3D,MAAM,UAAU,GAAG,oBAAoB,CACtC,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,EAAE,EACR,KAAK,EACL,OAAO,EACP,WAAW,CACX,CAAC;IACF,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/C,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDataController.d.ts","sourceRoot":"","sources":["../../../../src/kurot/runtime/dynamics/createDataController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createDataController.d.ts","sourceRoot":"","sources":["../../../../src/kurot/runtime/dynamics/createDataController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEjF;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,sBAAsB,EAC/B,aAAa,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAM,GAC3D,qBAAqB,CAmCvB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { matchesUIPropertyDefinition } from '@kurot/ui-document';
|
|
2
|
-
import { applyRuntimeProperty } from '../applyRuntimeProperty.js';
|
|
3
2
|
import { KurotUIRuntimeError } from '../KurotUIRuntimeError.js';
|
|
4
3
|
import { qualifyNodeId } from '../materializeNode.js';
|
|
4
|
+
import { applyPropertyUpdates } from '../propertyTransaction.js';
|
|
5
5
|
/**
|
|
6
6
|
* Creates one validated controller for an asset's bounded external data.
|
|
7
7
|
*/
|
|
@@ -41,7 +41,7 @@ export function createDataController(contract, assetId, scope, context, initialV
|
|
|
41
41
|
}
|
|
42
42
|
function applyBindings(contract, source, value, scope, context) {
|
|
43
43
|
const bindings = contract.dataBindings ?? {};
|
|
44
|
-
const
|
|
44
|
+
const updates = [];
|
|
45
45
|
for (const name of Object.keys(bindings).sort()) {
|
|
46
46
|
const binding = bindings[name];
|
|
47
47
|
if (binding.source !== source) {
|
|
@@ -53,48 +53,15 @@ function applyBindings(contract, source, value, scope, context) {
|
|
|
53
53
|
if (target === undefined || type === undefined) {
|
|
54
54
|
continue;
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
updates.push({
|
|
57
57
|
path: `$.contract.dataBindings.${name}`,
|
|
58
58
|
property: binding.property,
|
|
59
59
|
target,
|
|
60
60
|
type,
|
|
61
|
-
|
|
62
|
-
previousValue: captureBindingValue(context.adapters[type], target, binding.property, `$.contract.dataBindings.${name}`),
|
|
61
|
+
value,
|
|
63
62
|
});
|
|
64
63
|
}
|
|
65
|
-
|
|
66
|
-
try {
|
|
67
|
-
for (const target of targets) {
|
|
68
|
-
applied.push(target);
|
|
69
|
-
applyRuntimeProperty(target.target, target.type, target.property, value, target.path, context);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
catch (error) {
|
|
73
|
-
rollbackBindings(applied);
|
|
74
|
-
throw error;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
function rollbackBindings(targets) {
|
|
78
|
-
for (let index = targets.length - 1; index >= 0; index--) {
|
|
79
|
-
const target = targets[index];
|
|
80
|
-
try {
|
|
81
|
-
if (target.adapter?.restoreProperty !== undefined) {
|
|
82
|
-
target.adapter.restoreProperty(target.target, target.property, target.previousValue, target.path);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
Reflect.set(target.target, target.property, target.previousValue);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
// Preserve the original binding failure; adapters should expose restorable properties.
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
function captureBindingValue(adapter, target, property, path) {
|
|
94
|
-
if (adapter?.captureProperty !== undefined) {
|
|
95
|
-
return adapter.captureProperty(target, property, path);
|
|
96
|
-
}
|
|
97
|
-
return Reflect.get(target, property);
|
|
64
|
+
applyPropertyUpdates(updates, context);
|
|
98
65
|
}
|
|
99
66
|
function assertValidInitialValues(values, definitions, assetId) {
|
|
100
67
|
for (const [name, value] of Object.entries(values)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDataController.js","sourceRoot":"","sources":["../../../../src/kurot/runtime/dynamics/createDataController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createDataController.js","sourceRoot":"","sources":["../../../../src/kurot/runtime/dynamics/createDataController.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,5 @@ import type { KurotUICreationContext } from '../types.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* Connects one asset's bounded action declarations to runtime events.
|
|
5
5
|
*/
|
|
6
|
-
export declare function registerSemanticActions(
|
|
6
|
+
export declare function registerSemanticActions(asset: UIDocument, scope: string, context: KurotUICreationContext): void;
|
|
7
7
|
//# sourceMappingURL=registerSemanticActions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerSemanticActions.d.ts","sourceRoot":"","sources":["../../../../src/kurot/runtime/dynamics/registerSemanticActions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,oBAAoB,CAAC;AAE9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D;;GAEG;AACH,wBAAgB,uBAAuB,CACtC,
|
|
1
|
+
{"version":3,"file":"registerSemanticActions.d.ts","sourceRoot":"","sources":["../../../../src/kurot/runtime/dynamics/registerSemanticActions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,oBAAoB,CAAC;AAE9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D;;GAEG;AACH,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,sBAAsB,GAC7B,IAAI,CA4BN"}
|
|
@@ -3,11 +3,12 @@ import { qualifyNodeId } from '../materializeNode.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* Connects one asset's bounded action declarations to runtime events.
|
|
5
5
|
*/
|
|
6
|
-
export function registerSemanticActions(
|
|
7
|
-
|
|
6
|
+
export function registerSemanticActions(asset, scope, context) {
|
|
7
|
+
const onAction = context.onAction;
|
|
8
|
+
if (onAction === undefined) {
|
|
8
9
|
return;
|
|
9
10
|
}
|
|
10
|
-
const actions =
|
|
11
|
+
const actions = asset.contract.actions ?? {};
|
|
11
12
|
for (const name of Object.keys(actions).sort()) {
|
|
12
13
|
const definition = actions[name];
|
|
13
14
|
const identity = qualifyNodeId(scope, definition.sourceId);
|
|
@@ -17,9 +18,9 @@ export function registerSemanticActions(document, scope, context) {
|
|
|
17
18
|
}
|
|
18
19
|
const eventType = getEventType(definition.trigger);
|
|
19
20
|
const listener = (event) => {
|
|
20
|
-
|
|
21
|
+
onAction({
|
|
21
22
|
action: name,
|
|
22
|
-
assetId:
|
|
23
|
+
assetId: asset.id,
|
|
23
24
|
event,
|
|
24
25
|
scope,
|
|
25
26
|
sourceId: definition.sourceId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerSemanticActions.js","sourceRoot":"","sources":["../../../../src/kurot/runtime/dynamics/registerSemanticActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACtC,
|
|
1
|
+
{"version":3,"file":"registerSemanticActions.js","sourceRoot":"","sources":["../../../../src/kurot/runtime/dynamics/registerSemanticActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACtC,KAAiB,EACjB,KAAa,EACb,OAA+B;IAE/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;IACR,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1B,SAAS;QACV,CAAC;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAQ,EAAE;YACvC,QAAQ,CAAC;gBACR,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,KAAK;gBACL,KAAK;gBACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;aAC7B,CAAC,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAS,EAAE;YACxC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,OAAgC;IACrD,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,QAAQ;YACZ,OAAO,KAAK,CAAC,MAAM,CAAC;QACrB,KAAK,KAAK;YACT,OAAO,UAAU,CAAC,SAAS,CAAC;IAC9B,CAAC;AACF,CAAC"}
|
|
@@ -1 +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;
|
|
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;AAM7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGzD;;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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Component, SetProperty, Skin, State } from '@kurot/ui';
|
|
2
2
|
import { applyRuntimeProperty } from './applyRuntimeProperty.js';
|
|
3
3
|
import { materializeNode, qualifyNodeId } from './materializeNode.js';
|
|
4
|
+
import { assetPath } from './assetPath.js';
|
|
4
5
|
import { KurotUIRuntimeError } from './KurotUIRuntimeError.js';
|
|
5
6
|
import { resolvePropertyValue } from './resolvePropertyValue.js';
|
|
6
7
|
import { TransitionSetProperty } from './transitions/TransitionSetProperty.js';
|
|
@@ -15,7 +16,7 @@ export function applyAppearance(target, node, hostIdentity, path, context) {
|
|
|
15
16
|
}
|
|
16
17
|
const appearance = requireAppearance(node.appearance.assetId, path, context);
|
|
17
18
|
const scope = `${hostIdentity}@appearance:${appearance.id}`;
|
|
18
|
-
const root = materializeNode(appearance.root,
|
|
19
|
+
const root = materializeNode(appearance.root, assetPath(appearance.id, '.root'), scope, context);
|
|
19
20
|
applyAppearanceVariant(node.appearance.variant, appearance, scope, context);
|
|
20
21
|
const skin = new Skin();
|
|
21
22
|
skin.elementsContent = [root];
|
|
@@ -30,7 +31,7 @@ function applyAppearanceVariant(name, appearance, scope, context) {
|
|
|
30
31
|
const definition = appearance.contract.variants[name];
|
|
31
32
|
if (!definition)
|
|
32
33
|
return;
|
|
33
|
-
const path =
|
|
34
|
+
const path = assetPath(appearance.id, `.contract.variants.${name}`);
|
|
34
35
|
for (let index = 0; index < definition.overrides.length; index++) {
|
|
35
36
|
const override = definition.overrides[index];
|
|
36
37
|
const identity = qualifyNodeId(scope, override.targetId);
|
|
@@ -44,7 +45,7 @@ function applyAppearanceVariant(name, appearance, scope, context) {
|
|
|
44
45
|
function exposeAppearanceNodes(skin, node, scope, context) {
|
|
45
46
|
const target = context.instances.get(qualifyNodeId(scope, node.id));
|
|
46
47
|
if (target) {
|
|
47
|
-
|
|
48
|
+
skin.setPart(node.id, target);
|
|
48
49
|
}
|
|
49
50
|
for (const child of node.children) {
|
|
50
51
|
exposeAppearanceNodes(skin, child, scope, context);
|
|
@@ -56,19 +57,19 @@ function exposeParts(skin, appearance, scope, context) {
|
|
|
56
57
|
const part = appearance.contract.parts[name];
|
|
57
58
|
const target = context.instances.get(qualifyNodeId(scope, part.nodeId));
|
|
58
59
|
if (target) {
|
|
59
|
-
|
|
60
|
+
skin.setPart(name, target);
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
skin.skinParts = names;
|
|
63
64
|
}
|
|
64
65
|
function createStates(appearance, context) {
|
|
66
|
+
const basePath = assetPath(appearance.id);
|
|
65
67
|
return Object.keys(appearance.contract.states)
|
|
66
68
|
.sort()
|
|
67
69
|
.map(name => {
|
|
68
70
|
const definition = appearance.contract.states[name];
|
|
69
|
-
const path = `$.assets[${JSON.stringify(appearance.id)}]`;
|
|
70
71
|
const overrides = definition.overrides.map((override, index) => {
|
|
71
|
-
const value = resolvePropertyValue(override.value, `${
|
|
72
|
+
const value = resolvePropertyValue(override.value, `${basePath}.contract.states.${name}.overrides[${index}].value`, context);
|
|
72
73
|
if (override.transition !== undefined) {
|
|
73
74
|
return new TransitionSetProperty(override.targetId, override.property, value, override.transition);
|
|
74
75
|
}
|
|
@@ -84,7 +85,4 @@ function requireAppearance(id, path, context) {
|
|
|
84
85
|
}
|
|
85
86
|
return appearance;
|
|
86
87
|
}
|
|
87
|
-
function setSkinValue(skin, name, value) {
|
|
88
|
-
skin[name] = value;
|
|
89
|
-
}
|
|
90
88
|
//# sourceMappingURL=materializeAppearance.js.map
|
|
@@ -1 +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,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,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;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E;;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,
|
|
1
|
+
{"version":3,"file":"materializeAppearance.js","sourceRoot":"","sources":["../../../src/kurot/runtime/materializeAppearance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,
|
|
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,EAEN,MAAM,oBAAoB,CAAC;AAa5B,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,CAqCf"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { applyRuntimeProperty } from './applyRuntimeProperty.js';
|
|
2
|
+
import { assetPath } from './assetPath.js';
|
|
2
3
|
import { activateRuntimeContract } from './dynamics/activateRuntimeContract.js';
|
|
3
4
|
import { applyAppearance } from './materializeAppearance.js';
|
|
4
5
|
import { appendRuntimeChild, applyNodeProperties, materializeNode, qualifyNodeId, } from './materializeNode.js';
|
|
@@ -8,10 +9,10 @@ import { createReusableComponentStateController } from './states/createReusableC
|
|
|
8
9
|
* Materializes one reusable component reference and its instance-local changes.
|
|
9
10
|
*/
|
|
10
11
|
export function materializeComponentInstance(node, path, parentScope, context) {
|
|
11
|
-
const specification = requireInstance(node);
|
|
12
|
+
const specification = requireInstance(node, path);
|
|
12
13
|
const source = requireComponentAsset(specification, path, context);
|
|
13
14
|
const identity = qualifyNodeId(parentScope, node.id);
|
|
14
|
-
const sourcePath =
|
|
15
|
+
const sourcePath = assetPath(source.id, '.root');
|
|
15
16
|
const root = materializeNode(source.root, sourcePath, identity, context);
|
|
16
17
|
context.instances.set(identity, root);
|
|
17
18
|
context.types.set(identity, node.type);
|
|
@@ -24,7 +25,7 @@ export function materializeComponentInstance(node, path, parentScope, context) {
|
|
|
24
25
|
applyAppearance(root, node, identity, path, context);
|
|
25
26
|
}
|
|
26
27
|
if (Object.keys(source.contract.states).length > 0) {
|
|
27
|
-
context.stateControllers.set(identity, createReusableComponentStateController(source.contract, identity,
|
|
28
|
+
context.stateControllers.set(identity, createReusableComponentStateController(source.contract, identity, assetPath(source.id, '.contract'), context));
|
|
28
29
|
}
|
|
29
30
|
activateRuntimeContract(source, identity, context);
|
|
30
31
|
return root;
|
|
@@ -34,6 +35,7 @@ function applyVariant(instance, contract, scope, path, context) {
|
|
|
34
35
|
return;
|
|
35
36
|
}
|
|
36
37
|
const variant = contract.variants[instance.variant];
|
|
38
|
+
// Unknown variants are rejected by project validation; skip defensively.
|
|
37
39
|
if (!variant) {
|
|
38
40
|
return;
|
|
39
41
|
}
|
|
@@ -58,6 +60,7 @@ function applyOverrides(instance, contract, scope, path, context) {
|
|
|
58
60
|
for (let index = 0; index < instance.overrides.length; index++) {
|
|
59
61
|
const override = instance.overrides[index];
|
|
60
62
|
const part = contract.parts[override.part];
|
|
63
|
+
// Unknown parts are rejected by project validation; skip defensively.
|
|
61
64
|
if (!part) {
|
|
62
65
|
continue;
|
|
63
66
|
}
|
|
@@ -67,6 +70,7 @@ function applyOverrides(instance, contract, scope, path, context) {
|
|
|
67
70
|
function projectSlots(instance, source, componentScope, parentScope, path, context) {
|
|
68
71
|
for (const name of Object.keys(instance.slots).sort()) {
|
|
69
72
|
const slot = source.contract.slots[name];
|
|
73
|
+
// Unknown slots and part nodes are rejected by project validation.
|
|
70
74
|
if (!slot) {
|
|
71
75
|
continue;
|
|
72
76
|
}
|
|
@@ -86,6 +90,7 @@ function projectSlots(instance, source, componentScope, parentScope, path, conte
|
|
|
86
90
|
}
|
|
87
91
|
function applyScopedProperty(scope, targetId, property, value, path, context) {
|
|
88
92
|
const target = context.instances.get(qualifyNodeId(scope, targetId));
|
|
93
|
+
// Binding targets are checked by project validation; missing targets skip.
|
|
89
94
|
if (!target) {
|
|
90
95
|
return;
|
|
91
96
|
}
|
|
@@ -102,11 +107,11 @@ function requireComponentAsset(instance, path, context) {
|
|
|
102
107
|
}
|
|
103
108
|
return source;
|
|
104
109
|
}
|
|
105
|
-
function requireInstance(node) {
|
|
110
|
+
function requireInstance(node, path) {
|
|
106
111
|
if (node.instance) {
|
|
107
112
|
return node.instance;
|
|
108
113
|
}
|
|
109
|
-
throw new
|
|
114
|
+
throw new KurotUIRuntimeError('invalid-document', 'Expected reusable component instance.', `${path}.instance`);
|
|
110
115
|
}
|
|
111
116
|
function findNode(root, id) {
|
|
112
117
|
if (root.id === id) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materializeComponentInstance.js","sourceRoot":"","sources":["../../../src/kurot/runtime/materializeComponentInstance.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"materializeComponentInstance.js","sourceRoot":"","sources":["../../../src/kurot/runtime/materializeComponentInstance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { DisplayObject } from '@kurot/core';
|
|
2
|
+
import type { UIPropertyValue } from '@kurot/ui-document';
|
|
3
|
+
import type { KurotUIComponentAdapter, KurotUICreationContext } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* One property assignment to apply transactionally.
|
|
6
|
+
*/
|
|
7
|
+
export interface RuntimePropertyUpdate {
|
|
8
|
+
/**
|
|
9
|
+
* Semantic document path used in failure diagnostics.
|
|
10
|
+
*/
|
|
11
|
+
readonly path: string;
|
|
12
|
+
/**
|
|
13
|
+
* Runtime property name to assign.
|
|
14
|
+
*/
|
|
15
|
+
readonly property: string;
|
|
16
|
+
/**
|
|
17
|
+
* Materialized object receiving the assignment.
|
|
18
|
+
*/
|
|
19
|
+
readonly target: DisplayObject;
|
|
20
|
+
/**
|
|
21
|
+
* Canonical component type of the target, used for adapter lookup.
|
|
22
|
+
*/
|
|
23
|
+
readonly type: string;
|
|
24
|
+
/**
|
|
25
|
+
* Authored value to assign.
|
|
26
|
+
*/
|
|
27
|
+
readonly value: UIPropertyValue;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* One captured pre-assignment value together with the layer that owns the
|
|
31
|
+
* property: builtin-owned backups restore reflectively; adapter-owned
|
|
32
|
+
* backups restore through their adapter.
|
|
33
|
+
*/
|
|
34
|
+
export interface RuntimePropertyBackup {
|
|
35
|
+
readonly adapter: KurotUIComponentAdapter | undefined;
|
|
36
|
+
readonly path: string;
|
|
37
|
+
readonly property: string;
|
|
38
|
+
readonly target: DisplayObject;
|
|
39
|
+
readonly value: unknown;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Applies updates in order and returns the captured pre-assignment backups.
|
|
43
|
+
* Each target property is captured exactly once through its owning layer —
|
|
44
|
+
* builtin properties are captured reflectively, while properties consumed by
|
|
45
|
+
* the component adapter are captured through `captureProperty` before the
|
|
46
|
+
* adapter is invoked. If any assignment fails, every captured property is
|
|
47
|
+
* restored in reverse order by its owning layer, and the original failure is
|
|
48
|
+
* rethrown with a failed restore chained onto it as `cause`.
|
|
49
|
+
*/
|
|
50
|
+
export declare function applyPropertyUpdates(updates: readonly RuntimePropertyUpdate[], context: KurotUICreationContext): RuntimePropertyBackup[];
|
|
51
|
+
/**
|
|
52
|
+
* Restores captured values in reverse assignment order through each owning
|
|
53
|
+
* layer. Throws the first restore failure after attempting every remaining
|
|
54
|
+
* restore.
|
|
55
|
+
*/
|
|
56
|
+
export declare function restorePropertyBackups(backups: readonly RuntimePropertyBackup[]): void;
|
|
57
|
+
/**
|
|
58
|
+
* Chains a secondary failure onto an existing error as its `cause` when the
|
|
59
|
+
* error does not already carry one.
|
|
60
|
+
*/
|
|
61
|
+
export declare function attachCause(error: unknown, cause: unknown): void;
|
|
62
|
+
//# sourceMappingURL=propertyTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propertyTransaction.d.ts","sourceRoot":"","sources":["../../../src/kurot/runtime/propertyTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1D,OAAO,KAAK,EACX,uBAAuB,EACvB,sBAAsB,EACtB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,SAAS,qBAAqB,EAAE,EACzC,OAAO,EAAE,sBAAsB,GAC7B,qBAAqB,EAAE,CAgCzB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,SAAS,qBAAqB,EAAE,GACvC,IAAI,CAyBN;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAIhE"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { applyBuiltInProperty } from './builtins/applyBuiltInProperties.js';
|
|
2
|
+
import { KurotUIRuntimeError } from './KurotUIRuntimeError.js';
|
|
3
|
+
import { resolvePropertyValue } from './resolvePropertyValue.js';
|
|
4
|
+
/**
|
|
5
|
+
* Applies updates in order and returns the captured pre-assignment backups.
|
|
6
|
+
* Each target property is captured exactly once through its owning layer —
|
|
7
|
+
* builtin properties are captured reflectively, while properties consumed by
|
|
8
|
+
* the component adapter are captured through `captureProperty` before the
|
|
9
|
+
* adapter is invoked. If any assignment fails, every captured property is
|
|
10
|
+
* restored in reverse order by its owning layer, and the original failure is
|
|
11
|
+
* rethrown with a failed restore chained onto it as `cause`.
|
|
12
|
+
*/
|
|
13
|
+
export function applyPropertyUpdates(updates, context) {
|
|
14
|
+
const backups = [];
|
|
15
|
+
const captured = new Map();
|
|
16
|
+
try {
|
|
17
|
+
for (const update of updates) {
|
|
18
|
+
let byProperty = captured.get(update.target);
|
|
19
|
+
if (byProperty === undefined) {
|
|
20
|
+
byProperty = new Map();
|
|
21
|
+
captured.set(update.target, byProperty);
|
|
22
|
+
}
|
|
23
|
+
const previous = byProperty.get(update.property);
|
|
24
|
+
if (previous !== undefined) {
|
|
25
|
+
// Repeat assignment of an already-captured property: reuse its
|
|
26
|
+
// recorded owning layer instead of capturing again.
|
|
27
|
+
applyThroughOwner(update, previous, context);
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
captureAndApply(update, byProperty, backups, context);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
let restoreError;
|
|
35
|
+
try {
|
|
36
|
+
restorePropertyBackups(backups);
|
|
37
|
+
}
|
|
38
|
+
catch (secondary) {
|
|
39
|
+
restoreError = secondary;
|
|
40
|
+
}
|
|
41
|
+
if (restoreError !== undefined) {
|
|
42
|
+
attachCause(error, restoreError);
|
|
43
|
+
}
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
return backups;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Restores captured values in reverse assignment order through each owning
|
|
50
|
+
* layer. Throws the first restore failure after attempting every remaining
|
|
51
|
+
* restore.
|
|
52
|
+
*/
|
|
53
|
+
export function restorePropertyBackups(backups) {
|
|
54
|
+
let failure;
|
|
55
|
+
for (let index = backups.length - 1; index >= 0; index--) {
|
|
56
|
+
const backup = backups[index];
|
|
57
|
+
if (backup === undefined) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
if (backup.adapter?.restoreProperty !== undefined) {
|
|
62
|
+
backup.adapter.restoreProperty(backup.target, backup.property, backup.value, backup.path);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
Reflect.set(backup.target, backup.property, backup.value);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
failure ??= error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (failure !== undefined) {
|
|
73
|
+
throw failure;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Chains a secondary failure onto an existing error as its `cause` when the
|
|
78
|
+
* error does not already carry one.
|
|
79
|
+
*/
|
|
80
|
+
export function attachCause(error, cause) {
|
|
81
|
+
if (error instanceof Error && error.cause === undefined) {
|
|
82
|
+
error.cause = cause;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Captures and applies the first assignment of one property through the
|
|
87
|
+
* builtin-first routing, registering the backup before any assignment runs so
|
|
88
|
+
* that a throwing assignment still rolls back. Unregisters when the adapter
|
|
89
|
+
* does not consume the property and nothing was applied.
|
|
90
|
+
*/
|
|
91
|
+
function captureAndApply(update, byProperty, backups, context) {
|
|
92
|
+
const resolved = resolvePropertyValue(update.value, update.path, context);
|
|
93
|
+
// Builtin properties are reflective: register the capture before assigning
|
|
94
|
+
// so a throwing setter still rolls back, and unregister when the builtin
|
|
95
|
+
// layer does not own the property.
|
|
96
|
+
const reflective = {
|
|
97
|
+
adapter: undefined,
|
|
98
|
+
path: update.path,
|
|
99
|
+
property: update.property,
|
|
100
|
+
target: update.target,
|
|
101
|
+
value: Reflect.get(update.target, update.property),
|
|
102
|
+
};
|
|
103
|
+
byProperty.set(update.property, reflective);
|
|
104
|
+
backups.push(reflective);
|
|
105
|
+
if (applyBuiltInProperty(update.target, update.property, resolved, update.path)) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
byProperty.delete(update.property);
|
|
109
|
+
backups.pop();
|
|
110
|
+
const adapter = context.adapters[update.type];
|
|
111
|
+
if (adapter?.applyProperty !== undefined) {
|
|
112
|
+
// Adapter-owned property: capture through the adapter, register before
|
|
113
|
+
// applying, and unregister when the adapter does not consume it.
|
|
114
|
+
const owned = {
|
|
115
|
+
adapter,
|
|
116
|
+
path: update.path,
|
|
117
|
+
property: update.property,
|
|
118
|
+
target: update.target,
|
|
119
|
+
value: adapter.captureProperty !== undefined
|
|
120
|
+
? adapter.captureProperty(update.target, update.property, update.path)
|
|
121
|
+
: Reflect.get(update.target, update.property),
|
|
122
|
+
};
|
|
123
|
+
byProperty.set(update.property, owned);
|
|
124
|
+
backups.push(owned);
|
|
125
|
+
if (adapter.applyProperty(update.target, update.property, resolved, update.path)) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
byProperty.delete(update.property);
|
|
129
|
+
backups.pop();
|
|
130
|
+
}
|
|
131
|
+
throw unsupportedProperty(update);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Re-applies one update through the owning layer recorded on its backup.
|
|
135
|
+
*/
|
|
136
|
+
function applyThroughOwner(update, backup, context) {
|
|
137
|
+
const resolved = resolvePropertyValue(update.value, update.path, context);
|
|
138
|
+
if (backup.adapter?.applyProperty !== undefined) {
|
|
139
|
+
if (!backup.adapter.applyProperty(update.target, update.property, resolved, update.path)) {
|
|
140
|
+
throw unsupportedProperty(update);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else if (!applyBuiltInProperty(update.target, update.property, resolved, update.path)) {
|
|
144
|
+
throw unsupportedProperty(update);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function unsupportedProperty(update) {
|
|
148
|
+
return new KurotUIRuntimeError('invalid-property', `Runtime property "${update.property}" is not supported by ${update.type}.`, update.path);
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=propertyTransaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propertyTransaction.js","sourceRoot":"","sources":["../../../src/kurot/runtime/propertyTransaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createReusableComponentStateController.d.ts","sourceRoot":"","sources":["../../../../src/kurot/runtime/states/createReusableComponentStateController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createReusableComponentStateController.d.ts","sourceRoot":"","sources":["../../../../src/kurot/runtime/states/createReusableComponentStateController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,oBAAoB,CAAC;AAY9E,OAAO,KAAK,EACX,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,wBAAgB,sCAAsC,CACrD,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,sBAAsB,GAC7B,sBAAsB,CA6DxB"}
|