@kurot/ui-runtime 0.3.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/README.md +9 -1
- 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 +30 -8
- 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 +16 -1
- package/dist/kurot/runtime/types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { applyRuntimeProperty } from '../applyRuntimeProperty.js';
|
|
2
1
|
import { KurotUIRuntimeError } from '../KurotUIRuntimeError.js';
|
|
3
2
|
import { qualifyNodeId } from '../materializeNode.js';
|
|
3
|
+
import { applyPropertyUpdates, attachCause, restorePropertyBackups, } from '../propertyTransaction.js';
|
|
4
4
|
/**
|
|
5
5
|
* Creates a state controller over one fully initialized reusable instance.
|
|
6
6
|
*/
|
|
@@ -24,7 +24,7 @@ export function createReusableComponentStateController(contract, scope, contract
|
|
|
24
24
|
const previousDefinition = previousState
|
|
25
25
|
? contract.states[previousState]
|
|
26
26
|
: undefined;
|
|
27
|
-
|
|
27
|
+
restorePropertyBackups(backups);
|
|
28
28
|
backups = [];
|
|
29
29
|
currentState = undefined;
|
|
30
30
|
try {
|
|
@@ -33,8 +33,15 @@ export function createReusableComponentStateController(contract, scope, contract
|
|
|
33
33
|
}
|
|
34
34
|
catch (error) {
|
|
35
35
|
if (previousState && previousDefinition) {
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
try {
|
|
37
|
+
backups = applyStateOverrides(previousDefinition.overrides, scope, `${contractPath}.states.${previousState}`, context);
|
|
38
|
+
currentState = previousState;
|
|
39
|
+
}
|
|
40
|
+
catch (recoveryError) {
|
|
41
|
+
// Keep the original failure observable; the instance stays stateless.
|
|
42
|
+
attachCause(error, recoveryError);
|
|
43
|
+
backups = [];
|
|
44
|
+
}
|
|
38
45
|
}
|
|
39
46
|
throw error;
|
|
40
47
|
}
|
|
@@ -42,45 +49,29 @@ export function createReusableComponentStateController(contract, scope, contract
|
|
|
42
49
|
clearState() {
|
|
43
50
|
if (currentState === undefined)
|
|
44
51
|
return;
|
|
45
|
-
|
|
52
|
+
restorePropertyBackups(backups);
|
|
46
53
|
backups = [];
|
|
47
54
|
currentState = undefined;
|
|
48
55
|
},
|
|
49
56
|
};
|
|
50
57
|
}
|
|
51
58
|
function applyStateOverrides(overrides, scope, path, context) {
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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)
|
|
59
|
+
const updates = [];
|
|
60
|
+
for (let index = 0; index < overrides.length; index++) {
|
|
61
|
+
const override = overrides[index];
|
|
62
|
+
const identity = qualifyNodeId(scope, override.targetId);
|
|
63
|
+
const target = context.instances.get(identity);
|
|
64
|
+
const type = context.types.get(identity);
|
|
65
|
+
if (!target || !type)
|
|
82
66
|
continue;
|
|
83
|
-
|
|
67
|
+
updates.push({
|
|
68
|
+
path: `${path}.overrides[${index}].value`,
|
|
69
|
+
property: override.property,
|
|
70
|
+
target,
|
|
71
|
+
type,
|
|
72
|
+
value: override.value,
|
|
73
|
+
});
|
|
84
74
|
}
|
|
75
|
+
return applyPropertyUpdates(updates, context);
|
|
85
76
|
}
|
|
86
77
|
//# sourceMappingURL=createReusableComponentStateController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createReusableComponentStateController.js","sourceRoot":"","sources":["../../../../src/kurot/runtime/states/createReusableComponentStateController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createReusableComponentStateController.js","sourceRoot":"","sources":["../../../../src/kurot/runtime/states/createReusableComponentStateController.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,7 +52,7 @@ export class TransitionSetProperty {
|
|
|
52
52
|
const animation = new Animation(() => {
|
|
53
53
|
const elapsed = animation.currentValue * total;
|
|
54
54
|
const fraction = duration === 0
|
|
55
|
-
?
|
|
55
|
+
? elapsed >= delay ? 1 : 0
|
|
56
56
|
: Math.max(0, Math.min(1, (elapsed - delay) / duration));
|
|
57
57
|
const eased = ease(fraction, this._transition.easing ?? 'linear');
|
|
58
58
|
Reflect.set(target, this._name, from + (to - from) * eased);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransitionSetProperty.js","sourceRoot":"","sources":["../../../../src/kurot/runtime/transitions/TransitionSetProperty.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAChB,OAAO,CAAS;IAChB,KAAK,CAAS;IACd,MAAM,CAAU;IAChB,WAAW,CAAuB;IAC3C,UAAU,CAAa;IACvB,SAAS,CAAU;IACnB,QAAQ,GAAG,KAAK,CAAC;IAEzB,YACC,MAAc,EACd,IAAY,EACZ,KAAc,EACd,UAAgC;QAEhC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,KAAgB,EAAE,IAAU;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,OAAO;QACR,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM,CAAC,KAAgB,EAAE,IAAU;QACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO;QACR,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACvB,CAAC;IAEO,OAAO,CAAC,MAAc,EAAE,IAAY,EAAE,EAAU;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC3C,MAAM,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;QAC/B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACpC,OAAO;QACR,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,GAAS,EAAE;YAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC;YAC/C,MAAM,QAAQ,GAAG,QAAQ,KAAK,CAAC;gBAC9B,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"TransitionSetProperty.js","sourceRoot":"","sources":["../../../../src/kurot/runtime/transitions/TransitionSetProperty.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import type { UIAssetRegistry, UIComponentRegistry, UIPropertyValue, UIResourceD
|
|
|
3
3
|
/**
|
|
4
4
|
* Stable runtime materialization failure categories.
|
|
5
5
|
*/
|
|
6
|
-
export type KurotUIRuntimeErrorCode = 'component-construction-failed' | 'invalid-document' | 'invalid-data' | 'invalid-layout' | 'invalid-property' | 'invalid-rectangle' | 'unknown-state' | 'unsupported-appearance' | 'unsupported-children' | 'unsupported-component';
|
|
6
|
+
export type KurotUIRuntimeErrorCode = 'component-construction-failed' | 'invalid-adapter' | 'invalid-document' | 'invalid-data' | 'invalid-layout' | 'invalid-property' | 'invalid-rectangle' | 'unknown-state' | 'unsupported-appearance' | 'unsupported-children' | 'unsupported-component';
|
|
7
7
|
/**
|
|
8
8
|
* Runtime hooks for one project-defined component type.
|
|
9
9
|
*/
|
|
@@ -18,6 +18,21 @@ export interface KurotUIComponentAdapter {
|
|
|
18
18
|
* Return true when the property was consumed.
|
|
19
19
|
*/
|
|
20
20
|
readonly applyProperty?: (instance: DisplayObject, name: string, value: unknown, path: string) => boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Captures a candidate adapter-owned property before a transactional update
|
|
23
|
+
* invokes applyProperty. The hook must be side-effect-free and accept every
|
|
24
|
+
* non-builtin property name routed to this adapter; its captured value is
|
|
25
|
+
* discarded when applyProperty returns false. Used by both data bindings and
|
|
26
|
+
* reusable component states. Must be provided together with restoreProperty.
|
|
27
|
+
*/
|
|
28
|
+
readonly captureProperty?: (instance: DisplayObject, name: string, path: string) => unknown;
|
|
29
|
+
/**
|
|
30
|
+
* Restores a value previously captured by captureProperty, either when a
|
|
31
|
+
* later target in the same transaction fails or when the owning reusable
|
|
32
|
+
* component state is cleared or replaced. Must be provided together with
|
|
33
|
+
* captureProperty.
|
|
34
|
+
*/
|
|
35
|
+
readonly restoreProperty?: (instance: DisplayObject, name: string, value: unknown, path: string) => void;
|
|
21
36
|
/**
|
|
22
37
|
* Attaches one materialized child to a project-defined container.
|
|
23
38
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/kurot/runtime/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/kurot/runtime/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EACX,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAChC,+BAA+B,GAC/B,iBAAiB,GACjB,kBAAkB,GAClB,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,eAAe,GACf,wBAAwB,GACxB,sBAAsB,GACtB,uBAAuB,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,aAAa,CAAC;IAErC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CACxB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,KACR,OAAO,CAAC;IAEb;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAC1B,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,KACR,OAAO,CAAC;IAEb;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAC1B,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,KACR,IAAI,CAAC;IAEV;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CACtB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,KACR,IAAI,CAAC;CACV;AAED;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,CACrC,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,oBAAoB,KAC5B,OAAO,CAAC;AAEb;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAC7C,MAAM,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAC9C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAEnC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B;;OAEG;IACH,UAAU,IAAI,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAEnC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IAEpD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAE1D;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAE5D;;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,gBAAgB,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC7D;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;IAEvD;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAEvE;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IAErC;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAErE;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAE7D;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAE7C;;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,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAEzE;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,uBAAuB,CAAC;IAElD;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAE/D;;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.4.1",
|
|
4
4
|
"description": "Runtime materialization layer for validated Kurot UI documents",
|
|
5
5
|
"author": "Kelvin <kyia.x52@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,13 +30,13 @@
|
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"@kurot/core": "^1.0.15",
|
|
33
|
-
"@kurot/ui": "^1.1.
|
|
34
|
-
"@kurot/ui-document": "^0.
|
|
33
|
+
"@kurot/ui": "^1.1.8",
|
|
34
|
+
"@kurot/ui-document": "^0.5.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@kurot/core": "^1.0.15",
|
|
38
|
-
"@kurot/ui": "^1.1.
|
|
39
|
-
"@kurot/ui-document": "^0.
|
|
38
|
+
"@kurot/ui": "^1.1.8",
|
|
39
|
+
"@kurot/ui-document": "^0.5.0",
|
|
40
40
|
"@types/node": "^22.0.0",
|
|
41
41
|
"happy-dom": "^20.8.9",
|
|
42
42
|
"typescript": "^5.6.0",
|